home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-07-05 | 37.9 KB | 1,442 lines |
- Newsgroups: comp.sources.misc
- From: jrs@panix.com (Jon Saxton)
- Subject: v30i098: indent - C/C++ indent for UNIX, OS/2 and MSDOS, Part04/04
- Message-ID: <1992Jul5.190413.26935@sparky.imd.sterling.com>
- X-Md4-Signature: b029669a6e1260b2cf8c0849ad264dc1
- Date: Sun, 5 Jul 1992 19:04:13 GMT
- Approved: kent@sparky.imd.sterling.com
-
- Submitted-by: jrs@panix.com (Jon Saxton)
- Posting-number: Volume 30, Issue 98
- Archive-name: indent/part04
- Environment: UNIX, OS/2, MSDOS
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # Contents: Makefile.1x Makefile.20 Makefile.bsd args.c indent.1
- # indent.pro proto.h typedefs.os2
- # Wrapped by kent@sparky on Tue Jun 30 00:01:42 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 4 (of 4)."'
- if test -f 'Makefile.1x' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile.1x'\"
- else
- echo shar: Extracting \"'Makefile.1x'\" \(1430 characters\)
- sed "s/^X//" >'Makefile.1x' <<'END_OF_FILE'
- X# Copyright (c) 1987 Regents of the University of California.
- X# All rights reserved.
- X#
- X# Redistribution and use in source and binary forms are permitted
- X# provided that the above copyright notice and this paragraph are
- X# duplicated in all such forms and that any documentation,
- X# advertising materials, and other materials related to such
- X# distribution and use acknowledge that the software was developed
- X# by the University of California, Berkeley. The name of the
- X# University may not be used to endorse or promote products derived
- X# from this software without specific prior written permission.
- X# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- X# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X#
- X# @(#)Makefile 5.9 (Berkeley) 88/09/15
- X#
- X#
- X# Makefile for OS/2 1.x by Jon Saxton, February 1992
- X
- X
- XCFLAGS= -FPi -G2 -W3 -Zp
- XCC= cl -c
- XLN= cl -Lp
- XSRCS= indent.c io.c lexi.c parse.c comment.c args.c
- XH= codes.h globals.h proto.h
- XOBJS= indent.obj io.obj lexi.obj parse.obj comment.obj args.obj
- X
- X.c.obj:
- X $(CC) $(CFLAGS) $*.c
- X
- Xall: indent.exe
- X
- Xindent.exe: $(OBJS)
- X $(LN) $(OBJS) indent.def
- X# $(LN) $(OBJS), $@, nul,,indent.def
- X bind $@ /names DOSQFSATTACH
- X
- Xindent.obj: indent.c $H
- X
- Xio.obj: io.c globals.h proto.h
- X
- Xlexi.obj: lexi.c $H
- X
- Xparse.obj: parse.c $H
- X
- Xcomment.obj: comment.c globals.h proto.h
- X
- Xargs.obj: args.c globals.h proto.h
- END_OF_FILE
- if test 1430 -ne `wc -c <'Makefile.1x'`; then
- echo shar: \"'Makefile.1x'\" unpacked with wrong size!
- fi
- # end of 'Makefile.1x'
- fi
- if test -f 'Makefile.20' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile.20'\"
- else
- echo shar: Extracting \"'Makefile.20'\" \(1402 characters\)
- sed "s/^X//" >'Makefile.20' <<'END_OF_FILE'
- X# Copyright (c) 1987 Regents of the University of California.
- X# All rights reserved.
- X#
- X# Redistribution and use in source and binary forms are permitted
- X# provided that the above copyright notice and this paragraph are
- X# duplicated in all such forms and that any documentation,
- X# advertising materials, and other materials related to such
- X# distribution and use acknowledge that the software was developed
- X# by the University of California, Berkeley. The name of the
- X# University may not be used to endorse or promote products derived
- X# from this software without specific prior written permission.
- X# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- X# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X#
- X# @(#)Makefile 5.9 (Berkeley) 88/09/15
- X#
- X#
- X# Makefile for OS/2 2.0 by Jon Saxton, February 1992
- X# Amended for C Set/2 by Jon Saxton, April 1992
- X
- XCFLAGS= -c -G3 -W3 -Sm -Q -O
- XCC= icc
- XSRCS= indent.c io.c lexi.c parse.c comment.c args.c
- XH= codes.h globals.h proto.h
- XOBJS= indent.obj io.obj lexi.obj parse.obj comment.obj args.obj
- X
- X.c.obj:
- X $(CC) $(CFLAGS) $*.c
- X
- Xall: indent.exe
- X
- Xindent.exe: $(OBJS)
- X $(CC) $(OBJS) indent.def
- X
- Xindent.obj: indent.c $H
- X
- Xio.obj: io.c globals.h proto.h
- X
- Xlexi.obj: lexi.c $H
- X
- Xparse.obj: parse.c $H
- X
- Xcomment.obj: comment.c globals.h proto.h
- X
- Xargs.obj: args.c globals.h proto.h
- END_OF_FILE
- if test 1402 -ne `wc -c <'Makefile.20'`; then
- echo shar: \"'Makefile.20'\" unpacked with wrong size!
- fi
- # end of 'Makefile.20'
- fi
- if test -f 'Makefile.bsd' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile.bsd'\"
- else
- echo shar: Extracting \"'Makefile.bsd'\" \(1429 characters\)
- sed "s/^X//" >'Makefile.bsd' <<'END_OF_FILE'
- X# Copyright (c) 1987 Regents of the University of California.
- X# All rights reserved.
- X#
- X# Redistribution and use in source and binary forms are permitted
- X# provided that the above copyright notice and this paragraph are
- X# duplicated in all such forms and that any documentation,
- X# advertising materials, and other materials related to such
- X# distribution and use acknowledge that the software was developed
- X# by the University of California, Berkeley. The name of the
- X# University may not be used to endorse or promote products derived
- X# from this software without specific prior written permission.
- X# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- X# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X#
- X# @(#)Makefile 5.9 (Berkeley) 88/09/15
- X#
- XCFLAGS= -O -DBSD #-DMAXPATHLEN=256
- XLIBC= /lib/libc.a
- XSRCS= indent.c io.c lexi.c parse.c comment.c args.c
- XOBJS= indent.o io.o lexi.o parse.o comment.o args.o
- XMAN= indent.0
- X
- Xall: indent
- X
- Xindent: ${OBJS} ${LIBC}
- X ${CC} -o $@ ${CFLAGS} ${OBJS}
- X
- Xclean:
- X rm -f ${OBJS} core indent
- X
- Xcleandir: clean
- X rm -f ${MAN} tags .depend
- X
- Xdepend: ${SRCS}
- X mkdep ${CFLAGS} ${SRCS}
- X
- Xinstall: ${MAN}
- X install -s -o bin -g bin -m 755 indent ${DESTDIR}/usr/ucb/indent
- X install -c -o bin -g bin -m 444 indent.0 ${DESTDIR}/usr/man/cat1/indent.0
- X
- Xlint: ${SRCS}
- X lint ${CFLAGS} ${SRCS}
- X
- Xtags: ${SRCS}
- X ctags ${SRCS}
- END_OF_FILE
- if test 1429 -ne `wc -c <'Makefile.bsd'`; then
- echo shar: \"'Makefile.bsd'\" unpacked with wrong size!
- fi
- # end of 'Makefile.bsd'
- fi
- if test -f 'args.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'args.c'\"
- else
- echo shar: Extracting \"'args.c'\" \(11649 characters\)
- sed "s/^X//" >'args.c' <<'END_OF_FILE'
- X/*
- X * Copyright (c) 1985 Sun Microsystems, Inc.
- X * Copyright (c) 1980 The Regents of the University of California.
- X * Copyright (c) 1976 Board of Trustees of the University of Illinois.
- X * All rights reserved.
- X *
- X * Redistribution and use in source and binary forms are permitted
- X * provided that the above copyright notice and this paragraph are
- X * duplicated in all such forms and that any documentation,
- X * advertising materials, and other materials related to such
- X * distribution and use acknowledge that the software was developed
- X * by the University of California, Berkeley, the University of Illinois,
- X * Urbana, and Sun Microsystems, Inc. The name of either University
- X * or Sun Microsystems may not be used to endorse or promote products
- X * derived from this software without specific prior written permission.
- X * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X */
- X
- X#ifndef lint
- X# ifndef OS2
- X static char sccsid[] = "@(#)args.c 6.0 (Berkeley) 92/06/15";
- X# endif
- X#endif /* not lint */
- X
- X/*
- X * Argument scanning and profile reading code. Default parameters are set
- X * here as well.
- X */
- X
- X#include "globals.h"
- X#include <sys/types.h>
- X#include <ctype.h>
- X
- X#ifdef OS2
- X#include <stdlib.h>
- X#include <string.h>
- X#include <malloc.h>
- X#define INCL_NOPM
- X#define INCL_NOPMAPI
- X#define INCL_BASE
- X#define INCL_DOSFILEMGR
- X#include <os2.h>
- X#define MAXPATHLEN CCHMAXPATH
- X#define index(a,b) strchr(a,b)
- X#else
- Xchar *getenv(), *index();
- X
- X#endif
- X
- X#ifdef ANSIC
- Xstatic void scan_profile(FILE *);
- Xstatic FILE *fopenenv(char *, char *, char *);
- X
- X#else
- Xstatic FILE *fopenenv();
- X
- X#endif
- X
- X/* profile types */
- X#define PRO_SPECIAL 1 /* special case */
- X#define PRO_BOOL 2 /* boolean */
- X#define PRO_INT 3 /* integer */
- X#define PRO_FONT 4 /* troff font */
- X
- X/* profile specials for booleans */
- X#define ON 1 /* turn it on */
- X#define OFF 0 /* turn it off */
- X
- X/* profile specials for specials */
- X#define IGN 1 /* ignore it */
- X#define CLI 2 /* case label indent (float) */
- X#define STDIN 3 /* use stdin */
- X#define KEY 4 /* type (keyword) */
- X#define CCI 5 /* case code indent (float) */
- X
- X/*
- X * N.B.: because of the way the table here is scanned, options whose names are
- X * substrings of other options must occur later; that is, with -lp vs -l, -lp
- X * must be first. Also, while (most) booleans occur more than once, the last
- X * default value is the one actually assigned.
- X */
- Xstruct pro
- X{
- X char *p_name; /* name, eg -bl, -cli */
- X int p_type; /* type (int, bool, special) */
- X int p_default; /* the default value (if int) */
- X int p_special; /* depends on type */
- X int *p_obj; /* the associated variable */
- X} pro[] =
- X
- X{
- X
- X "T", PRO_SPECIAL, 0, KEY, 0,
- X "bacc", PRO_BOOL, false, ON, &blanklines_around_conditional_compilation,
- X "badp", PRO_BOOL, false, ON, &blanklines_after_declarations_at_proctop,
- X "bad", PRO_BOOL, false, ON, &blanklines_after_declarations,
- X "bap", PRO_BOOL, false, ON, &blanklines_after_procs,
- X "bbb", PRO_BOOL, false, ON, &blanklines_before_blockcomments,
- X "bc", PRO_BOOL, true, OFF, &ps.leave_comma,
- X "bl", PRO_BOOL, false, OFF, &btype_2,
- X "brr", PRO_BOOL, false, ON, &btype_3,
- X "br", PRO_BOOL, true, ON, &btype_2,
- X "bs", PRO_BOOL, false, ON, &Bill_Shannon,
- X "cdb", PRO_BOOL, true, ON, &comment_delimiter_on_blankline,
- X "cd", PRO_INT, 0, 0, &ps.decl_com_ind,
- X "ce", PRO_BOOL, true, ON, &cuddle_else,
- X "ci", PRO_INT, 0, 0, &continuation_indent,
- X "cli", PRO_SPECIAL, 0, CLI, 0,
- X "cci", PRO_SPECIAL, 0, CCI, 0,
- X "c", PRO_INT, 33, 0, &ps.com_ind,
- X "di", PRO_INT, 16, 0, &ps.decl_indent,
- X "dj", PRO_BOOL, false, ON, &ps.ljust_decl,
- X "d", PRO_INT, 0, 0, &ps.unindent_displace,
- X "eei", PRO_BOOL, false, ON, &extra_expression_indent,
- X "ei", PRO_BOOL, true, ON, &ps.else_if,
- X "fbc", PRO_FONT, 0, 0, (int *) &blkcomf,
- X "fbx", PRO_FONT, 0, 0, (int *) &boxcomf,
- X "fb", PRO_FONT, 0, 0, (int *) &bodyf,
- X "fc1", PRO_BOOL, true, ON, &format_col1_comments,
- X "fc", PRO_FONT, 0, 0, (int *) &scomf,
- X "fk", PRO_FONT, 0, 0, (int *) &keywordf,
- X "fs", PRO_FONT, 0, 0, (int *) &stringf,
- X "ip", PRO_BOOL, true, ON, &ps.indent_parameters,
- X "i", PRO_INT, 8, 0, &ps.ind_size,
- X "lc", PRO_INT, 0, 0, &block_comment_max_col,
- X "lp", PRO_BOOL, true, ON, &lineup_to_parens,
- X "l", PRO_INT, 78, 0, &max_col,
- X "nbacc", PRO_BOOL, false, OFF, &blanklines_around_conditional_compilation,
- X "nbadp", PRO_BOOL, false, OFF, &blanklines_after_declarations_at_proctop,
- X "nbad", PRO_BOOL, false, OFF, &blanklines_after_declarations,
- X "nbap", PRO_BOOL, false, OFF, &blanklines_after_procs,
- X "nbbb", PRO_BOOL, false, OFF, &blanklines_before_blockcomments,
- X "nbc", PRO_BOOL, true, ON, &ps.leave_comma,
- X "nbs", PRO_BOOL, false, OFF, &Bill_Shannon,
- X "ncdb", PRO_BOOL, true, OFF, &comment_delimiter_on_blankline,
- X "nce", PRO_BOOL, true, OFF, &cuddle_else,
- X "ndj", PRO_BOOL, false, OFF, &ps.ljust_decl,
- X "neei", PRO_BOOL, false, OFF, &extra_expression_indent,
- X "nei", PRO_BOOL, true, OFF, &ps.else_if,
- X "nfc1", PRO_BOOL, true, OFF, &format_col1_comments,
- X "nip", PRO_BOOL, true, OFF, &ps.indent_parameters,
- X "nlp", PRO_BOOL, true, OFF, &lineup_to_parens,
- X "npcs", PRO_BOOL, false, OFF, &proc_calls_space,
- X "npro", PRO_SPECIAL, 0, IGN, 0,
- X "nprs", PRO_BOOL, false, OFF, &parens_space,
- X "npsl", PRO_BOOL, true, OFF, &procnames_start_line,
- X "nps", PRO_BOOL, false, OFF, &pointer_as_binop,
- X "nsc", PRO_BOOL, true, OFF, &star_comment_cont,
- X "nsob", PRO_BOOL, false, OFF, &swallow_optional_blanklines,
- X "nv", PRO_BOOL, false, OFF, &verbose,
- X "pcs", PRO_BOOL, false, ON, &proc_calls_space,
- X "prs", PRO_BOOL, false, ON, &parens_space,
- X "psl", PRO_BOOL, true, ON, &procnames_start_line,
- X "ps", PRO_BOOL, false, ON, &pointer_as_binop,
- X "sc", PRO_BOOL, true, ON, &star_comment_cont,
- X "sob", PRO_BOOL, false, ON, &swallow_optional_blanklines,
- X "st", PRO_SPECIAL, 0, STDIN, 0,
- X "tabs", PRO_INT, 8, 0, &tabsize,
- X "troff", PRO_BOOL, false, ON, &troff,
- X "v", PRO_BOOL, false, ON, &verbose,
- X "+", PRO_BOOL, false, ON, &cplus,
- X /* whew! */
- X 0, 0, 0, 0, 0
- X};
- X
- X/*
- X * set_profile reads $HOME/.indent.pro and ./.indent.pro and handles arguments
- X * given in these files.
- X */
- X#ifdef ANSIC
- Xvoid set_profile(void)
- X#else
- Xset_profile()
- X#endif
- X{
- X FILE *f;
- X
- X#ifdef OS2
- X# ifdef __32BIT__
- X# define MODE_PROTECTED 1
- X# endif
- X char MachineMode = MODE_PROTECTED;
- X static char prof[] = "indent.pro";
- X
- X#else
- X static char prof[] = ".indent.pro";
- X
- X#endif
- X
- X f = fopenenv(prof, "r", "HOME");
- X
- X#ifdef OS2
- X# ifndef __32BIT__ /* Must be MSDOS or OS/2 1.x code */
- X DosGetMachineMode(&MachineMode);
- X# endif
- X if (MachineMode == MODE_PROTECTED)
- X if (f == NULL)
- X f = fopenenv(prof, "r", "DPATH");
- X#endif
- X if (f == NULL)
- X f = fopenenv(prof, "r", "PATH");
- X
- X if (f != NULL)
- X {
- X scan_profile(f);
- X (void) fclose(f);
- X }
- X
- X if ((f = fopen(prof, "r")) != NULL)
- X {
- X scan_profile(f);
- X (void) fclose(f);
- X }
- X}
- X
- X#ifdef ANSIC
- Xstatic void scan_profile(FILE *f)
- X#else
- Xscan_profile(f)
- X FILE *f;
- X
- X#endif
- X{
- X register int i;
- X register char *p;
- X char buf[BUFSIZ];
- X
- X while (1)
- X {
- X for (p = buf; (i = getc(f)) != EOF && (*p = (char) i) > ' '; ++p);
- X if (p != buf)
- X {
- X *p++ = 0;
- X if (verbose)
- X printf("profile: %s\n", buf);
- X set_option(buf);
- X }
- X else if (i == EOF)
- X return;
- X }
- X}
- X
- Xstatic char *param_start;
- X
- X#ifdef ANSIC
- Xstatic int eqin(register char *s1, register char *s2)
- X#else
- Xeqin(s1, s2)
- X register char *s1;
- X register char *s2;
- X
- X#endif
- X{
- X while (*s1)
- X {
- X if (*s1++ != *s2++)
- X return (false);
- X }
- X param_start = s2;
- X return (true);
- X}
- X
- X/*
- X * Set the defaults.
- X */
- X#ifdef ANSIC
- Xvoid set_defaults(void)
- X#else
- Xset_defaults()
- X#endif
- X{
- X register struct pro *p;
- X
- X /*
- X Because ps.case_indent and ps.case_code_indent are floats, we can't
- X initialize them from the table:
- X */
- X ps.case_indent = (float) 0; /* -cli0.0 */
- X ps.case_code_indent = (float) 1; /* -cci1.0 */
- X for (p = pro; p->p_name != NULL; p++)
- X if (p->p_type != PRO_SPECIAL && p->p_type != PRO_FONT)
- X *p->p_obj = p->p_default;
- X}
- X
- X#ifdef ANSIC
- Xvoid set_option(register char *arg)
- X#else
- Xset_option(arg)
- X register char *arg;
- X
- X#endif
- X{
- X register struct pro *p;
- X
- X#ifndef ANSIC
- X extern double atof();
- X
- X#endif
- X arg++; /* ignore leading "-" */
- X for (p = pro; p->p_name; p++)
- X if (*p->p_name == *arg && eqin(p->p_name, arg))
- X goto found;
- X fprintf(stderr, "indent: unknown parameter \"%s\"\n", arg - 1);
- X exit(1);
- Xfound:
- X switch (p->p_type)
- X {
- X
- X case PRO_SPECIAL:
- X switch (p->p_special)
- X {
- X
- X case IGN:
- X break;
- X
- X case CLI:
- X if (*param_start == 0)
- X goto need_param;
- X ps.case_indent = (float) atof(param_start);
- X break;
- X
- X case CCI:
- X if (*param_start == 0)
- X goto need_param;
- X ps.case_code_indent = (float) atof(param_start);
- X break;
- X
- X case STDIN:
- X if (input == NULL)
- X input = stdin;
- X if (output == NULL)
- X output = stdout;
- X break;
- X
- X case KEY:
- X if (*param_start == 0)
- X goto need_param;
- X {
- X register char *str = (char *) malloc(strlen(param_start) + 1);
- X
- X strcpy(str, param_start);
- X addkey(str, 4);
- X }
- X break;
- X
- X default:
- X fprintf(stderr,
- X "indent: set_option: internal error: p_special %d\n",
- X p->p_special);
- X exit(1);
- X }
- X break;
- X
- X case PRO_BOOL:
- X if (p->p_special == OFF)
- X *p->p_obj = false;
- X else
- X *p->p_obj = true;
- X break;
- X
- X case PRO_INT:
- X if (*param_start == 0)
- X {
- X need_param:
- X fprintf(stderr, "indent: \"%s\" requires a parameter\n",
- X arg - 1);
- X exit(1);
- X }
- X *p->p_obj = atoi(param_start);
- X break;
- X
- X case PRO_FONT:
- X parsefont((struct fstate *) p->p_obj, param_start);
- X break;
- X
- X default:
- X fprintf(stderr, "indent: set_option: internal error: p_type %d\n",
- X p->p_type);
- X exit(1);
- X }
- X}
- X
- X/*------------------------------------------------------------------------------
- X
- X FILE *fopenenv(char *name, char *mode, char *env)
- X
- X Similar to fopen() but searches the directories listed in environment
- X item 'env' for the file.
- X
- X Written 14 April 1992 by Jon Saxton who is fairly sure that a function
- X like this already exists somewhere but who couldn't find one.
- X
- X------------------------------------------------------------------------------*/
- X
- X#ifdef ANSIC
- XFILE *fopenenv(char *name, char *mode, char *env)
- X#else
- XFILE *fopenenv(name, mode, env)
- X char *name, *mode, *env;
- X
- X#endif
- X{
- X char FullName[MAXPATHLEN];
- X
- X _searchenv(name, env, FullName);
- X if (strlen(FullName) == 0)
- X return NULL;
- X return fopen(FullName, mode);
- X}
- END_OF_FILE
- if test 11649 -ne `wc -c <'args.c'`; then
- echo shar: \"'args.c'\" unpacked with wrong size!
- fi
- # end of 'args.c'
- fi
- if test -f 'indent.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'indent.1'\"
- else
- echo shar: Extracting \"'indent.1'\" \(13574 characters\)
- sed "s/^X//" >'indent.1' <<'END_OF_FILE'
- X.\" Copyright 1989 Object Design, Inc.
- X.\" Copyright (c) 1985 Sun Microsystems, Inc.
- X.\" Copyright (c) 1980 The Regents of the University of California.
- X.\" Copyright (c) 1976 Board of Trustees of the University of Illinois.
- X.\" All rights reserved.
- X.\" Redistribution and use in source and binary forms are permitted
- X.\" provided that the above copyright notice and this paragraph are
- X.\" duplicated in all such forms and that any documentation,
- X.\" advertising materials, and other materials related to such
- X.\" distribution and use acknowledge that the software was developed
- X.\" by the University of California, Berkeley, the University of Illinois,
- X.\" Urbana, and Sun Microsystems, Inc. The name of either University
- X.\" or Sun Microsystems may not be used to endorse or promote products
- X.\" derived from this software without specific prior written permission.
- X.\" THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- X.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- X.\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- X.\"
- X.\" @(#)indent.1 6.5 (Berkeley) 88/09/15
- X.\"
- X.TH INDENT 1 "July 14, 1989
- X.SH NAME
- Xindent \- indent and format C program source
- X.SH SYNOPSIS
- X.in +\w'\fBindent \fR'u
- X.ti -\w'\fBindent \fR'u
- X\fBindent \fR [ \fIinput-file\fR [ \fIoutput-file\fR ] ]
- X[\ \fB\-bad\fR\ |\ \fB\-nbad\fR\ ]
- X[\ \fB\-bap\fR\ |\ \fB\-nbap\fR\ ]
- X[\ \fB\-bbb\fR\ |\ \fB\-nbbb\fR\ ]
- X[\ \fB\-bc\fR\ |\ \fB\-nbc\fR\ ]
- X[\ \fB\-bl\fR\ ]
- X[\ \fB\-br\fR\ ]
- X[\ \fB\-brr\fR\ ]
- X[\ \fB\-c\fIn\fR\ ]
- X[\ \fB\-cd\fIn\fR\ ]
- X[\ \fB\-cdb\fR\ |\ \fB\-ncdb\fR\ ]
- X[\ \fB\-ce\fR\ |\ \fB\-nce\fR\ ]
- X[\ \fB\-ci\fIn\fR\ ]
- X[\ \fB\-cli\fIn\fR\ ]
- X[\ \fB\-cci\fIn\fR\ ]
- X[\ \fB\-d\fIn\fR\ ]
- X[\ \fB\-di\fIn\fR\ ]
- X[\ \fB\-fc1\fR\ |\ \fB\-nfc1\fR\ ]
- X[\ \fB\-i\fIn\fR\ ]
- X[\ \fB\-ip\fR\ |\ \fB\-nip\fR\ ]
- X[\ \fB\-l\fIn\fR\ ]
- X[\ \fB\-lc\fIn\fR\ ]
- X[\ \fB\-lp\fR\ |\ \fB\-nlp\fR\ ]
- X[\ \fB\-pcs\fR\ |\ \fB\-npcs\fR\ ]
- X[\ \fB\-npro\fR\ ]
- X[\ \fB\-prs\fR\ |\ \fB\-nprs\fR\ ]
- X[\ \fB\-psl\fR\ |\ \fB\-npsl\fR\ ]
- X[\ \fB\-sc\fR\ |\ \fB\-nsc\fR\ ]
- X[\ \fB\-sob\fR\ |\ \fB\-nsob\fR\ ]
- X[\ \fB\-st\fR\ ]
- X[\ \fB\-tabs\fIn\fR\ ]
- X[\ \fB\-troff\fR\ ]
- X[\ \fB\-v\fR\ |\ \fB\-nv\fR\ ]
- X[\ \fB-+\fR ]
- X
- X.SH DESCRIPTION
- X.I Indent
- Xis a \fBC\fR program formatter. It reformats the \fBC\fR program in the
- X\fIinput-file\fR according to the switches. The switches which can be
- Xspecified are described below. They may appear before or after the file
- Xnames.
- X.LP
- X\fBNOTE\fP: If you only specify an \fIinput-file\fR, the formatting is
- Xdone 'in-place', that is, the formatted file is written back into
- X.I input-file
- Xand a backup copy of
- X.I input-file
- Xis written in the current directory. If
- X.I input-file
- Xis named '/blah/blah/file', the backup file is named
- X.RI file .BAK.
- X.LP
- XIf
- X.I output-file
- Xis specified,
- X.I indent
- Xchecks to make sure it is different from
- X.IR input-file .
- X.SH OPTIONS
- X.LP
- XThe options listed below control the formatting style imposed by
- X.IR indent .
- X.TP 15
- X.BR \-bap , \-nbap
- XIf
- X.B \-bap
- Xis specified, a blank line is forced after every procedure body. Default:
- X.B \-nbap.
- X.TP 15
- X.BR \-bad , \-nbad
- XIf
- X.B \-bad
- Xis specified, a blank line is forced after every block of
- Xdeclarations. Default:
- X.B \-nbad.
- X.TP 15
- X.BR \-bbb , \-nbbb
- XIf
- X.B \-bbb
- Xis specified, a blank line is forced before every block comment. Default:
- X.B \-nbbb.
- X.TP 15
- X.BR \-bc , \-nbc
- XIf
- X.B \-bc
- Xis specified, then a newline is forced after each comma in a declaration.
- X.B \-nbc
- Xturns off this option. The default is
- X.BR \-bc .
- X.TP 15
- X.BR \-br , \-bl , \-brr
- XSpecifying
- X.B \-bl
- Xlines up compound statements like this:
- X.ne 4
- X.nf
- X.ft L
- X if (...)
- X {
- X code
- X }
- X.ft R
- X.fi
- XSpecifying
- X.B \-br
- X(the default) makes them look like this:
- X.ne 3
- X.nf
- X.ft L
- X if (...) {
- X code
- X }
- X.ft R
- X.fi
- XAnd specifying
- X.B \-brr
- Xmakes them look like this:
- X.ne 3
- X.nf
- X.ft L
- X if (...)
- X {
- X code
- X }
- X.ft R
- X.fi
- X.LP
- X.TP 15
- X.BI \-c n
- XThe column in which comments on code start. The default is 33.
- X.TP 15
- X.BI \-cd n
- XThe column in which comments on declarations start. The default
- Xis for these comments to start in the same column as those on code.
- X.TP 15
- X.BI \-cdb , \-ncdb
- XEnables (disables) the placement of comment delimiters on blank lines. With
- Xthis option enabled, comments look like this:
- X.nf
- X.ft L
- X.ne 3
- X /*
- X * this is a comment
- X */
- X.ft R
- X.fi
- XRather than like this:
- X.nf
- X.ft L
- X /* this is a comment */
- X.ft R
- X.fi
- XThis only affects block comments, not comments to the right of code. The default is
- X.B \-cdb .
- X.TP 15
- X.BI \-ce , \-nce
- XEnables (disables) forcing 'else's to cuddle up to the immediatly preceeding
- X'}'. The default is
- X.B \-ce .
- X.TP 15
- X.BI \-ci n
- XSets the continuation indent to be \fIn\fR. Continuation
- Xlines will be indented that far from the beginning of the first line of the
- Xstatement. Parenthesized expressions have extra indentation added to
- Xindicate the nesting, unless \fB\-lp\fR is in effect.
- X\fB\-ci\fR defaults to the same value as \fB\-i\fR.
- X.TP 15
- X.BI \-cli n
- XCauses case labels to be indented
- X.I n
- Xtab stops to the right of the containing \fBswitch\fR statement.
- X\fB-cli0.5\fR causes case labels to be indented half a tab stop. The
- Xdefault is
- X.B \-cli0 .
- X.TP 15
- X.BI \-cci n
- XCauses case code to be indented
- X.I n
- Xtab stops to the right of the corresponding case label.
- X\fB-cci0.5\fR causes case code to be indented half a tab stop. The
- Xdefault is
- X.B \-cci1 .
- X.TP 15
- X.BI \-d n
- XControls the placement of comments which are not to the
- Xright of code. The default
- X.B \-d1
- Xmeans that such comments are placed one indentation level to the
- Xleft of code. Specifying
- X.B \-d0
- Xlines up these comments with the code. See the section on comment
- Xindentation below.
- X.TP 15
- X.BI \-di n
- XSpecifies the indentation, in character positions, from a declaration keyword
- Xto the following identifier. The default is
- X.B \-di16 .
- X.if 0 \{.TP 15
- X.BR \-dj , \-ndj
- X.B \-dj
- Xleft justifies declarations.
- X.B \-ndj
- Xindents declarations the same as code. The default is
- X.BR \-ndj .
- X.TP 15
- X.BI \-ei , \-nei
- XEnables (disables) special
- X.B else-if
- Xprocessing. If it's enabled,
- X.BR if "s"
- Xfollowing
- X.BR else "s"
- Xwill have the same indendation as the preceeding
- X.B if
- Xstatement.\}
- X.TP 15
- X.BI \-fc1 , \-nfc1
- XEnables (disables) the formatting of comments that start in column 1.
- XOften, comments whose leading '/' is in column 1 have been carefully
- Xhand formatted by the programmer. In such cases, \fB\-nfc1\fR should be
- Xused. The default is \fB\-fc1\fR.
- X.TP 15
- X.BI \-i n
- XThe number of spaces for one indentation level. The default is 4.
- X.TP 15
- X.BI \-ip , \-nip
- XEnables (disables) the indentation of parameter declarations from the left
- Xmargin. The default is
- X.B \-ip .
- X.TP 15
- X.BI \-l n
- XMaximum length of an output line. The default is 75.
- X.TP 15
- X.B \-npro
- XCauses the profile files, './.indent.pro' and '~/.indent.pro', to be ignored.
- X.TP 15
- X.BI \-lp , \-nlp
- XLines up code surrounded by parenthesis in continuation lines. If a line
- Xhas a left paren which is not closed on that line, then continuation lines
- Xwill be lined up to start at the character position just after the left
- Xparen. For example, here is how a piece of continued code looks with -nlp
- Xin effect:
- X.ne 2
- X.nf
- X.ft L
- X p1 = first_procedure(second_procedure(p2, p3),
- X third_procedure(p4, p5));
- X.ft R
- X.fi
- X.ne 5
- XWith \fB-lp\fR in effect (the default) the code looks somewhat clearer:
- X.nf
- X.ft L
- X p1 = first_procedure(second_procedure(p2, p3),
- X third_procedure(p4, p5));
- X.ft R
- X.fi
- X.ne 5
- XInserting a couple more newlines we get:
- X.nf
- X.ft L
- X p1 = first_procedure(second_procedure(p2,
- X p3),
- X third_procedure(p4,
- X p5));
- X.ft R
- X.fi
- X.TP 15
- X.B \-pcs , \-npcs
- XIf true (\fB-pcs\fR) all procedure calls will have a space inserted between
- Xthe name and the '('. The default is
- X.B \-npcs
- X.TP 15
- X.B \-prs , \-nprs
- XIf true (\fB-prs\fR) all parentheses will have a space inserted
- Xafter the '(' and before the ')'. The default is
- X.B \-nprs
- X.TP 15
- X.B \-psl , \-npsl
- XIf true (\fB-psl\fR) the names of procedures being defined are placed in
- Xcolumn 1 \- their types, if any, will be left on the previous lines. The
- Xdefault is
- X.B -psl
- X.TP 15
- X.BI \-sc , \-nsc
- XEnables (disables) the placement of asterisks ('*'s) at the left edge of all
- Xcomments.
- X.TP 15
- X.BR \-sob , \-nsob
- XIf
- X.B \-sob
- Xis specified, indent will swallow optional blank lines. You can use this to
- Xget rid of blank lines after declarations. Default:
- X.B \-nsob
- X.TP 15
- X.B \-st
- XCauses
- X.B indent
- Xto take its input from stdin, and put its output to stdout.
- X.TP 15
- X.BI \-T typename
- XAdds
- X.I typename
- Xto the list of type keywords. Names accumulate:
- X.B \-T
- Xcan be specified more than once. You need to specify all the typenames that
- Xappear in your program that are defined by \fBtypedef\fRs \- nothing will be
- Xharmed if you miss a few, but the program won't be formatted as nicely as
- Xit should. This sounds like a painful thing to have to do, but it's really
- Xa symptom of a problem in C: \fBtypedef\fR causes a syntactic change in the
- Xlanguage and \fIindent\fR can't find all \fBtypedef\fRs.
- X.TP 15
- X.BI \-tabs n
- XTells indent that tabs are assumed to be at every
- X.I n
- Xcolumns. The
- Xdefault is
- X.B \-tabs8.
- XIf
- X.I n
- Xis less than 3 then tabs will not be used at all in the output.
- X.TP 15
- X.B \-troff
- XCauses
- X.B indent
- Xto format the program for processing by troff. It will produce a fancy
- Xlisting in much the same spirit as
- X.BR vgrind.
- XIf the output file is not specified, the default is standard output,
- Xrather than formatting in place.
- X.TP 15
- X.BR \-v , \-nv
- X.B \-v
- Xturns on 'verbose' mode,
- X.B \-nv
- Xturns it off. When in verbose mode,
- X.I indent
- Xreports when it splits one line of input into two or more lines of output,
- Xand gives some size statistics at completion. The default is
- X.BR \-nv .
- X.TP 15
- X.B \-+
- Xturns on support for C++. In c++ mode, :: is permited in identifiers,
- XC++ keywords are supported, and class definition keywords
- X(public, private, etc.) are set in column 2.
- X.SH "FURTHER DESCRIPTION"
- X.LP
- XYou may set up your own 'profile' of defaults to
- X.I indent
- Xby creating a file called
- X.BI . indent . pro
- Xin either your login directory or the current directory and including
- Xwhatever switches you like. A '.indent.pro' in the current directory takes
- Xprecedence over the one in your login directory. If
- X.I indent
- Xis run and a profile file exists, then it is read to set up the program's
- Xdefaults. Switches on the command line, though, always override profile
- Xswitches. The switches should be separated by spaces, tabs or newlines.
- X.LP
- X.B Comments
- X.LP
- X.IR "'Box' comments" .
- X.I Indent
- Xassumes that any comment with a dash or star immediately after the start of
- Xcomment (that is, '/*\-' or '/**') is a comment surrounded by a box of stars.
- XEach line of such a comment is left unchanged, except that its indentation
- Xmay be adjusted to account for the change in indentation of the first line
- Xof the comment.
- X.LP
- X.IR "Straight text" .
- XAll other comments are treated as straight text.
- X.I Indent
- Xfits as many words (separated by blanks, tabs, or newlines) on a
- Xline as possible. Blank lines break paragraphs.
- X.LP
- X.B Comment indentation
- X.LP
- XIf a comment is on a line with code it is started in the 'comment column',
- Xwhich is set by the
- X.BI \-c n
- Xcommand line parameter. Otherwise, the comment is started at
- X.I n
- Xindentation levels less than where code is currently being placed, where
- X.I n
- Xis specified by the
- X.BI \-d n
- Xcommand line parameter. If the code on a line extends past the comment
- Xcolumn, the comment starts further to the right, and the right margin may be
- Xautomatically extended in extreme cases.
- X.LP
- X.B Special Comments
- X.LP
- X.I Indent
- Xproduces and interprets some special comments.
- XWhen indent cannot parse the source, it prints a message on standard error
- Xand inserts a comment into the output of the form
- X.nf
- X.ft L
- X /**INDENT** ErrorMessage */
- X.ft R
- X.fi
- X.LP
- X.I Indent
- Xinterprets several special comments as directives.
- XFirst, it makes no attempt to format lines containing the error comment
- Xdescribed above.
- X.LP
- XSecond, lines of the form:
- X.nf
- X.ft L
- X /* INDENT OFF */
- Xor
- X /* INDENT ON */
- X.ft R
- X.fi
- Xdisable and re-enable indent formatting.
- XAny amount of whitespace may replace the spaces shown in the examples.
- X.LP
- XThird,
- X.I indent
- Xallows formatting controls to be included in the source via comments of the form:
- X.nf
- X.ft L
- X /* INDENT: arg1 arg2 arg3 ... arg4 */
- X.ft R
- X.fi
- XThe arguments given are in the same syntax as the command line or profile file.
- XFor example:
- X.nf
- X.ft L
- X /* INDENT: -cli.25 -nfc1 */
- X.ft R
- X.fi
- X.LP
- X.B Preprocessor lines
- X.LP
- XIn general, \fIindent\fR leaves preprocessor lines alone. The only
- Xreformmatting that it will do is to straighten up trailing comments. It
- Xleaves imbedded comments alone. Conditional compilation
- X(\fB#ifdef...#endif\fR) is recognized and \fIindent\fR attempts to correctly
- Xcompensate for the syntactic peculiarites introduced.
- X.LP
- X.B C syntax
- X.LP
- X\fIIndent\fR understands a substantial amount about the syntax of C, but it
- Xhas a 'forgiving' parser. It attempts to cope with the usual sorts of
- Xincomplete and misformed syntax. In particular, the use of macros like:
- X.nf
- X.ft L
- X #define forever for(;;)
- X.ft R
- X.fi
- Xis handled properly.
- X.SH FILES
- X.DT
- X.br
- X\&./.indent.pro profile file
- X.br
- X.SH BUGS
- X.I Indent
- Xhas even more switches than \fIls\fR.
- X
- X.ne 5
- XA common mistake that often causes grief is typing:
- X.nf
- X.ft L
- X indent *.c
- X.ft R
- X.fi
- Xto the shell in an attempt to indent all the \fBC\fR programs in a directory.
- XThis is a really nasty thing to do. (Think about it.)
- END_OF_FILE
- if test 13574 -ne `wc -c <'indent.1'`; then
- echo shar: \"'indent.1'\" unpacked with wrong size!
- fi
- # end of 'indent.1'
- fi
- if test -f 'indent.pro' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'indent.pro'\"
- else
- echo shar: Extracting \"'indent.pro'\" \(123 characters\)
- sed "s/^X//" >'indent.pro' <<'END_OF_FILE'
- X-bad
- X-bap
- X-bl
- X-nce
- X-i4
- X-nfc1
- X-l80
- X-npsl
- X-lp
- X-di4
- X-d0
- X-nsc
- X-tabs4
- X-TFILE
- X-Tva_list
- X-Tsize_t
- X-Ttime_t
- X-Tclock_t
- X-Tjmp_buf
- X-v
- END_OF_FILE
- if test 123 -ne `wc -c <'indent.pro'`; then
- echo shar: \"'indent.pro'\" unpacked with wrong size!
- fi
- # end of 'indent.pro'
- fi
- if test -f 'proto.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'proto.h'\"
- else
- echo shar: Extracting \"'proto.h'\" \(752 characters\)
- sed "s/^X//" >'proto.h' <<'END_OF_FILE'
- X/*------------------------------------------------------------------------------
- X
- X proto.h
- X
- X Function prototypes. Only used if ANSIC is defined.
- X
- X @(#)globals.h 6.0 (Berkeley) 92/06/15
- X
- X------------------------------------------------------------------------------*/
- X
- Xvoid set_profile(void);
- Xvoid set_defaults(void);
- Xvoid set_option(register char *);
- Xvoid parsefont(register struct fstate *, char *);
- Xvoid writefdef(struct fstate *, int);
- Xvoid fill_buffer(void);
- Xvoid parse(int);
- Xvoid dump_line(void);
- Xint lexi(void);
- Xvoid diag(int, char *,...);
- Xchar *chfont(struct fstate *, struct fstate *, char *);
- Xvoid pr_comment(void);
- Xint compute_label_target(void);
- Xint compute_code_target(void);
- Xint count_spaces(int, char *);
- Xvoid addkey(char *, int);
- END_OF_FILE
- if test 752 -ne `wc -c <'proto.h'`; then
- echo shar: \"'proto.h'\" unpacked with wrong size!
- fi
- # end of 'proto.h'
- fi
- if test -f 'typedefs.os2' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'typedefs.os2'\"
- else
- echo shar: Extracting \"'typedefs.os2'\" \(2646 characters\)
- sed "s/^X//" >'typedefs.os2' <<'END_OF_FILE'
- X-TDCBINFO
- X-TPDCBINFO
- X-TTRACKLAYOUT
- X-TPTRACKLAYOUT
- X-TBIOSPARAMETERBLOCK
- X-TPBIOSPARAMETERBLOCK
- X-TSCREENGROUP
- X-TPSCREENGROUP
- X-TFRAME
- X-TPFRAME
- X-TKBDTYPE
- X-TPKBDTYPE
- X-TLINECONTROL
- X-TPLINECONTROL
- X-TMODEMSTATUS
- X-TPMODEMSTATUS
- X-TTRACKFORMAT
- X-TPTRACKFORMAT
- X-TRXQUEUE
- X-TPRXQUEUE
- X-TDEVICEPARAMETERBLOCK
- X-TPDEVICEPARAMETERBLOCK
- X-TPTRDRAWFUNCTION
- X-TPPTRDRAWFUNCTION
- X-TPTRDRAWADDRESS
- X-TPPTRDRAWADDRESS
- X-TSHIFTSTATE
- X-TPSHIFTSTATE
- X-THOTKEY
- X-TPHOTKEY
- X-TMONITORPOSITION
- X-TPMONITORPOSITION
- X-TRATEDELAY
- X-TPRATEDELAY
- X-TCODEPAGEINFO
- X-TPCODEPAGEINFO
- X-TCPID
- X-TPCPID
- X-TLDTADDRINFO
- X-TPLDTADDRINFO
- X-TPTRDRAWDATA
- X-TPPTRDRAWDATA
- X-TFNTHREAD
- X-TPFNTHREAD
- X-TRESULTCODES
- X-TPRESULTCODES
- X-TFNEXITLIST
- X-TPFNEXITLIST
- X-TEASIZEBUF
- X-TPEASIZEBUF
- X-TFSQBUFFER
- X-TPFSQBUFFER
- X-TFSQBUFFER2
- X-TPFSQBUFFER2
- X-TSPOOLATTACH
- X-TPSPOOLATTACH
- X-TFTIME
- X-TPFTIME
- X-TFDATE
- X-TPFDATE
- X-TVOLUMELABEL
- X-TPVOLUMELABEL
- X-TFSINFO
- X-TPFSINFO
- X-TFILELOCK
- X-TPFILELOCK
- X-THFILE
- X-TPHFILE
- X-THEV
- X-TPHEV
- X-TFILEFINDBUF
- X-TPFILEFINDBUF
- X-TFILEFINDBUF2
- X-TPFILEFINDBUF2
- X-TFILEFINDBUF3
- X-TPFILEFINDBUF3
- X-TFILEFINDBUF4
- X-TPFILEFINDBUF4
- X-TGEA
- X-TPGEA
- X-TGEALIST
- X-TPGEALIST
- X-TFEA
- X-TPFEA
- X-TFEALIST
- X-TPFEALIST
- X-TEAOP
- X-TPEAOP
- X-TFEA2
- X-TPFEA2
- X-TFEA2LIST
- X-TPFEA2LIST
- X-TGEA2
- X-TPGEA2
- X-TGEA2LIST
- X-TPGEA2LIST
- X-TEAOP2
- X-TPEAOP2
- X-TFILESTATUS
- X-TPFILESTATUS
- X-TFILESTATUS2
- X-TPFILESTATUS2
- X-TFILESTATUS3
- X-TPFILESTATUS3
- X-TFILESTATUS4
- X-TPFILESTATUS4
- X-TFSALLOCATE
- X-TPFSALLOCATE
- X-THDIR
- X-TPHDIR
- X-TDENA1
- X-TPDENA1
- X-TDENA2
- X-TPDENA2
- X-THSEM
- X-TPHSEM
- X-TSEMRECORD
- X-TPSEMRECORD
- X-THEV
- X-TPHEV
- X-THMTX
- X-TPHMTX
- X-THMUX
- X-TPHMUX
- X-TDATETIME
- X-TPDATETIME
- X-THTIMER
- X-TPHTIMER
- X-TCOUNTRYCODE
- X-TPCOUNTRYCODE
- X-TCOUNTRYINFO
- X-TPCOUNTRYINF
- X-THQUEUE
- X-TPHQUEUE
- X-TREQUESTDATA
- X-TPREQUESTDATA
- X-TSTARTDATA
- X-TPSTARTDATA
- X-TSTATUSDATA
- X-TPSTATUSDATA
- X-THPIPE
- X-TPHPIPE
- X-TAVAILDATA
- X-TPAVAILDATA
- X-TPIPEINFO
- X-TPPIPEINFO
- X-TPIPESEMSTATE
- X-TPPIPESEMSTATE
- X-THVDD
- X-TPHVDD
- X-THKBD
- X-TPHKBD
- X-TKBDKEYINFO
- X-TPKBDKEYINFO
- X-TSTRINGINBUF
- X-TPSTRINGINBUF
- X-TKBDINFO
- X-TPKBDINFO
- X-TKBDHWID
- X-TPKBDHWID
- X-TKBDTRANS
- X-TPKBDTRANS
- X-THVIO
- X-TPHVIO
- X-TVIOCURSORINFO
- X-TPVIOCURSORINFO
- X-TVIOMODEINFO
- X-TPVIOMODEINFO
- X-TVIOPHYSBUF
- X-TPVIOPHYSBUF
- X-TVIOCONFIGINFO
- X-TPVIOCONFIGINFO
- X-TVIOPALSTATE
- X-TPVIOPALSTATE
- X-TVIOOVERSCAN
- X-TPVIOOVERSCAN
- X-TVIOINTENSITY
- X-TPVIOINTENSITY
- X-TVIOCOLORREG
- X-TPVIOCOLORREG
- X-TVIOSETULINELOC
- X-TPVIOSETULINELOC
- X-TVIOSETTARGET
- X-TPVIOSETTARGET
- X-THMOU
- X-TPHMOU
- X-TPTRLOC
- X-TPPTRLOC
- X-TPTRSHAPE
- X-TPPTRSHAPE
- X-TMOUEVENTINFO
- X-TPMOUEVENTINFO
- X-TMOUQUEINFO
- X-TPMOUQUEINFO
- X-TSCALEFACT
- X-TPSCALEFACT
- X-TTHRESHOLD
- X-TPTHRESHOLD
- X-TTIB2
- X-TPTIB2
- X-Ttib_t
- X-TTIB
- X-TPTIB
- X-Tpib_t
- X-TPIB
- X-TPPIB
- X-TFPREG
- X-TPFPREG
- X-TCONTEXTRECORD
- X-TPCONTEXTRECORD
- X-TEXCEPTIONREPORTRECORD
- X-TPEXCEPTIONREPORTRECORD
- X-TERR
- X-TEXCEPTIONREGISTRATIONRECORD
- X-TPEXCEPTIONREGISTRATIONRECORD
- X
- END_OF_FILE
- if test 2646 -ne `wc -c <'typedefs.os2'`; then
- echo shar: \"'typedefs.os2'\" unpacked with wrong size!
- fi
- # end of 'typedefs.os2'
- fi
- echo shar: End of archive 4 \(of 4\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 4 archives.
- rm -f ark[1-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-