Please contact or Mt Xia for assistance with all your shell programming needs.

lint(1)								      lint(1)


  lint - a C program checker


  lint [-abchnpuxv] [-Dname[=definition]] [-Idirectory]	[-lkey]	[-olibrary]
       [-MA] [-Msuboptions] [-stdn] [-Pppoptions] [-Qsuboptions] [-Ndnumber]
       [-Nlnumber] [-Nnnumber] [-Ntnumber] [-Uname] [-wclass...] [-Xdollar]
       [-XEnum]	file...


  The lint program checker 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.  Argu-
  ments	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 produce warnings
  and are ignored.

  The lint program checker will	take all the .c, .ln , and llib-lx.ln (speci-
  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 compati-
  bility.  When	the -c option is used, the .ln and the llib-lx.ln files	are


  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.
      (Programs	produced by lex	or yacc	will often result in many such com-

  -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

      Suppress complaints about	the use	of the dollar sign ($) in variable

      Controls the reporting of	warning	classes. All warning classes are
      active by	default. They can however, be individually activated by
      including	the appropriate	option as part of the class argument.  For
      example, to report only declaration consistency and Heuristic com-
      plaints, enter the following command:
	   lint	-wA -wdh prog.c
      In the preceding example,	-wA deactivates	all warnings and -wdh
      activates	the desired reports. The following list	describes available
      classes of warnings:

      a	  Non-ANSI features

      c	  Comparisons with unsigned values

      d	  Declaration consistency

      h	  Heuristic complaints

      k	  Supresses the	following messages: function prototype not in scope
	  and old style	argument declaration.

      l	  Assignment of	long values to variables that are not long

      n	  Null-effect code

      o	  Unknown order	of evaluation

      p	  Various portability concerns

      r	  Return statement consistency

      u	  Proper usage of variables and	functions

      A	  Deactivates all warnings

      C	  Constants occurring in conditionals

      D	  Declarations that are	never used or defined.

      O	  Obsolete features

      P	  Function prototype presence

      R	  Detection of unreachable code

      S	  Storage capacity checks

      U	  Equivalent to	-u

  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 trun-
      cated to six characters and one case.

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

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

  -MA Enforces ANSI C standard rules.  The default lint	preprocessing and
      parsing mode is Extended C (K&R).	 ANSI preprocessing and	parsing	rules
      may be selected as an option.  ANSI mode prepends	(adds at the begin-
      ning) the	standard ANSI library function prototypes in place of the
      default extended mode C library.	ANSI mode enforces a stricter inter-
      file object reference/definition linkage checking. This flag also
      invokes the -std1	C preprocessor option and defines the macro

      The suboptions enforce some of the ANSI parsing rules. These are imple-
      mented as	toggles. This flag and set of suboptions can be	used to	turn
      on or off	specific ANSI features.	 For example, -MAt turns on all	ANSI
      rules except ANSI	typing rules.

	  a   follow ANSI parsing rules

	  b   follow ANSI const	array struct member bug

	  c   follow ANSI type compatibility rules

	  p   follow ANSI type promotion rules

	  r   follow ANSI strict ref/def rules

	  s   follow ANSI scoping rules	for externs

	  t   follow ANSI typing rules

  -P  Allows C preprocessor options to be specified when executing the lint
      command.	For example, specifying	-PV invokes the	preprocessor with the
      -V option	specified.

      Directs the C Preprocessor to generate the appropriate predefined	mac-
      ros.  The	-std flag causes the macro __STDC__=0 to be passed to the
      preprocessor; -std1 causes the macro __STDC__=1 to be passed, and	-std0
      causes __STDC__ to be undefined.	The default is -std0 The -std0 option
      is incompatible with the -M option. If -std or -std1 are selected, the
      -MA ANSI parsing rules are automatically selected.

      Specifies	the number (num) of errors lint	accepts	before terminating.
      By default, lint terminates after	encountering 30	errors.

  The -Q option	provides support for migration from ULTRIX and DEC OSF/1 Ver-
  sion 1.0 systems to DEC OSF/1	Version	1.2 and	higher versions.  This option
  turns	on checking for	all common programming techniques which	might cause
  problems when	moving from 32-bit systems to 64-bit systems.  The -Q option
  disables checking for	other programming problems, so this switch should be
  used only for	migration checking.

  with the -Q option, for example, -QacP to suppress checking for pointer
  alignment problems, problematic type casts, and function prototype checks,

  The following	suboptions are available to suppress specific categories of

  a   Suppresses checking of pointer alignment problems.

  b   Suppresses checking for int long mismatches in bit operators.

  c   Suppresses checking for problematic type casts.

  f   Suppresses checking for format control strings in	scanf and printf.

  l   Suppresses checking for assignments of long values to variables of a
      type other than long.

  p   Suppresses checking for illegal combinations pointer and integer data

  s   Suppresses checking for problematic sign extensions to long

  u   Suppresses checking to see if a variable is used before it is set.

  C   Suppresses checking to see if there is constant truncation of longs in
      an assignment.

  F   Suppresses checking to see if precision has been lost in field assign-

  G   Suppresses truncation message when casting to char *.

  P   Suppresses function prototype checks.

  S   Suppresses checking for a	problematic combination	of structure
      pointers.	 If structure checking and cast	checking are not suppressed
      then the casting of differing structures and pointers to structures are
      flagged if the structures	differ in size and/or alignment	as described
      in the following two suboptions.

  Z   Suppresses warnings about	casting	a structure or structure pointer to
      one of a different size if c and S are not specified on the command

  g   Suppresses warnings about	casting	a structure or structure pointer to
      on of a different	alignment if c and S are not specified on the command

  The -N option	and its	related	suboptions allow you to	increase the size of
  various internal tables at runtime.  Suboptions to the -N option take	the
  form -Nzx where z is a suboption and x is an integer size.

  -N  Use this option with its suboptions to increase the initial size of
      various internal tables at runtime if the	default	values are not suffi-
      cient. All of the	tables are dynamically expandable; however, larger
      initial values may improve run-time performance.

      Use with -N to increase the initial size of the symbol table.  To
      increase the number of entries, use -Nnxxxx to increase the number of
      entries. Use a number greater than 1500, which is	the default value.
      The larger the number, the fewer collisions. As a	rule of	thumb, use a
      number roughly twice the number of source	code lines.

      Use with -N when you encounter the error that the	dimension table	has
      overflowed or is full. To	increase the number of base elements allo-
      cated to the members of the dimension tables, use	a number greater than
      2000, which is the default value.

  tx  Use with -N when you encounter the error stating that the	parse tree
      limit has	been reached, "out of tree space; recompile with Ntx option
      with x greater than xxxx". Run lint again, do not	recompile, on the
      module that generated the	error using -Ntyyyy with yyyy greater than
      the value	in the error message.

  lx  Use with -N when you encounter the error stating that the	local type
      table limit has been reached, "out of tree space;	recompile with -Nlx
      option with x greater than xxxx".	 Run lint again, do not	recompile, on
      the module that generated	the error, using -Nlyyyy with yyyy greater
      than the value in	the error message.

  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

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

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

  n arguments	are checked; a missing n is taken to be	0.

	      turns on the -v option for the next function.

	      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.

  The lint utility 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 con-
  sistency.  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
  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 run through


  exit(2), setjmp(3) and other functions that do not return are	not under-
  stood; this causes various lies.


	     option must exist.

	     The directory where the lint library sources are kept.

	     first and second passes of	lint

  llib-lc.ln declarations for C	Library	functions (binary format; source is
	     in	llib-lc.c)

	     declarations for portable functions (binary format; source	is in

  llib-lm.ln declarations for Math Library functions (binary format; source
	     is	in llib-lm.c)

	     declarations for Curses Library functions (binary format; source
	     is	in llib-lcrses.c)

  *lint*     temporary files (default directory	/usr/tmp)


  cc(1), cpp(1), make(1)