Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — DG/UX 4.00

Media Vault

Software Library

Restoration Projects

Artifacts Sought



                                                                  lint(1)



        _________________________________________________________________
        lint                                                      Command
        a C program checker
        _________________________________________________________________


        SYNTAX

        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



        DG/UX 4.00                                                 Page 1
               Licensed material--property of copyright holder(s)





                                                                  lint(1)



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



        DG/UX 4.00                                                 Page 2
               Licensed material--property of copyright holder(s)





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




        DG/UX 4.00                                                 Page 3
               Licensed material--property of copyright holder(s)





                                                                  lint(1)



        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; source is in
                               /usr/lib/llib-lc)
        /usr/lib/llib-port.ln  Declarations for portable functions
                               (binary format; source is in
                               /usr/lib/llib-port)
        /usr/lib/llib-lm.ln    Declarations for Math Library functions
                               (binary format; 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.




























        DG/UX 4.00                                                 Page 4
               Licensed material--property of copyright holder(s)



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