Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

LINT(1)  —  USER COMMANDS

NAME

lint − a C program verifier

SYNOPSIS

lint [ −abchnuvxz ] [ −Dname=def ] [ −Dname ] [ −Uname ] [ −Idir ] file ...
lint [ −Clib ] file ...

DESCRIPTION

Lint attempts to detect features of the C program files that are likely to be bugs, non-portable, or wasteful.  Lint also checks the type usage of the program more strictly than the C compiler.  Lint runs the C preprocessor as its first phase. 

Among the things which are currently found 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 which return values in some places and not in others, functions called with varying numbers of arguments, and functions whose values are not used. 

By default, it is assumed that all the files are to be loaded together; they are checked for mutual compatibility.  Function definitions for certain libraries are available to lint; these libraries are referred to by a conventional name, such as −lm, in the style of ld(1). The standard C library (−lc) is lint’ed by default. Arguments ending in .ln are also treated as library files. 

To create lint libraries, use the −C option. For example

tutorial% lint −Ccongress files . . .

where files are the C sources of library congress, produces a file llib-lcongress.ln in the /usr/lib/lint directory in the correct library format suitable for lint’ing programs using −lcongress. 

OPTIONS

a Report assignments of long values to int variables. 

b Report break statements that cannot be reached.  This is not the default because, unfortunately, most lex and many yacc outputs produce dozens of such comments. 

c Complain about casts which have questionable portability. 

h Apply a number of heuristic tests to attempt to intuit bugs, improve style, and reduce waste. 

n Do not check compatibility against the standard library. 

u Do not complain about functions and variables used and not defined, or defined and not used (this is suitable for running lint on a subset of files out of a larger program). 

v Suppress complaints about unused arguments in functions. 

x Report variables referred to by extern declarations, but never used. 

z Do not complain about structures that are never defined (for example, using a structure pointer without knowing its contents.). 

−Dname=def

−Dname Define name to the preprocessor, as if by ‘#define’.  If no definition is given, the name is defined as "1". 

−Uname Remove any initial definition of name in the preprocessor. 

−Idir ‘#include’ files whose names do not begin with ‘/’ are always sought first in the directory of the file argument, then in directories named in −I options, then in the /usr/include directory. 

−Clib create a lint library with name lib (see DESCRIPTION section). 

−llib use lint library lib from the /usr/lib/lint directory. 

General Comments
The routine exit(2) and other functions which do not return are not understood; this causes various lies.

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

/∗NOTREACHED∗/
at appropriate points stops comments about unreachable code.

/∗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 in this file.

EXAMPLE

The following lint call:

tutorial% lint  −b  myfile

checks the consistency of the file ‘myfile’.  The −b option indicates that unreachable break statements are to be checked. 

FILES

/usr/lib/lint/lint[12]programs
/usr/lib/lint/llib-lc.lndeclarations for standard functions
/usr/lib/lint/llib-lchuman-readable version of above
/usr/lib/lint/llib-lm.lndeclarations for math functions
/usr/lib/lint/llib-lmhuman-readable version of above
/usr/lib/lint/llib-lmp.lndeclarations for multiprecision functions
/usr/lib/lint/llib-lmphuman-readable version of above
lib-l∗.lnlibrary created by the −C option

SEE ALSO

cc(1)
Lint, a C Program Checker, in Programming Tools for the Sun Workstation

BUGS

There are some things you just can’t get lint to shut up about. 

Sun Release 2.0  —  Last change: 1 February 1985

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