LCLint is a source-code checker for C. LCLint 2.4b is available as source code for Unix and as a binary for Win32. I describe how to use the Win32 binary with DJGPP under Windows 98. I also suggest how to work around a problem that can occur when another compiler is installed.
Note: please see the warning in the final paragraph. Firstly, download the LCLint 2.4b Win32 binary at: http://www.sds.lcs.mit.edu/lclint/ Install the program according to the instructions there. I have only tried the Win32 binary under Windows 98, but the information below might also be useful under Windows 95. LCLint requires an environment variable named include to give the directories containing standard headers. DJGPP does not set such a variable. Therefore, it is necessary to set include, or LCLint will not work properly. Some compilers DO arrange for include to have a value. For example, installation of MetroWerks CodeWarrior Pro 4 puts something like this in CONFIG.SYS: set include=C:\PROGRA~1\METROW~1\CODEWA~1\WIN32-~1\HEADERS\MFC; C:\PROGRA~1\METROW~1\CODEWA~1\WIN32-~1\HEADERS\WIN32S~1; (which fits on a single line in CONFIG.SYS). THIS VALUE OF INCLUDE WILL PREVENT LCLINT FROM WORKING CORRECTLY. Therefore, if you have CodeWarrior installed, it is important to (1) re-define include before running LCLint; (2) use CodeWarrior's definition of include before running CodeWarrior. A solution is to set include for LCLint in ~/.bashrc, and only run LCLint from a BASH prompt. This leaves the above setting from CONFIG.SYS in place when I run CodeWarrior from Windows' graphical interface. (Running CodeWarrior from the BASH prompt might be made impossible. But I have never wanted to do that.) This is what I have in my ~/.bashrc file to get LCLint working with the DJGPP headers. LARCH_PATH and LCLIMPORTDIR may have different values, according to where LCLint was installed. For example, C:\LCLINT may be a more usual location than C:\LOCAL\LCLINT. Also, for many people, the DJGPP installation directory will be C:\djgpp rather than C:\Local\djgpp. Replace the directories mentioned below with those that are valid on your system. export LARCH_PATH="C:\LOCAL\LCLINT\LIB;." export LCLIMPORTDIR="C:\LOCAL\LCLINT\IMPORTS;." include="C:\Local\djgpp\include" include=$include";C:\Local\djgpp\include\libc" include=$include";C:\Local\djgpp\include\libm" include=$include";C:\Local\djgpp\include\debug" incldue=$include";C:\Local\djgpp\include\inlines" include=$include";C:\Local\djgpp\include\machine" include=$include";C:\Local\djgpp\include\netinet" include=$include";C:\Local\djgpp\include\sys" export include export INCLUDE=$include If you use a compiler other than DJGPP from the BASH prompt, there could still be trouble if that compiler uses INCLUDE (or include). In this case it would be better not to set the variable in .bashrc, but to run LCLint through a batch file or shell script which sets include for LCLint, then runs LCLint and exits. A remaining problem is that LCLint options may be quite long, but very long command lines are truncated under Windows 98. A work-around is to set default options using a .lclintrc file rather than giving all options on the command- line (see Section 2.2 of the LCLint manual.) I would like to thank Martin "Herbert" Dietze for considerable help with running both LCLint and the LCLint test suite on my computer. Any mistakes in the above are mine, but I will take NO responsibility for problems that result. I would be glad to hear of suggestions to improve this document. E&OE.