]> andersk Git - splint.git/blobdiff - src/nameChecks.c
Fixed all /*@i...@*/ tags (except 1).
[splint.git] / src / nameChecks.c
index e6bfe8697267780e2c1c5b9bcdb763acfad21668..20e8fa5245eb9c978dce80829dbcf04ca5472f3f 100644 (file)
@@ -1,6 +1,6 @@
 /*
-** LCLint - annotation-assisted static program checker
-** Copyright (C) 1994-2001 University of Virginia,
+** Splint - annotation-assisted static program checker
+** Copyright (C) 1994-2003 University of Virginia,
 **         Massachusetts Institute of Technology
 **
 ** This program is free software; you can redistribute it and/or modify it
 ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 ** MA 02111-1307, USA.
 **
-** 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 information on splint: info@splint.org
+** To report a bug: splint-bug@splint.org
+** For more information: http://www.splint.org
 */
 /*
 ** nameChecks.c
 */
 
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
 # include "basic.h"
 # include "nameChecks.h"
 
 static bool checkCzechName (uentry p_ue, flagcode p_czechflag, bool p_report)
-  /*@modifies p_ue, g_msgstream@*/ ;
+  /*@modifies p_ue, g_warningstream@*/ ;
 
 static bool checkSlovakName (uentry p_ue, flagcode p_slovakflag, bool p_report)
