Annotation of 43BSDReno/pgrm/error/error.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980, 1990 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted provided
                      5: .\" that: (1) source distributions retain this entire copyright notice and
                      6: .\" comment, and (2) distributions including binaries display the following
                      7: .\" acknowledgement:  ``This product includes software developed by the
                      8: .\" University of California, Berkeley and its contributors'' in the
                      9: .\" documentation or other materials provided with the distribution and in
                     10: .\" all advertising materials mentioning features or use of this software.
                     11: .\" Neither the name of the University nor the names of its contributors may
                     12: .\" be used to endorse or promote products derived from this software without
                     13: .\" specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"     @(#)error.1    6.5 (Berkeley) 7/24/90
                     19: .\"
                     20: .Dd July 24, 1990
                     21: .Dt ERROR 1
                     22: .Os BSD 4
                     23: .Sh NAME
                     24: .Nm error
                     25: .Nd analyze and disperse compiler error messages
                     26: .Sh SYNOPSIS
                     27: .Nm error
                     28: .Op Fl n
                     29: .Op Fl s
                     30: .Op Fl q
                     31: .Op Fl v
                     32: .Op Fl t Ar suffixlist
                     33: .Op Fl I Ar ignorefile
                     34: .Op name
                     35: .Sh DESCRIPTION
                     36: .Nm Error
                     37: analyzes and optionally disperses the diagnostic error messages
                     38: produced by a number of compilers and language processors to the source
                     39: file and line where the errors occurred.  It can replace the painful,
                     40: traditional methods of scribbling abbreviations of errors on paper, and
                     41: permits error messages and source code to be viewed simultaneously
                     42: without machinations of multiple windows in a screen editor.
                     43: .Pp
                     44: Options are:
                     45: .Tw Ds
                     46: .Tp Fl n
                     47: Do
                     48: .Em not
                     49: touch any files; all error messages are sent to the
                     50: standard output.
                     51: .Tp Fl q
                     52: The user is
                     53: .Ar queried
                     54: whether s/he wants to touch the file.
                     55: A ``y'' or ``n'' to the question is necessary to continue.
                     56: Absence of the
                     57: .Fl q
                     58: option implies that all referenced files
                     59: (except those referring to discarded error messages)
                     60: are to be touched.
                     61: .Tp Fl v
                     62: After all files have been touched,
                     63: overlay the visual editor
                     64: .Xr vi 1
                     65: with it set up to edit all files touched,
                     66: and positioned in the first touched file at the first error.
                     67: If
                     68: .Xr vi 1
                     69: can't be found, try
                     70: .Xr ex 1
                     71: or
                     72: .Xr ed 1
                     73: from standard places.
                     74: .Tp Fl t
                     75: Take the following argument as a suffix list.
                     76: Files whose suffixes do not appear in the suffix list are not touched.
                     77: The suffix list is dot separated, and ``*'' wildcards work.
                     78: Thus the suffix list:
                     79: .Pp
                     80: .Dl ".c.y.foo*.h"
                     81: .Pp
                     82: allows
                     83: .Nm error
                     84: to touch files ending with ``.c'', ``.y'', ``.foo*'' and ``.y''.
                     85: .Tp Fl s
                     86: Print out
                     87: .Em statistics
                     88: regarding the error categorization.
                     89: Not too useful.
                     90: .Tp
                     91: .Pp
                     92: .Nm Error
                     93: looks at the error messages,
                     94: either from the specified file
                     95: .Ar name
                     96: or from the standard input,
                     97: and attempts to determine which
                     98: language processor produced each error message,
                     99: determines the source file and line number to which the error message refers,
                    100: determines if the error message is to be ignored or not,
                    101: and inserts the (possibly slightly modified) error message into
                    102: the source file as a comment on the line preceding to which the
                    103: line the error message refers.
                    104: Error messages which can't be categorized by language processor
                    105: or content are not inserted into any file,
                    106: but are sent to the standard output.
                    107: .Nm Error
                    108: touches source files only after all input has been read.
                    109: .Pp
                    110: .Nm Error
                    111: is intended to be run
                    112: with its standard input
                    113: connected via a pipe to the error message source.
                    114: Some language processors put error messages on their standard error file;
                    115: others put their messages on the standard output.
                    116: Hence, both error sources should be piped together into
                    117: .Nm error .
                    118: For example, when using the
                    119: .Xr csh 1
                    120: syntax,
                    121: .Pp
                    122: .Dl make \-s lint \&| error \-q \-v
                    123: .Pp
                    124: will analyze all the error messages produced
                    125: by whatever programs
                    126: .Xr make 1
                    127: runs when making lint.
                    128: .Pp
                    129: .Nm Error
                    130: knows about the error messages produced by:
                    131: .Xr make 1 ,
                    132: .Xr cc 1 ,
                    133: .Xr cpp 1 ,
                    134: .Xr ccom 1 ,
                    135: .Xr as 1 ,
                    136: .Xr ld 1 ,
                    137: .Xr lint 1 ,
                    138: .Xr pi 1 ,
                    139: .Xr pc 1 ,
                    140: .Xr f77 1 ,
                    141: and
                    142: .Em DEC Western Research Modula\-2 .
                    143: .Nm Error
                    144: knows a standard format for error messages produced by
                    145: the language processors,
                    146: so is sensitive to changes in these formats.
                    147: For all languages except
                    148: .Em Pascal ,
                    149: error messages are restricted to be on one line.
                    150: Some error messages refer to more than one line in more than
                    151: one files;
                    152: .Nm error
                    153: will duplicate the error message and insert it at
                    154: all of the places referenced.
                    155: .Pp
                    156: .Nm Error
                    157: will do one of six things with error messages.
                    158: .Tp Em synchronize
                    159: Some language processors produce short errors describing
                    160: which file it is processing.
                    161: .Nm Error
                    162: uses these to determine the file name for languages that
                    163: don't include the file name in each error message.
                    164: These synchronization messages are consumed entirely by
                    165: .Nm error .
                    166: .Tp Em discard
                    167: Error messages from
                    168: .Xr lint 1
                    169: that refer to one of the two
                    170: .Xr lint 1
                    171: libraries,
                    172: .Pa /usr/libdata/lint/llib-lc
                    173: and
                    174: .Pa /usr/libdata/lint/llib-port
                    175: are discarded,
                    176: to prevent accidently touching these libraries.
                    177: Again, these error messages are consumed entirely by
                    178: .Nm error .
                    179: .Tp Em nullify
                    180: Error messages from
                    181: .Xr lint 1
                    182: can be nullified if they refer to a specific function,
                    183: which is known to generate diagnostics which are not interesting.
                    184: Nullified error messages are not inserted into the source file,
                    185: but are written to the standard output.
                    186: The names of functions to ignore are taken from
                    187: either the file named
                    188: .Pa .errorrc
                    189: in the users's home directory,
                    190: or from the file named by the
                    191: .Fl I
                    192: option.
                    193: If the file does not exist,
                    194: no error messages are nullified.
                    195: If the file does exist, there must be one function
                    196: name per line.
                    197: .Tp Em not file specific
                    198: Error messages that can't be intuited are grouped together,
                    199: and written to the standard output before any files are touched.
                    200: They will not be inserted into any source file.
                    201: .Tp Em file specific
                    202: Error message that refer to a specific file,
                    203: but to no specific line,
                    204: are written to the standard output when
                    205: that file is touched.
                    206: .Tp Em true errors
                    207: Error messages that can be intuited are candidates for
                    208: insertion into the file to which they refer.
                    209: .Tp
                    210: .Pp
                    211: Only true error messages are candidates for inserting into
                    212: the file they refer to.
                    213: Other error messages are consumed entirely by
                    214: .Nm error
                    215: or are written to the standard output.
                    216: .Nm Error
                    217: inserts the error messages into the source file on the line
                    218: preceding the line the language processor found in error.
                    219: Each error message is turned into a one line comment for the
                    220: language,
                    221: and is internally flagged
                    222: with the string ``###'' at
                    223: the beginning of the error,
                    224: and ``%%%'' at the end of the error.
                    225: This makes pattern searching for errors easier with an editor,
                    226: and allows the messages to be easily removed.
                    227: In addition, each error message contains the source line number
                    228: for the line the message refers to.
                    229: A reasonably formatted source program can be recompiled
                    230: with the error messages still in it,
                    231: without having the error messages themselves cause future errors.
                    232: For poorly formatted source programs in free format languages,
                    233: such as C or Pascal,
                    234: it is possible to insert a comment into another comment,
                    235: which can wreak havoc with a future compilation.
                    236: To avoid this, programs with comments and source
                    237: on the same line should be formatted
                    238: so that language statements appear before comments.
                    239: .Pp
                    240: .Nm Error
                    241: catches interrupt and terminate signals,
                    242: and if in the insertion phase,
                    243: will orderly terminate what it is doing.
                    244: .Sh FILES
                    245: .Dw ~/.errorrc
                    246: .Di L
                    247: .Dp Pa ~/.errorrc
                    248: function names to ignore for
                    249: .Xr lint 1
                    250: error messages
                    251: .Dp Pa /dev/tty
                    252: user's teletype
                    253: .Dp
                    254: .Sh HISTORY
                    255: .Nm Error
                    256: appeared in 4.0 BSD.
                    257: .Sh AUTHOR
                    258: Robert Henry
                    259: .Sh BUGS
                    260: .Pp
                    261: Opens the teletype directly to do user querying.
                    262: .Pp
                    263: Source files with links make a new copy of the file with
                    264: only one link to it.
                    265: .Pp
                    266: Changing a language processor's format of error messages
                    267: may cause
                    268: .Nm error
                    269: to not understand the error message.
                    270: .Pp
                    271: .Nm Error ,
                    272: since it is purely mechanical,
                    273: will not filter out subsequent errors caused by `floodgating'
                    274: initiated by one syntactically trivial error.
                    275: Humans are still much better at discarding these related errors.
                    276: .Pp
                    277: Pascal error messages belong after the lines affected
                    278: (error puts them before).  The alignment of the `\\' marking
                    279: the point of error is also disturbed by
                    280: .Nm error .
                    281: .Pp
                    282: .Nm Error
                    283: was designed for work on CRT's at reasonably high speed.
                    284: It is less pleasant on slow speed terminals, and has never been
                    285: used on hardcopy terminals.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.