Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — DG/UX 4.30

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cpp(1)

make(1)



     lint(1)                    DG/UX 4.30                     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 compiler.  Lint
          detects unreachable statements, loops not entered at the
          top, automatic variables declared and not used, and logical
          expressions whose value is constant.  It also 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 used
          but not returned.

          Arguments ending with .c are taken to be C source files.
          Arguments ending 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 generate warnings
          and are ignored.

          Lint processes all the .c, .ln, and llib-lx.ln (specified by
          -lx) files 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.

          You can use any number of lint options, in any order,
          intermixed with file-name arguments.  The following options
          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 try to find bugs,
               improve style, and reduce waste.

          -u   Suppress complaints about functions and external
               variables used and not defined, or defined and not



     Licensed material--property of copyright holder(s)         Page 1





     lint(1)                    DG/UX 4.30                     lint(1)



               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 the 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.  You can use this option to
               reference local lint libraries and to develop multi-
               file projects.

          -Ldirectory
               Look in directory first for libraries, then go to
               /usr/lib libraries not found in directory.  You can
               specify several directories by giving the -L option and
               a directory name for each directory you want searched.

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

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

          -c   Produces 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 the -o option.
               The lint library produced is the input that is given to
               lint's second pass.  The -o option simply saves this
               file in the named lint library.  To produce a llib-
               llib.ln without extraneous messages, use the -x option.
               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 lint comments (see
               below).




     Licensed material--property of copyright holder(s)         Page 2





     lint(1)                    DG/UX 4.30                     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)
          command.  Other options are warned about and ignored.  The
          pre-processor macro "lint" is defined to allow certain
          questionable code to be altered or removed for lint.
          Therefore, the macro "lint" serves as a reserved word for
          all code that lint will check.

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

               /*NOTREACHED*/
                    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
                    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.  Equivalent to using the -v and -x
                    options.

          Lint produces its output in three phases.  In the first, it
          prints messages for each source file.  In the second phase,
          it prints messages for any files included with #include.  In
          the final phase, it prints messages about interrelations
          between files.  Question marks after filenames in this phase
          indicate lint could not determine exactly what file the
          message refers to.  The third phase is not done if the -c is
          given.

          The behavior of the -c and the -o options allows for
          incremental use of lint on a set of C source files.  You can
          invoke 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 about
          that source file only.  After .ln files have been produced,
          for all the source files.  Lint 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



     Licensed material--property of copyright holder(s)         Page 3





     lint(1)                    DG/UX 4.30                     lint(1)



          inconsistencies.  This scheme works well with make(1); it
          lets you use make to lint only the source files that have
          been modified since the last time the set of source files
          were linted.

     FILES
          /usr/lib               The directory where the lint
                                 libraries specified by the -lx option
                                 must exist
          /usr/lib/lint[12]      First and second passes
          /usr/lib/llib-lc.ln    Declarations for C Library functions
                                 (binary format; if you have bought a
                                 source license, the source is in
                                 /usr/lib/llib-lc)
          /usr/lib/llib-port.ln  Declarations for portable functions
                                 (binary format; if you have a source
                                 license, the source is in
                                 /usr/lib/llib-port)
          /usr/lib/llib-lm.ln    Declarations for Math Library
                                 functions (binary format; if you have
                                 a source license, the source is in
                                 /usr/lib/llib-lm)
          /usr/tmp/*lint*        Temporaries

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

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

























     Licensed material--property of copyright holder(s)         Page 4



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