/*
** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** 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 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)
{
static cstring slovakPrefix (cstring name)
{
- int i = 0;
+ size_t i = 0;
cstring_chars (name, c)
{
}
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)
{
** No file scope checks (yet)
*/
- /*@i423 add a file scope naming convention policy? */
+ /* add a file scope naming convention policy? */
return;
}
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",
{
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';
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)",
&& (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 "
|| 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));
}
&& (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));
}
|| (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;
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)));
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));
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));
}
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));
}
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));
}
}
}
-
-
-
-/*@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 */