-  /*@modifies p_ue, g_msgstream@*/ ;
+  /*@modifies p_ue, g_warningstream@*/ ;
 
 static cstring czechPrefix (cstring name)
 {
@@ -42,7 +42,7 @@ static cstring czechPrefix (cstring name)
 
 static cstring slovakPrefix (cstring name)
 {
-  int i = 0;
+  size_t i = 0;
 
   cstring_chars (name, c)
     {
@@ -119,9 +119,9 @@ static bool matchPrefix (cstring name, cstring prefix)
     }
   else
     {
-      int namelen = cstring_length (name);
+      size_t namelen = cstring_length (name);
       int last = (int) '\0';
-      int n = 1;
+      size_t n = 1;
 
       cstring_chars (prefix, pc)
        {
@@ -1124,7 +1124,7 @@ checkFileScopeName (/*@unused@*/ uentry ue)
   ** No file scope checks (yet)
   */
 
-  /*@i423 add a file scope naming convention policy? */
+  /* add a file scope naming convention policy? */
 
   return;
 }
@@ -1150,7 +1150,7 @@ checkCppName (uentry ue)
   static ob_mstring cppNames[NCPPNAMES] =
     {
       "and", "and_eq", "asm", 
-      "bitand", "bitor", "bool", /* gasp: "bool", is special for lclint */
+      "bitand", "bitor", "bool", /* gasp: "bool", is special for splint */
       "catch", "class", "compl", "const_class",
       "delete", "dynamic_cast", "false", "friend",
       "inline", "mutable", "namespace", "new",
@@ -1181,7 +1181,7 @@ checkAnsiName (uentry ue)
 {
   bool hasError = FALSE;
   cstring name = uentry_observeRealName (ue);
-  int length = cstring_length (name);
+  size_t length = cstring_length (name);
   char fchar = (length >= 1) ? cstring_firstChar (name) : '\0';
   char schar = (length >= 2) ? cstring_secondChar (name) : '\0';
   char tchar = (length >= 3) ? cstring_getChar (name, 3) : '\0';
@@ -1231,19 +1231,19 @@ checkAnsiName (uentry ue)
                                          NRESERVEDNAMES)))
     {
       hasError |= optgenerror2
-       (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+       (FLG_ISORESERVED, FLG_NAMECHECKS,
         message ("Name %s is reserved for the standard library",
                  name),
         uentry_whereLast (ue));
     }
 
   if (uentry_isFileStatic (ue) || uentry_isVisibleExternally (ue) || uentry_isAnyTag (ue)
-      || context_getFlag (FLG_ANSIRESERVEDLOCAL))
+      || context_getFlag (FLG_ISORESERVEDLOCAL))
     {
       if (fchar == '_')
        {
          hasError |= optgenerror2
-           (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+           (FLG_ISORESERVED, FLG_NAMECHECKS,
             message 
             ("Name %s is in the implementation name space (any identifier "
              "beginning with underscore)", 
@@ -1263,7 +1263,7 @@ checkAnsiName (uentry ue)
          && (schar == '_' || isupper ((int) schar)))
        {
          hasError |= optgenerror2
-           (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+           (FLG_ISORESERVED, FLG_NAMECHECKS,
             message 
             ("Name %s is in the implementation name space (any identifier "
              "beginning with underscore and either an uppercase letter or "
@@ -1283,11 +1283,11 @@ checkAnsiName (uentry ue)
                       || isupper ((int) schar)))
     {
       hasError |= optgenerror2
-       (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+       (FLG_ISORESERVED, FLG_NAMECHECKS,
         message 
-        ("Name %s is reserved for future ANSI library extensions. "
+        ("Name %s is reserved for future library extensions. "
          "Macros beginning with E and a digit or uppercase letter "
-         "may be added to <errno.h>. (See ANSI, Section 4.13.1)",
+         "may be added to <errno.h>. (ISO99:7.26.3)",
          name),
         uentry_whereLast (ue));
     }
@@ -1305,11 +1305,11 @@ checkAnsiName (uentry ue)
       && (isupper ((int) rchar)))
     {
       hasError |= optgenerror2
-       (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+       (FLG_ISORESERVED, FLG_NAMECHECKS,
         message
-        ("Name %s is reserved for future ANSI library extensions.  "
+        ("Name %s is reserved for future library extensions.  "
          "Macros beginning with \"LC_\" and an uppercase letter may "
-         "be added to <locale.h>. (See ANSI, Section 4.13.3)",
+         "be added to <locale.h>. (ISO99:7.26.5)",
          name),
         uentry_whereLast (ue));
     }
@@ -1326,20 +1326,33 @@ checkAnsiName (uentry ue)
               || (isupper ((int) rchar))))
     {
       hasError |= optgenerror2
-       (FLG_ANSIRESERVED, FLG_NAMECHECKS,
+       (FLG_ISORESERVED, FLG_NAMECHECKS,
         message
-        ("Name %s is reserved for future ANSI library extensions.  "
+        ("Name %s is reserved for future library extensions.  "
          "Macros that begin with SIG and an uppercase letter or SIG_ "
          "and an uppercase letter may be added to "
-         "<signal.h>. (See ISO99 7.14 or ANSI 4.13.5)",
+         "<signal.h>. (ISO99:7.14)",
          name),
         uentry_whereLast (ue));
     }
 
-  DPRINTF (("Here..."));
+  /*
+  ** evans - 2002-12-16: added this check (even though it is not required by ISO)
+  */
+
+  if (fchar == 'S' && schar == 'A' && tchar == '_')
+    {
+      hasError |= optgenerror2
+       (FLG_ISORESERVED, FLG_NAMECHECKS,
+        message 
+        ("Name %s may be defined as a macro by Linux library. "
+         "It is not research by the ISO specification, but may produce conflicts on some systems.",
+         name),
+        uentry_whereLast (ue));
+    }
 
   if ((uentry_isVisibleExternally (ue) && !uentry_isAnyTag (ue))
-      || context_getFlag (FLG_ANSIRESERVEDLOCAL))
+      || context_getFlag (FLG_ISORESERVEDLOCAL))
     {
       flagcode flg;
 
@@ -1347,13 +1360,15 @@ checkAnsiName (uentry ue)
 
       if (uentry_isVisibleExternally (ue) && !uentry_isAnyTag (ue))
        {
-         flg = FLG_ANSIRESERVED;
+         flg = FLG_ISORESERVED;
        }
       else
        {
-         flg = FLG_ANSIRESERVEDLOCAL;
+         flg = FLG_ISORESERVEDLOCAL;
        }
 
+      DPRINTF (("ue: %s", uentry_unparseFull (ue)));
+
       /*
       ** These restrictions only apply to identifiers with global linkage.
       */
@@ -1371,9 +1386,9 @@ checkAnsiName (uentry ue)
          hasError |= optgenerror2
            (flg, FLG_NAMECHECKS,
             message
-            ("Name %s is reserved for future ANSI library extensions.  "
+            ("Name %s is reserved for future library extensions.  "
              "Functions beginning with \"is\" or \"to\" and a lowercase "
-             "letter may be added to <ctype.h>. (See ANSI, Section 4.13.2)",
+             "letter may be added to <ctype.h>. (ISO99:7.26.2)",
              name),
             uentry_whereLast (ue));
 
@@ -1423,9 +1438,9 @@ checkAnsiName (uentry ue)
          hasError |= optgenerror2
            (flg, FLG_NAMECHECKS,
             message
-            ("Name %s is reserved for future ANSI library extensions.  "
+            ("Name %s is reserved for future library extensions.  "
              "The names of all existing functions in <math.h> suffixed "
-             "with 'f' or 'l' may be added to <math.h>. (See ANSI, Section 4.13.4)",
+             "with 'f' or 'l' may be added to <math.h>. (ISO:7.26.1)",
              name),
             uentry_whereLast (ue));
        }
@@ -1448,9 +1463,9 @@ checkAnsiName (uentry ue)
          hasError |= optgenerror2
            (flg, FLG_NAMECHECKS,
             message
-            ("Name %s is reserved for future ANSI library extensions.  "
+            ("Name %s is reserved for future library extensions.  "
              "Functions that begin with \"str\" and a lowercase letter "
-             "may be added to <stdlib.h> or <string.h>. (See ANSI, Section 4.13.7)",
+             "may be added to <stdlib.h> or <string.h>. (ISO99:7.26.9)",
              name),
             uentry_whereLast (ue));
        }
@@ -1470,9 +1485,9 @@ checkAnsiName (uentry ue)
          hasError |= optgenerror2
            (flg, FLG_NAMECHECKS,
             message
-            ("Name %s is reserved for future ANSI library extensions.  "
+            ("Name %s is reserved for future library extensions.  "
              "Functions that begin with \"mem\" or \"wcs\" and a "
-             "lowercase letter letter may be added to <string.h>. (See ANSI, Section 4.13.8)",
+             "lowercase letter letter may be added to <string.h>. (ISO:7.26.11)",
              name),
             uentry_whereLast (ue));
        }
@@ -1540,7 +1555,4 @@ void checkParamNames (uentry ue)
     }
 }
 
-
-
-
-/*@i523 POSIX p. 527 - applications should not declare any symbols that end _MAX @*/
+/* not yet checked: POSIX p. 527 - applications should not declare any symbols that end _MAX */
This page took 0.071383 seconds and 4 git commands to generate.