Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — Atari System V ue12

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

make(1)





   lint(1)                   (Advanced C Utilities)                    lint(1)


   NAME
         lint - a C program checker

   SYNOPSIS
         lint [options] files

   DESCRIPTION
         lint detects features of C program files which are likely to be bugs,
         non-portable, or wasteful.  It also checks type usage more strictly
         than the compiler.  lint issues error and warning messages.  Among
         the things it detects are unreachable statements, loops not entered
         at the top, automatic variables declared and not used, and logical
         expressions whose value is constant.  lint checks for 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 takes all the .c, .ln, and llib-lx.ln (specified by -lx) files
         and processes 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.  When the -c option is used, the .ln and the llib-
         lx.ln files are ignored.  When the -c option is not used, the second
         pass of lint checks the .ln and the llib-lx.ln list of files for
         mutual compatibility.

         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:

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

         -b    Suppress complaints about break statements that cannot be
               reached.

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

         -m    Suppress complaints about external symbols that could be
               declared static.

         -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


   7/91                                                                 Page 1









   lint(1)                   (Advanced C Utilities)                    lint(1)


               program).

         -v    Suppress complaints about unused arguments in functions.

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















































   Page 2                                                                 7/91









   lint(1)                   (Advanced C Utilities)                    lint(1)


               The following arguments alter lint's behavior:

         -Idir Search for included header files in the directory dir before
               searching the current directory and/or the standard place.

         -lx   Include the 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.

         -Ldir Search for lint libraries in dir before searching the standard
               place.

         -n    Do not check compatibility against the standard C lint library.

         -p    Attempt to check portability to other dialects 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.

         -s    Produce one-line diagnostics only.  lint occasionally buffers
               messages to produce a compound report.

         -k    Alter the behavior of /*LINTED [message]*/ directives.
               Normally, lint will suppress warning messages for the code
               following these directives.  Instead of suppressing the
               messages, lint prints an additional message containing the
               comment inside the directive.

         -y    Specify that the file being linted will be treated as if the
               /*LINTLIBRARY*/ directive had been used.  A lint library is
               normally created by using the /*LINTLIBRARY*/ directive.

         -F    Print pathnames of files.  lint normally prints the filename
               without the path.

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

         -ox   Cause lint to create a lint library with the name llib-lx.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-lx.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


   7/91                                                                 Page 3









   lint(1)                   (Advanced C Utilities)                    lint(1)


               external interfaces.
               Some of the above settings are also available through the use
               of "lint comments" (see below).

         -V    Write to standard error the product name and release.

         -Wfile
               Write a .ln file to file, for use by cflow(1).

         -Rfile
               Write a .ln file to file, for use by cxref(1).

         lint recognizes many cc(1) command line options, including -D, -U,
         -g, -O, -Xt, -Xa, and -Xc, although -g and -O are ignored.
         Unrecognized options are warned about and ignored.  The predefined
         macro lint is defined to allow certain questionable code to be
         altered or removed for lint.  Thus, 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:

               /*ARGSUSEDn*/
                     makes lint check only the first n arguments for usage; a
                     missing n is taken to be 0 (this option acts like the -v
                     option for the next function).

               /*CONSTCOND*/ or /*CONSTANTCOND*/ or /*CONSTANTCONDITION*/
                     suppresses complaints about constant operands for the
                     next expression.

               /*EMPTY*/
                     suppresses complaints about a null statement consequent
                     on an if statement.  This directive should be placed
                     after the test expression, and before the semicolon.
                     This directive is supplied to support empty if statements
                     when a valid else statement follows.  It suppresses
                     messages on an empty else consequent.

               /*FALLTHRU*/ or /*FALLTHROUGH*/
                     suppresses complaints about fall through to a case or
                     default labelled statement.  This directive should be
                     placed immediately preceding the label.

               /*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.




   Page 4                                                                 7/91









   lint(1)                   (Advanced C Utilities)                    lint(1)


               /*LINTED [message]*/
                     suppresses any intra-file warning except those dealing
                     with unused variables or functions.  This directive
                     should be placed on the line immediately preceding where
                     the lint warning occurred.  The -k option alters the way
                     in which lint handles this directive.  Instead of
                     suppressing messages, lint will print an additional
                     message, if any, contained in the comment.  This
                     directive is useful in conjunction with the -s option for
                     post-lint filtering.

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

               /*PRINTFLIKEn*/
                     makes lint check the first (n-1) arguments as usual.  The
                     nth argument is interpreted as a printf format string
                     that is used to check the remaining arguments.

               /*PROTOLIBn*/
                     causes lint to treat function declaration prototypes as
                     function definitions if n is non-zero.  This directive
                     can only be used in conjunction with the
                     /* LINTLIBRARY */ directive.  If n is zero, function
                     prototypes will be treated normally.

               /*SCANFLIKEn*/
                     makes lint check the first (n-1) arguments as usual.  The
                     nth argument is interpreted as a scanf format string that
                     is used to check the remaining arguments.

               /*VARARGSn*/
                     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.  The use of the ellipsis
                     terminator (...) in the definition is suggested in new or
                     updated code.

         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, if -s is not specified.
         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 filename will be
         printed followed by a question mark.




   7/91                                                                 Page 5









   lint(1)                   (Advanced C Utilities)                    lint(1)


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


   SEE ALSO
         cc(1), make(1).
         See the ``lint'' chapter in the Programmer's Guide: ANSI C and
         Programming Support Tools.





















   Page 6                                                                 7/91





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