]> andersk Git - splint.git/blobdiff - src/lcllib.c
Fixed branch state bug with definitely null values (reported by Jon Wilson).
[splint.git] / src / lcllib.c
index 6ff82e484a304edd529d4ccc75649ffa9b13cb2c..5bc00e2bc479ef46ecefcd9a369edfb14aaf3f1b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-** LCLint - annotation-assisted static program checker
+** Splint - annotation-assisted static program checker
 ** Copyright (C) 1994-2001 University of Virginia,
 **         Massachusetts Institute of Technology
 **
@@ -19,7 +19,7 @@
 **
 ** 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
@@ -33,7 +33,6 @@
 
 # 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",
@@ -109,6 +112,8 @@ lcllib_isSkipHeader (cstring sname)
   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);
@@ -131,13 +136,13 @@ lcllib_isSkipHeader (cstring sname)
       
       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;
     }
 
@@ -193,7 +198,7 @@ lcllib_isSkipHeader (cstring sname)
        {
          if (context_getFlag (FLG_SKIPPOSIXHEADERS))
            {
-             sfree (xname);
+             cstring_free (xname);
              return TRUE;
            }
        }
@@ -203,7 +208,7 @@ lcllib_isSkipHeader (cstring sname)
          
          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 "
@@ -237,7 +242,7 @@ dumpState (cstring cfname)
   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))
     {
@@ -246,7 +251,7 @@ dumpState (cstring cfname)
   
   if (f == NULL)
     {
-      llgloberror (message ("Cannot open dump file for writing: %s", fname));
+      lldiagmsg (message ("Cannot open dump file for writing: %s", fname));
     }
   else
     {
@@ -269,8 +274,8 @@ dumpState (cstring cfname)
       ** 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");
       
@@ -293,7 +298,7 @@ dumpState (cstring cfname)
       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))
@@ -325,7 +330,7 @@ loadStandardState ()
     }
   else
     {
-      stdlib = fopen (cstring_toCharsSafe (fpath), "r");
+      stdlib = fileTable_openFile (context_fileTable (), fpath, "r");
 
       if (stdlib == NULL)
        {
@@ -374,8 +379,8 @@ loadStandardState ()
 
              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);
@@ -397,7 +402,7 @@ loadStandardState ()
              result = loadLCDFile (stdlib, fpath);
            }
 
-         check (fclose (stdlib) == 0);
+         check (fileTable_closeFile (context_fileTable (), stdlib));
        }
     }
 
@@ -418,9 +423,9 @@ loadLCDFile (FILE *f, cstring name)
   */
 
   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;
     }
@@ -429,13 +434,13 @@ loadLCDFile (FILE *f, cstring name)
     {
       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));
@@ -444,9 +449,10 @@ loadLCDFile (FILE *f, cstring 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;
@@ -472,7 +478,7 @@ loadLCDFile (FILE *f, cstring name)
                {
                  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;
@@ -483,7 +489,7 @@ loadLCDFile (FILE *f, cstring name)
                      
                      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;
@@ -516,7 +522,7 @@ loadLCDFile (FILE *f, cstring name)
     }
   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;
     }
@@ -546,7 +552,7 @@ loadState (cstring cfname)
   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)
     {
@@ -569,7 +575,7 @@ loadState (cstring cfname)
            }
        }
       
-      check (fclose (f) == 0);
+      check (fileTable_closeFile (context_fileTable (), f));
     }
 
   /* usymtab_printAll (); */
This page took 0.068095 seconds and 4 git commands to generate.