/*
-** LCLint - annotation-assisted static program checker
+** Splint - annotation-assisted static program checker
** Copyright (C) 1994-2001 University of Virginia,
** Massachusetts Institute of Technology
**
**
** For information on lclint: lclint-request@cs.virginia.edu
** To report a bug: lclint-bug@cs.virginia.edu
-** For more information: http://lclint.cs.virginia.edu
+** For more information: http://www.splint.org
*/
/*
** lcllib.c
# include "lclintMacros.nf"
# include "llbasic.h"
-
# include "osd.h"
# ifndef NOLCL
# include "lclscan.h"
# endif
-
-# include "herald.h"
# include "lcllib.h"
# include "llmain.h"
# include "portab.h"
/*@-incondefs@*/ /*@-redecl@*/
-extern /*@open@*/ /*@dependent@*/ FILE *yyin;
+extern /*:open:*/ /*@dependent@*/ FILE *yyin;
/*@=incondefs@*/ /*@=redecl@*/
/*@constant int NUMLIBS; @*/
# define NUMLIBS 17
/*@constant int NUMPOSIXLIBS; @*/
-# define NUMPOSIXLIBS 12
+# define NUMPOSIXLIBS 18
static ob_mstring posixlibs[NUMPOSIXLIBS] =
{
- "sys/stat",
- "sys/types",
"dirent",
"fcntl",
"grp",
"pwd",
+ "regex",
+ "sys/stat",
"sys/times",
+ "sys/types",
+ "netdb", /* unix */
+ "netinet/in", /* unix */
+ "sys/resource", /* unix */
+ "sys/socket", /* not posix */
+ "sys/syslog", /* not posix */
"sys/utsname",
"sys/wait",
"termios",
llassert (cstring_isDefined (sname));
xname = fileLib_withoutExtension (sname, cstring_makeLiteralTemp (".h"));
+ DPRINTF (("Include? %s", sname));
+
/*@access cstring@*/
llassert (cstring_isDefined (xname));
libname = strrchr (xname, CONNECTCHAR);
voptgenerror
(FLG_USEVARARGS,
- message ("Include file <%s> is inconsistent with "
+ message ("Include file <%s.h> is inconsistent with "
"ANSI library (should use <stdarg.h>)",
cstring_fromChars (libname)),
tmp);
fileloc_free (tmp);
- sfree (xname);
+ cstring_free (xname);
return TRUE;
}
{
if (context_getFlag (FLG_SKIPPOSIXHEADERS))
{
- sfree (xname);
+ cstring_free (xname);
return TRUE;
}
}
voptgenerror
(FLG_WARNPOSIX,
- message ("Include file <%s> matches the name of a "
+ message ("Include file <%s.h> matches the name of a "
"POSIX library, but the POSIX library is "
"not being used. Consider using +posixlib "
"or +posixstrictlib to select the POSIX "
FILE *f;
cstring fname = fileLib_addExtension (cfname, cstring_makeLiteralTemp (DUMP_SUFFIX));
- f = fopen (cstring_toCharsSafe (fname), "w");
+ f = fileTable_openFile (context_fileTable (), fname, "w");
if (context_getFlag (FLG_SHOWSCAN))
{
if (f == NULL)
{
- llgloberror (message ("Cannot open dump file for writing: %s", fname));
+ lldiagmsg (message ("Cannot open dump file for writing: %s", fname));
}
else
{
** Be careful, these lines must match loadLCDFile checking.
*/
- fprintf (f, ";;LCLint Dump: %s\n", cstring_toCharsSafe (fname));
- fprintf (f, ";;%s\n", LCL_VERSION);
+ fprintf (f, "%s %s\n", LIBRARY_MARKER, cstring_toCharsSafe (fname));
+ fprintf (f, ";;%s\n", SPLINT_VERSION);
fprintf (f, ";;lib:%d\n", (int) context_getLibrary ());
fprintf (f, ";;ctTable\n");
fprintf (f, ";; Modules access\n");
context_dumpModuleAccess (f);
fprintf (f, ";;End\n");
- check (fclose (f) == 0);
+ check (fileTable_closeFile (context_fileTable (), f));
}
if (context_getFlag (FLG_SHOWSCAN))
}
else
{
- stdlib = fopen (cstring_toCharsSafe (fpath), "r");
+ stdlib = fileTable_openFile (context_fileTable (), fpath, "r");
if (stdlib == NULL)
{
sfree (ot);
- check (fclose (stdlib) == 0);
- stdlib = fopen (cstring_toCharsSafe (fpath), "r");
+ check (fileTable_closeFile (context_fileTable (), stdlib));
+ stdlib = fileTable_openFile (context_fileTable (), fpath, "r");
}
llassert (stdlib != NULL);
result = loadLCDFile (stdlib, fpath);
}
- check (fclose (stdlib) == 0);
+ check (fileTable_closeFile (context_fileTable (), stdlib));
}
}
*/
if (reader_readLine (f, buf, BUFLEN) == NULL
- || !mstring_equalPrefix (buf, ";;LCLint Dump:"))
+ || !mstring_equalPrefix (buf, LIBRARY_MARKER))
{
- loadllmsg (message ("Load library %s is not in LCLint library format. Attempting "
+ loadllmsg (message ("Load library %s is not in Splint library format. Attempting "
"to continue without library.", name));
return FALSE;
}
{
if (!mstring_equalPrefix (buf, ";;"))
{
- loadllmsg (message ("Load library %s is not in LCLint library format. Attempting "
+ loadllmsg (message ("Load library %s is not in Splint library format. Attempting "
"to continue without library.", name));
return FALSE;
}
else if (mstring_equalPrefix (buf, ";;ctTable"))
{
- loadllmsg (message ("Load library %s is in obsolete LCLint library format. Attempting "
+ loadllmsg (message ("Load library %s is in obsolete Splint library format. Attempting "
"to continue anyway, but results may be incorrect. Rebuild "
"the library with this version of lclint.",
name));
{
float version = 0.0;
- if (sscanf (buf, ";;LCLint %f", &version) != 1)
+ if (sscanf (buf, ";;Splint %f", &version) != 1
+ && (sscanf (buf, ";;LCLint %f", &version) != 1))
{
- loadllmsg (message ("Load library %s is not in LCLint library format (missing version "
+ loadllmsg (message ("Load library %s is not in Splint library format (missing version "
"number). Attempting "
"to continue without library.", name));
return FALSE;
{
if (reader_readLine (f, buf, BUFLEN) == NULL)
{
- loadllmsg (message ("Load library %s is not in LCLint library "
+ loadllmsg (message ("Load library %s is not in Splint library "
"format (missing library code). Attempting "
"to continue without library.", name));
return FALSE;
if (sscanf (buf, ";;lib:%d", &lib) != 1)
{
- loadllmsg (message ("Load library %s is not in LCLint library "
+ loadllmsg (message ("Load library %s is not in Splint library "
"format (missing library code). Attempting "
"to continue without library.", name));
return FALSE;
}
else
{
- loadllmsg (message ("Load library %s is not in LCLint library format (missing lines). "
+ loadllmsg (message ("Load library %s is not in Splint library format (missing lines). "
"Attempting to continue without library.", name));
return FALSE;
}
FILE *f;
cstring fname = fileLib_addExtension (cfname, cstring_makeLiteralTemp (DUMP_SUFFIX));
- f = fopen (cstring_toCharsSafe (fname), "r");
+ f = fileTable_openFile (context_fileTable (), fname, "r");
if (f == NULL)
{
}
}
- check (fclose (f) == 0);
+ check (fileTable_closeFile (context_fileTable (), f));
}
/* usymtab_printAll (); */