/*
-** 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
*/
/*
** general.c
*/
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
# include "basic.h"
+
# undef malloc
# undef realloc
# undef calloc
# include "dmalloc.h"
# endif
-# include "portab.h"
+# include "osd.h"
/*
** redefine undef'd memory ops
}
/*@out@*/ void *dimalloc (size_t size, const char *name, int line)
+ /*@ensures maxSet(result) == (size - 1); @*/
{
/*
static void *lastaddr = 0;
{
if (size == 0)
{
- llbug (message ("Zero allocation at %q.",
- fileloc_unparseRaw (cstring_fromChars (name), line)));
+ llcontbug (message ("Zero allocation at %q.",
+ fileloc_unparseRaw (cstring_fromChars (name), line)));
+
+ /*
+ ** evans 2002-03-01
+ ** Return some allocated storage...hope we get lucky.
+ */
+
+ return dimalloc (16, name, line);
}
else
{
/*@=mustdefine@*/
-# ifndef NOLCL
-char *FormatInt (int i)
-{
- char temp[255]; /* assume the integer has at most 254 digits */
- char *outs;
-
- sprintf (temp, "%i", i);
- outs = (char *) dmalloc (sizeof (*outs) * (1 + strlen (temp)));
- strcpy (outs, temp);
-
- return (outs);
-}
-# endif
-
-# ifndef NOLCL
bool firstWord (char *s, char *w)
{
llassert (s != NULL);
}
return TRUE;
}
-# endif
void mstring_markFree (char *s)
{
return FALSE;
}
}
+
+bool mstring_containsString (const char *s, const char *c)
+{
+ if (mstring_isDefined (s))
+ {
+ return (strstr (s, c) != NULL);
+ }
+ else
+ {
+ return FALSE;
+ }
+}
char *mstring_concat (const char *s1, const char *s2)
{
}
extern
-char *mstring_copy (char *s1)
+char *mstring_copy (char *s1) /*@ensures maxRead(result) == maxRead(s1) /\ maxSet(result) == maxSet(s1) @*/
{
if (s1 == NULL)
{
}
extern
-char *mstring_create (int n)
+char *mstring_create (size_t n)
{
char *s;
check (fputc ('\n', out) == (int) '\n');
}
+unsigned int int_toNonNegative (int x) /*@*/
+{
+ llassert (x >= 0);
+ return (unsigned) x;
+}
+
int int_log (int x)
{
int ret = 1;
return (long unsigned) x;
}
-size_t size_fromInt (int x)
+size_t size_fromInt (int x) /*@ensures result==x@*/
{
size_t res = (size_t) x;
return res;
}
+size_t size_fromLong (long x) /*@ensures result==x@*/
+{
+ size_t res = (size_t) x;
+
+ llassert ((long) res == x);
+ return res;
+}
+
+size_t size_fromLongUnsigned (unsigned long x) /*@ensures result==x@*/
+{
+ size_t res = (size_t) x;
+
+ llassert ((unsigned long) res == x);
+ return res;
+}
+
int size_toInt (size_t x)
{
int res = (int) x;
char
char_fromInt (int x)
{
- llassert ((x >= (int)'\0') && (x <= (int)'~'));
+ /*
+ ** evans 2001-09-28 - changed assertion in response to Anthony Giorgio's comment
+ ** that the old assertions failed for EBCDIC character set. Now we just check
+ ** that the result is equal.
+ */
- return ((char) x);
+ char res = (char) x;
+ llassert ((int) res == x);
+ return res;
}
/*@-czechfcns@*/