Message-Id: <200802210025.m1L0P6LE005029@delorie.com> X-Authenticated: #27081556 X-Provags-ID: V01U2FsdGVkX1+74QIKqcq7rUw5nAtnYyCEgB0yx0y3J2Q8gI8vtz KP/1VZJDeOVwSI From: Juan Manuel Guerrero To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: release 4 of the DJGPP port of Splint 3.1.2 Date: Thu, 21 Feb 2008 00:44:18 +0100 Content-Disposition: inline X-Y-GMX-Trusted: 0 This is release 4 of the port of Splint 3.1.2 to MSDOS/DJGPP. Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. DJGPP specific changes. ======================= This is hopefully the last release of this port that defines the final state of the porting patch of the splint program that will be submitted to the splint maintainers. The most important but not user visible difference is the writing from scratch of the DOS/DJGPP path style support for splint. The supported path syntax is restricted to the use - of mixed backslash and slash as directory separator character - of the semicolon as only allowed path separator character - of the /dev/env prefix to address the containt of environment variables at runtime - of the /dev/x prefix as replacement for the typical DOS driver specifier letter x:. Examples of allowed path syntax are: /dev/env/TMPDIR;/dev/env/TMP c:/foo\bar;d:\bar/foo;/dev/e/dir1\dir2 The use of colon as path separartor character is *not* supported. This port uses a bug fixed version of the CVS version of fixpath.c that is stored in /djgpp/djdev204.p2. That directory contains a diff file that shows the changes I have done against the CVS sources and a compiled version that must used to replace the one that comes with your libc.a from djdev204. To substitute the broken fixpath.o from your libc.a provided by djdev204.zip with this new one cd into the directory /splint-3.1-2/djgpp/djdev204.p2 and run the ar command from binutils like this: ar -rv /dev/env/DJDIR/lib/libc.a fixpath.o ATTENTION: It should be noticed that if you set the environment variable LARCHPATH, this sequence of paths **MUST** always be terminated with a semicolon. The same applies to the INCLUDE environment variable. This is not a result of the porting effort but is a peculiarity of Splint itself. This peculiar path syntax applies only to these two environment variables. I have asked at the splint mailing list if this is a bug or a feature but I have never get an answer so I have decide not to change this behaviour. E.g. if you want to replace the starting Splint command line like this: splint -I . -I c:\foo -I d:\bar test.c with this sequence: set INCLUDE=.;c:\foo;d:\bar splint test.c splint will always ignore the last directory, d:\bar in this case, because the INCLUDE environment variable has not been terminated with a trailing semicolon. It must look like this: set INCLUDE=.;c:\foo;d:\bar; Note the trailing semicolon. This is even true if only one *single* path is stored in the variable. E.g.: splint -I c:\foo test.c can be replaced by: set INCLUDE=c:\foo; splint test.c These are user visible changes: - The required temporary files that are created during the processing of the source files are stored in a directory determinated by the environment variables TEMP, TMP or TMPDIR, in that order. Before trying to use the directory that is pointed by one of the environment variables, Splint will check that that particular directory is really accessible. If this is not the case the directory determinated by the value of P_tmpdir will be used as temporary directory. - The name of the special file "lex.yy.c" honoured depends of if LFN is available at run time or not. If LFN support is available the file name "lex.yy.c" will be used. If LFN is not available at run time the standard DOS name "lexyy.c" will be used instead. - The name of the configuration files honoured depends of if LFN is available at run time or not. If LFN support is available the file name ".splintrc" and ".lclintrc" will be used. If LFN is not available at run time "splint.rc" and "lclint.rc" will be used instead. The files are expected to be stored in the $HOME directory or in the current working directory. - To avoid a name clash between the support libraries standard.lcd and standardstrict.lcd, the last one has been renamed to stdstrict.lcd. That name will be used no matter if LFN support is available or not. Because some functions like snprintf are not available on DJGPP 2.03, this port can only be compiled with DJGPP 2.04. There will be no DJGPP 2.03 version of this port. To compile the sources you will need LFN support. If you decide to modify the different parsers you will need bison and flex. To avoid that the configuration process reflects the paths of my DJGPP installation tree in the default values for DEFAULT_LCLIMPORTDIR and DEFAULT_LARCHPATH, the distributed sources will not be preconfigured. To run the testsuite you will need diffutils. As usual all the changes to the sources are documented in the djgpp/diffs file. Please **read** the docs stored in /gnudocs/splint-3.1-2. Please note that I am not a splint user so I cannot give any assistance concerning the use of this program. Please note also that the authors and maintainers of Splint are still not aware of any changes I have done to the sources, so you cannot expect assistance from them concerning the use of this port. Every failure that may seen have it origen in file handling is very likely a bug in the port and must be reported to me and not to the splint maintainers. The port consists of the two packages that have been compiled using djdev204 and can be downloaded from ftp.delorie.com and mirrors as (timestamp 2008-02-20): Splint 3.1.2 binary, pdf, html and man format documentation: ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/spl312br4.zip Splint 3.1.2 source: ftp://ftp.delorie.com/pub/djgpp/beta/v2tk/spl312sr4.zip Send splint specific bug reports to . Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Happy testing. Guerrero, Juan Manuel