Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ () — Motorola System V 88k Release 3.2 Version 1.2C

Media Vault

Software Library

Restoration Projects

Artifacts Sought



  LINT(1)               (Advanced C Utilities)              LINT(1)



  NAME
       lint - a C program checker

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

  DESCRIPTION
       The lint command 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 variables 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,
       intermixed with file-name arguments.  The following options
       are used to suppress certain kinds of complaints:


  Page 1                                                   May 1989


















  LINT(1)               (Advanced C Utilities)              LINT(1)



       -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
            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
            functions.

       -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
            example, 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.


  Page 2                                                   May 1989


















  LINT(1)               (Advanced C Utilities)              LINT(1)



       -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).

       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)
       command.  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.
       Therefore, 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*/


  Page 3                                                   May 1989


















  LINT(1)               (Advanced C Utilities)              LINT(1)



                 suppresses the usual checking for variable numbers
                 of arguments in the following function
                 declaration.  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
       consistency.  At this point, if it is not clear whether a
       complaint stems from a given source file or from one of its
       included files, the source file name will be printed
       followed by a question mark.

       The behavior of the -c and the -o options allows for
       incremental 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 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


  Page 4                                                   May 1989


















  LINT(1)               (Advanced C Utilities)              LINT(1)



       LLIBDIR               the directory where the lint libraries
                             specified by the -lx option must
                             exist, usually /usr/lib
       LLIBDIR/lint[12]      first and second passes
       LLIBDIR/llib-lc.ln    declarations for C Library functions
                             (binary format; source is in
                             LLIBDIR/llib-lc )
       LLIBDIR/llib-port.ln  declarations for portable functions
                             (binary format; source is in
                             LLIBDIR/llib-port )
       LLIBDIR/llib-lm.ln    declarations for Math Library
                             functions (binary format; source is in
                             LLIBDIR/llib-lm )
       TMPDIR/*lint*         temporaries
       TMPDIR                usually /usr/tmp but can be redefined
                             by setting the environment variable
                             TMPDIR [see tempnam() in tmpnam(3S)].
  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 5                                                   May 1989
















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