Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

make(1)



LINT(1)             RISC/os Reference Manual              LINT(1)



NAME
     lint - a C program checker

SYNOPSIS
     lint [ option ] ... file ...

DESCRIPTION
     lint attempts to detect features of the C program files that
     are likely to be bugs, non-portable, or wasteful.  It also
     checks type usage more strictly than the compilers.  Among
     the things that are currently detected are unreachable
     statements, loops not entered at the top, automatic vari-
     ables declared and not used, and logical expressions whose
     value is constant.  Moreover, the usage of functions is
     checked to find functions that return values in some places
     and not in others, functions called with varying numbers or
     types of arguments, and functions whose values are not used
     or whose values are used but none returned.

     Arguments whose names end with .c are taken to be C source
     files.  Arguments whose names end with .ln are taken to be
     the result of an earlier invocation of lint with either the
     -c or the -o option used.  The .ln files are analogous to .o
     (object) files that are produced by the cc(1) command when
     given a .c file as input.  Files with other suffixes are
     warned about and ignored.

     lint will take all the .c,.ln, and llib-lx.ln (specified by
     -lx) files and process them in their command line order.  By
     default, lint appends the standard C lint library (llib-
     lc.ln) to the end of the list of files.  However, if the -p
     option is used, the portable C lint library (llib-port.ln)
     is appended instead.  When the -c option is not used, the
     second pass of lint checks this list of files for mutual
     compatibility.  When the -c option is used, the .ln and the
     llib-lx.ln files are ignored.

     Any number of lint options may be used, in any order, inter-
     mixed with file-name arguments.  The following options are
     used to suppress certain kinds of complaints:

     -a   Suppress complaints about assignments of long values to
          variables that are not long.

     -b   Suppress complaints about break statements that cannot
          be reached.  (Programs produced by lex or yacc will
          often result in many such complaints).

     -h   Do not apply heuristic tests that attempt to intuit
          bugs, improve style, and reduce waste.

     -u   Suppress complaints about functions and external



                        Printed 11/19/92                   Page 1





LINT(1)             RISC/os Reference Manual              LINT(1)



          variables used and not defined, or defined and not
          used.  (This option is suitable for running lint on a
          subset of files of a larger program).

     -v   Suppress complaints about unused arguments in func-
          tions.

     -x   Do not report variables referred to by external
          declarations but never used.

     The following arguments alter lint's behavior:

     -lx  Include additional lint library llib-lx.ln.  For exam-
          ple, you can include a lint version of the Math Library
          llib-lm.ln by inserting -lm on the command line.  This
          argument does not suppress the default use of llib-
          lc.ln.  These lint libraries must be in the assumed
          directory.  This option can be used to reference local
          lint libraries and is useful in the development of
          multi-file projects.

     -n   Do not check compatibility against either the standard
          or the portable lint library.

     -p   Attempt to check portability to other dialects (IBM and
          GCOS) of C.  Along with stricter checking, this option
          causes all non-external names to be truncated to eight
          characters and all external names to be truncated to
          six characters and one case.

     -systype sys
          Use include files and lint libraries from the system
          specified, eg.  -systype bsd43

     -c   Cause lint to produce a .ln file for every .c file on
          the command line.  These .ln files are the product of
          lint's first pass only, and are not checked for inter-
          function compatibility.

     -o lib
          Cause lint to create a lint library with the name
          llib-llib.ln.  The -c option nullifies any use of the
          -o option.  The lint library produced is the input that
          is given to lint's second pass.  The -o option simply
          causes this file to be saved in the named lint library.
          To produce a llib-llib.ln without extraneous messages,
          use of the -x option is suggested.  The -v option is
          useful if the source file(s) for the lint library are
          just external interfaces (for example, the way the file
          llib-lc is written).  These option settings are also
          available through the use of ``lint comments'' (see
          below).



 Page 2                 Printed 11/19/92





LINT(1)             RISC/os Reference Manual              LINT(1)



     The -D, -U, and -I options of cpp(1) and the -g and -O
     options of cc(1) are also recognized as separate arguments.
     The -g and -O options are ignored, but, by recognizing these
     options, lint's behavior is closer to that of the cc(1) com-
     mand.  Other options are warned about and ignored.  The
     pre-processor symbol ``lint'' is defined to allow certain
     questionable code to be altered or removed for lint.  There-
     fore, the symbol ``lint'' should be thought of as a reserved
     word for all code that is planned to be checked by lint.

     Certain conventional comments in the C source will change
     the behavior of lint:

          /*NOTREACHED*/
               at appropriate points stops comments about
               unreachable code.  (This comment is typically
               placed just after calls to functions like
               exit(2)).

          /*VARARGSn*/
               suppresses the usual checking for variable numbers
               of arguments in the following function declara-
               tion.  The data types of the first n arguments are
               checked; a missing n is taken to be 0.

          /*ARGSUSED*/
               turns on the -v option for the next function.

          /*LINTLIBRARY*/
               at the beginning of a file shuts off complaints
               about unused functions and function arguments in
               this file.  This is equivalent to using the -v and
               -x options.

     lint produces its first output on a per-source-file basis.
     Complaints regarding included files are collected and
     printed after all source files have been processed.
     Finally, if the -c option is not used, information gathered
     from all input files is collected and checked for con-
     sistency.  At this point, if it is not clear whether a com-
     plaint stems from a given source file or from one of its
     included files, the source file name will be printed fol-
     lowed by a question mark.

     The behavior of the -c and the -o options allows for incre-
     mental use of lint on a set of C source files.  Generally,
     one invokes lint once for each source file with the -c
     option.  Each of these invocations produces a .ln file which
     corresponds to the .c file, and prints all messages that are
     about just that source file.  After all the source files
     have been separately run through lint, it is invoked once
     more (without the -c option), listing all the .ln files with



                        Printed 11/19/92                   Page 3





LINT(1)             RISC/os Reference Manual              LINT(1)



     the needed -lx options.  This will print all the inter-file
     inconsistencies.  This scheme works well with make(1); it
     allows make to be used to lint only the source files that
     have been modified since the last time the set of source
     files were linted.

FILES
     /usr/lib/lint     the directory where the lint libraries
                       specified by the -lx option must exist (.I
                       /bsd43/usr/lib/lint if the -systype bsd43
                       option is given).  This directory also
                       contains the lint library sources.
     /usr/lib/cmplrs/cc/lint[12]
                       first and second passes of lint
     llib-lc.ln        declarations for C Library functions
                       (binary format; source is in llib-lc)
     llib-port.ln      declarations for portable functions
                       (binary format; source is in llib-port)
     llib-lm.ln        declarations for Math Library functions
                       (binary format; source is in llib-lm)
     llib-lcurses.ln   declarations for Curses Library functions
                       (binary format; source is in llib-lcurses)
     *lint*            temporary files (default directory
                       /usr/tmp)

SEE ALSO
     cc(1), cpp(1), make(1).

BUGS
     exit(2), setjmp(3C) and other functions that do not return
     are not understood; this causes various lies.
























 Page 4                 Printed 11/19/92



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026