Splint fiddles.
authorjbj <devnull@localhost>
Thu, 27 May 2004 20:16:55 +0000 (20:16 +0000)
committerjbj <devnull@localhost>
Thu, 27 May 2004 20:16:55 +0000 (20:16 +0000)
CVS patchset: 7256
CVS date: 2004/05/27 20:16:55

rpmio/sexp/.splintrc
rpmio/sexp/sexp-basic.c
rpmio/sexp/sexp-input.c
rpmio/sexp/sexp-main.c
rpmio/sexp/sexp-output.c
rpmio/sexp/sexp.h

index cade55d..6e53291 100644 (file)
 -ifempty
 -infloopsuncon
 -internalglobs
--mods
 -noeffect
 -noeffectuncon
--nullpass
--nullret
+#-nullpass
 -nullstate
 -paramuse
 -readonlytrans
index a833f98..e0a1fd9 100644 (file)
@@ -46,7 +46,9 @@ void initializeMemory(void)
 char *sexpAlloc(int n)\r
 { char *c = (char *)malloc((unsigned int) n);\r
   if (c == NULL) ErrorMessage(ERROR,"Error in sexpAlloc: out of memory!",0,0);\r
-  return(c);\r
+/*@-nullret@*/\r
+  return c;\r
+/*@=nullret@*/\r
 }\r
 \r
 /***********************************/\r
@@ -60,24 +62,24 @@ char *sexpAlloc(int n)
 sexpSimpleString *newSimpleString(void)\r
 {\r
   sexpSimpleString *ss;\r
-  ss = (sexpSimpleString *) sexpAlloc(sizeof(sexpSimpleString));\r
+  ss = (sexpSimpleString *) sexpAlloc(sizeof(*ss));\r
   ss->length = 0;\r
   ss->allocatedLength = 16;\r
   ss->string = (octet *)sexpAlloc(16);\r
-  return(ss);\r
+  return ss;\r
 }\r
                              \r
 /* simpleStringLength(ss)\r
  * returns length of simple string \r
  */\r
 long int simpleStringLength(sexpSimpleString *ss)\r
-{ return(ss->length); }\r
+{ return ss->length; }\r
 \r
 /* simpleStringString(ss)\r
  * returns pointer to character array of simple string \r
  */\r
 octet *simpleStringString(sexpSimpleString *ss)\r
-{ return(ss->string); }\r
+{ return ss->string; }\r
 \r
 /* reallocateSimpleString(ss)\r
  * Changes space allocated to ss.\r
@@ -87,7 +89,10 @@ sexpSimpleString *reallocateSimpleString(sexpSimpleString *ss)
 {\r
   int newsize, i;\r
   octet *newstring;\r
-  if (ss==NULL) ss = newSimpleString();\r
+  if (ss == NULL) {\r
+    ss = newSimpleString();\r
+    if (ss == NULL) return NULL;\r
+  }\r
   if (ss->string == NULL) \r
     ss->string = (octet *)sexpAlloc(16);\r
   else\r
@@ -101,7 +106,7 @@ sexpSimpleString *reallocateSimpleString(sexpSimpleString *ss)
       ss->string = newstring;\r
       ss->allocatedLength = newsize;\r
     }\r
-  return(ss);\r
+  return ss;\r
 }\r
 \r
 /* appendCharToSimpleString(c,ss)\r
@@ -110,11 +115,16 @@ sexpSimpleString *reallocateSimpleString(sexpSimpleString *ss)
  */\r
 void appendCharToSimpleString(int c, sexpSimpleString *ss)\r
 {\r
-  if (ss==NULL) ss = newSimpleString();\r
+  if (ss==NULL) {\r
+    ss = newSimpleString();\r
+    if (ss == NULL) return;\r
+  }\r
   if (ss->string == NULL || ss->length == ss->allocatedLength )\r
     ss = reallocateSimpleString(ss);\r
-  ss->string[ss->length] = (octet) (c & 0xFF);\r
-  ss->length++;\r
+  if (ss != NULL && ss->string != NULL) {\r
+    ss->string[ss->length] = (octet) (c & 0xFF);\r
+    ss->length++;\r
+  }\r
 }\r
 \r
 /****************************/\r
@@ -132,14 +142,14 @@ sexpString *newSexpString(void)
   s->type = SEXP_STRING;\r
   s->presentationHint = NULL;\r
   s->string = NULL;\r
-  return(s);\r
+  return s;\r
 }\r
 \r
 /* sexpStringPresentationHint()\r
  * returns presentation hint field of the string \r
  */\r
 sexpSimpleString *sexpStringPresentationHint(sexpString *s)\r
-{ return(s->presentationHint); }\r
+{ return s->presentationHint; }\r
 \r
 /* setSexpStringPresentationHint()\r
  * assigns the presentation hint field of the string\r
@@ -157,7 +167,7 @@ void setSexpStringString(sexpString *s, sexpSimpleString *ss)
  * returns the string field of the string\r
  */\r
 sexpSimpleString *sexpStringString(sexpString *s)\r
-{ return(s->string); }\r
+{ return s->string; }\r
 \r
 /* closeSexpString()\r
  * finish up string computations after created \r
@@ -181,7 +191,7 @@ sexpList *newSexpList(void)
   list->type = SEXP_LIST;\r
   list->first = NULL;\r
   list->rest = NULL;\r
-  return(list);\r
+  return list;\r
 }\r
 \r
 /* sexpAddSexpListObject()\r
@@ -191,12 +201,13 @@ void sexpAddSexpListObject(sexpList *list, sexpObject *object)
 {\r
   if (list->first == NULL)\r
     list->first = object;\r
-  else\r
-    { while (list->rest != NULL) list = list->rest;\r
-      list->rest = newSexpList();\r
+  else {\r
+    while (list->rest != NULL)\r
       list = list->rest;\r
+    list->rest = newSexpList();\r
+    if ((list = list->rest) != NULL)\r
       list->first = object;\r
-    }\r
+  }\r
 }\r
 \r
 /* closeSexpList()\r
@@ -214,22 +225,22 @@ void closeSexpList(sexpList *list)
  * return the iterator for going over a list \r
  */\r
 sexpIter *sexpListIter(sexpList *list)\r
-{ return((sexpIter *)list); }\r
+{ return (sexpIter *)list; }\r
 \r
 /* sexpIterNext()\r
  * advance iterator to next element of list, or else return null\r
  */\r
 sexpIter *sexpIterNext(sexpIter *iter)\r
-{ if (iter == NULL) return(NULL);\r
-  return((sexpIter *)(((sexpList *)iter)->rest));\r
+{ if (iter == NULL) return NULL;\r
+  return (sexpIter *)(((sexpList *)iter)->rest);\r
 }\r
 \r
 /* sexpIterObject ()\r
  * return object corresponding to current state of iterator\r
  */\r
 sexpObject *sexpIterObject(sexpIter *iter)\r
-{ if (iter == NULL) return(NULL);\r
-  return(((sexpList *)iter)->first);\r
+{ if (iter == NULL) return NULL;\r
+  return ((sexpList *)iter)->first;\r
 }\r
 \r
 /****************************/\r
@@ -237,11 +248,11 @@ sexpObject *sexpIterObject(sexpIter *iter)
 /****************************/\r
 \r
 int isObjectString(sexpObject *object)\r
-{ if (((sexpString *)object)->type == SEXP_STRING) return(TRUE);\r
-  else                                             return(FALSE);\r
+{ if (((sexpString *)object)->type == SEXP_STRING) return TRUE;\r
+  else                                             return FALSE;\r
 }\r
 \r
 int isObjectList(sexpObject *object)\r
-{ if (((sexpList *)object)->type == SEXP_LIST) return(TRUE);\r
-  else                                         return(FALSE);\r
+{ if (((sexpList *)object)->type == SEXP_LIST) return TRUE;\r
+  else                                         return FALSE;\r
 }\r
index ff1c064..072f378 100644 (file)
@@ -25,6 +25,7 @@ char alpha[256];            /* alpha[c] is true if c is alphabetic A-Z a-z */
 /* initializeCharacterTables\r
  * initializes all of the above arrays\r
  */ \r
+/*@-mods@*/\r
 void initializeCharacterTables(void)\r
 { int i;\r
   for (i=0;i<256;i++) upper[i] = i;\r
@@ -64,6 +65,7 @@ void initializeCharacterTables(void)
   tokenchar['+'] = TRUE;\r
   tokenchar['='] = TRUE;\r
 }\r
+/*@=mods@*/\r
 \r
 /* isWhiteSpace(c)\r
  * Returns TRUE if c is a whitespace character (space, tab, etc. ).\r
@@ -187,7 +189,7 @@ sexpInputStream *newSexpInputStream(void)
   is->bits = 0;\r
   is->nBits = 0;\r
   is->inputFile = stdin;\r
-  return(is);\r
+  return is;\r
 }\r
 \r
 /*****************************************/\r
@@ -245,7 +247,7 @@ sexpObject *scanToEOF(sexpInputStream *is)
       appendCharToSimpleString(is->nextChar,ss);\r
       is->getChar(is);\r
     }\r
-  return((sexpObject *)s);\r
+  return (sexpObject *)s;\r
 }\r
 \r
 /* scanDecimal(is)\r
@@ -260,7 +262,7 @@ unsigned long int scanDecimal(sexpInputStream *is)
       if (i++ > 8)\r
        ErrorMessage(ERROR,"Decimal number %d... too long.",(int)value,0);\r
     }\r
-  return(value);\r
+  return value;\r
 }\r
 \r
 /* scanVerbatimString(is,ss,length)\r
@@ -440,7 +442,7 @@ sexpSimpleString *scanSimpleString(sexpInputStream *is)
                 is->count, is->nextChar );\r
   if (simpleStringLength(ss) == 0)\r
     ErrorMessage(WARNING,"Simple string has zero length.",0,0);\r
-  return(ss);\r
+  return ss;\r
 }\r
 \r
 /* scanString(is)\r
@@ -463,7 +465,7 @@ sexpString *scanString(sexpInputStream *is)
   ss = scanSimpleString(is);\r
   setSexpStringString(s,ss);\r
   closeSexpString(s);\r
-  return(s);\r
+  return s;\r
 }\r
 \r
 /* scanList(is)\r
@@ -489,7 +491,7 @@ sexpList *scanList(sexpInputStream *is)
        { \r
          skipChar(is,')');\r
          closeSexpList(list);\r
-         return(list);\r
+         return list;\r
        }\r
       else \r
         { object = scanObject(is);\r
@@ -511,14 +513,14 @@ sexpObject *scanObject(sexpInputStream *is)
       skipChar(is,'{');              /*   important! */\r
       object = scanObject(is);\r
       skipChar(is,'}');\r
-      return(object);\r
+      return object;\r
     }\r
   else\r
     { if (is->nextChar == '(')\r
        object = (sexpObject *)scanList(is);\r
       else\r
        object = (sexpObject *)scanString(is);\r
-      return(object);\r
+      return object;\r
     }\r
 }\r
 \r
index c9071c7..9a7c8b1 100644 (file)
@@ -8,7 +8,7 @@
 #include <stdlib.h>\r
 #include "sexp.h"\r
 \r
-char *help = \r
+static const char *help = \r
 "The program `sexp' reads, parses, and prints out S-expressions.\n"\r
 " INPUT:\n"\r
 "   Input is normally taken from stdin, but this can be changed:\n"\r
@@ -38,7 +38,12 @@ char *help =
 /*************************************************************************/\r
 /* main(argc,argv)\r
  */\r
+/*@-mods@*/\r
+/*@-nullderef@*/\r
+/*@-nullpass@*/\r
 int main(int argc, char **argv)\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/\r
 { char *c;\r
   int swa = TRUE;\r
   int swb = TRUE;\r
@@ -154,5 +159,8 @@ int main(int argc, char **argv)
       if (!swp) skipWhiteSpace(is);\r
       else if (!swl) { printf("\n"); fflush(stdout); }\r
     }\r
-  return(0);\r
+  return 0;\r
 }\r
+/*@=nullpass@*/\r
+/*@=nullderef@*/\r
+/*@=mods@*/\r
index 3ae20b2..c1dfe03 100644 (file)
@@ -130,7 +130,7 @@ sexpOutputStream *newSexpOutputStream(void)
   os->nBits = 0;\r
   os->outputFile = stdout;\r
   os->mode = CANONICAL;\r
-  return(os);\r
+  return os;\r
 }\r
 \r
 /*******************/\r
@@ -157,11 +157,10 @@ void printDecimal(sexpOutputStream *os, long int n)
  */\r
 void canonicalPrintVerbatimSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
 { \r
-  long int len;\r
+  long int len = simpleStringLength(ss);\r
   long int i;\r
-  octet *c;\r
-  len = simpleStringLength(ss);\r
-  c = simpleStringString(ss);\r
+  octet * c = simpleStringString(ss);\r
+\r
   if (c == NULL) \r
     ErrorMessage(ERROR,"Can't print NULL string verbatim",0,0);\r
   /* print out len: */\r
@@ -177,15 +176,16 @@ void canonicalPrintVerbatimSimpleString(sexpOutputStream *os, sexpSimpleString *
 void canonicalPrintString(sexpOutputStream *os, sexpString *s)\r
 { sexpSimpleString *ph, *ss;\r
   ph = sexpStringPresentationHint(s);\r
-  if (ph != NULL) \r
-    varPutChar(os,'[');\r
-      canonicalPrintVerbatimSimpleString(os,ph);\r
-      varPutChar(os,']');\r
-    }\r
+  if (ph != NULL) {\r
+    varPutChar(os,'[');\r
+    canonicalPrintVerbatimSimpleString(os,ph);\r
+    varPutChar(os,']');\r
+  }\r
   ss = sexpStringString(s);\r
   if (ss == NULL)\r
     ErrorMessage(ERROR,"NULL string can't be printed.",0,0);\r
-  canonicalPrintVerbatimSimpleString(os,ss);\r
+  else\r
+    canonicalPrintVerbatimSimpleString(os,ss);\r
 }\r
 \r
 /* canonicalPrintList(os,list)\r
@@ -196,12 +196,12 @@ void canonicalPrintList(sexpOutputStream *os, sexpList *list)
   sexpObject *object;\r
   varPutChar(os,'(');\r
   iter = sexpListIter(list);\r
-  while (iter != NULL)\r
-    object = sexpIterObject(iter);\r
-      if (object != NULL) \r
-         canonicalPrintObject(os,object);\r
-      iter = sexpIterNext(iter);\r
-    }\r
+  while (iter != NULL) {\r
+    object = sexpIterObject(iter);\r
+    if (object != NULL) \r
+       canonicalPrintObject(os,object);\r
+    iter = sexpIterNext(iter);\r
+  }\r
   varPutChar(os,')');\r
 }\r
 \r
@@ -251,13 +251,14 @@ int canPrintAsToken(sexpOutputStream *os, sexpSimpleString *ss)
   long int len;\r
   len = simpleStringLength(ss);\r
   c = simpleStringString(ss);\r
-  if (len <= 0) return(FALSE);\r
-  if (isDecDigit((int)*c)) return(FALSE);\r
+  if (c == NULL) return FALSE;\r
+  if (len <= 0) return FALSE;\r
+  if (isDecDigit((int)*c)) return FALSE;\r
   if (os->maxcolumn > 0 && os->column + len >= os->maxcolumn)\r
-    return(FALSE);\r
+    return FALSE;\r
   for (i=0;i<len;i++)\r
-    if (!isTokenChar((int)(*c++))) return(FALSE);\r
-  return(TRUE);\r
+    if (!isTokenChar((int)(*c++))) return FALSE;\r
+  return TRUE;\r
 }\r
 \r
 /* advancedPrintTokenSimpleString(os,ss)\r
@@ -280,7 +281,7 @@ void advancedPrintTokenSimpleString(sexpOutputStream *os, sexpSimpleString *ss)
  * Returns length for printing simple string ss as a token \r
  */\r
 int advancedLengthSimpleStringToken(sexpSimpleString *ss)\r
-{ return(simpleStringLength(ss)); }\r
+{ return simpleStringLength(ss); }\r
 \r
 \r
 /* VERBATIM */ \r
@@ -311,7 +312,7 @@ int advancedLengthSimpleStringVerbatim(sexpSimpleString *ss)
 { long int len = simpleStringLength(ss);\r
   int i = 1;\r
   while (len > 9L) { i++; len = len / 10; }\r
-  return(i+1+len);\r
+  return (i+1+len);\r
 }\r
 \r
 /* BASE64 */\r
@@ -361,7 +362,7 @@ void advancedPrintHexSimpleString(sexpOutputStream *os, sexpSimpleString *ss)
  */\r
 int advancedLengthSimpleStringHexadecimal(sexpSimpleString *ss)\r
 { long int len = simpleStringLength(ss);\r
-  return(1+2*len+1);\r
+  return (1+2*len+1);\r
 }\r
 \r
 /* QUOTED STRING */\r
@@ -374,12 +375,13 @@ int canPrintAsQuotedString(sexpSimpleString *ss)
 {\r
   long int i, len;\r
   octet *c = simpleStringString(ss);\r
+  if (c == NULL) return FALSE ;\r
   len = simpleStringLength(ss);\r
-  if (len < 0) return(FALSE);\r
+  if (len < 0) return FALSE;\r
   for (i=0;i<len;i++,c++)\r
     if (!isTokenChar((int)(*c)) && *c != ' ') \r
-      return(FALSE);\r
-  return(TRUE);\r
+      return FALSE;\r
+  return TRUE;\r
 }\r
 \r
 /* advancedPrintQuotedStringSimpleString(os,ss)\r
@@ -410,7 +412,7 @@ void advancedPrintQuotedStringSimpleString(sexpOutputStream *os, sexpSimpleStrin
  */\r
 int advancedLengthSimpleStringQuotedString(sexpSimpleString *ss)\r
 { long int len = simpleStringLength(ss);\r
-  return(1+len+1);\r
+  return (1+len+1);\r
 }\r
 \r
 /* SIMPLE STRING */\r
@@ -446,14 +448,15 @@ void advancedPrintString(sexpOutputStream *os, sexpString *s)
     }\r
   if (ss == NULL)\r
     ErrorMessage(ERROR,"NULL string can't be printed.",0,0);\r
-  advancedPrintSimpleString(os,ss);\r
+  else\r
+    advancedPrintSimpleString(os,ss);\r
 }\r
 \r
 /* advancedLengthSimpleStringBase64(ss)\r
  * Returns length for printing simple string ss as a base64 string\r
  */\r
 int advancedLengthSimpleStringBase64(sexpSimpleString *ss)\r
-{ return(2+4*((simpleStringLength(ss)+2)/3)); }\r
+{ return (2+4*((simpleStringLength(ss)+2)/3)); }\r
 \r
 /* advancedLengthSimpleString(os,ss)\r
  * Returns length of printed image of s\r
@@ -461,15 +464,15 @@ int advancedLengthSimpleStringBase64(sexpSimpleString *ss)
 int advancedLengthSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
 { long int len = simpleStringLength(ss);\r
   if (canPrintAsToken(os,ss)) \r
-    return(advancedLengthSimpleStringToken(ss));\r
+    return advancedLengthSimpleStringToken(ss);\r
   else if (canPrintAsQuotedString(ss))\r
-    return(advancedLengthSimpleStringQuotedString(ss));\r
+    return advancedLengthSimpleStringQuotedString(ss);\r
   else if (len <= 4 && os->byteSize == 8) \r
-    return(advancedLengthSimpleStringHexadecimal(ss));\r
+    return advancedLengthSimpleStringHexadecimal(ss);\r
   else if (os->byteSize == 8)\r
-    return(advancedLengthSimpleStringBase64(ss));\r
+    return advancedLengthSimpleStringBase64(ss);\r
   else \r
-    return(0);  /* an error condition */\r
+    return 0;  /* an error condition */\r
 }\r
 \r
 /* advancedLengthString(os,s)\r
@@ -483,7 +486,7 @@ int advancedLengthString(sexpOutputStream *os, sexpString *s)
     len += 2+advancedLengthSimpleString(os,ph);\r
   if (ss != NULL)\r
     len += advancedLengthSimpleString(os,ss);\r
-  return(len);\r
+  return len;\r
 }\r
 \r
 /* advancedLengthList(os,list)\r
@@ -506,7 +509,7 @@ int advancedLengthList(sexpOutputStream *os, sexpList *list)
        }\r
       iter = sexpIterNext(iter);\r
     }\r
-  return(len+1);  /* for final paren */\r
+  return len+1;  /* for final paren */\r
 }\r
 \r
 /* advancedPrintList(os,list)\r
index 10f7a06..08d88bd 100644 (file)
@@ -28,13 +28,16 @@ typedef unsigned char octet;
 typedef struct sexp_simplestring { \r
   long int length;\r
   long int allocatedLength;\r
+/*@null@*/\r
   octet *string;\r
 } sexpSimpleString;\r
 \r
 /* sexpString */\r
 typedef struct sexp_string {\r
   int type;\r
+/*@null@*/\r
   sexpSimpleString *presentationHint;\r
+/*@null@*/\r
   sexpSimpleString *string;\r
 } sexpString;\r
 \r
@@ -42,7 +45,9 @@ typedef struct sexp_string {
 /* If first is NULL, then rest must also be NULL; this is empty list */\r
 typedef struct sexp_list {  \r
   char type;\r
+/*@null@*/\r
   union sexp_object *first;\r
+/*@null@*/\r
   struct sexp_list  *rest;\r
 } sexpList;\r
 \r
@@ -87,43 +92,57 @@ typedef struct sexp_outputstream {
 \r
 /* sexp-basic */\r
 void ErrorMessage(int level, const char *msg, int c1, int c2)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 void initializeMemory(void)\r
        /*@*/;\r
 char *sexpAlloc(int n)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 sexpSimpleString *newSimpleString(void)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 long int simpleStringLength(sexpSimpleString *ss)\r
        /*@*/;\r
+/*@null@*/\r
 octet *simpleStringString(sexpSimpleString *ss)\r
        /*@*/;\r
+/*@null@*/\r
 sexpSimpleString *reallocateSimpleString(sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies ss, fileSystem @*/;\r
 void appendCharToSimpleString(int c, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies ss, fileSystem @*/;\r
 sexpString *newSexpString(void)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
+/*@null@*/\r
 sexpSimpleString *sexpStringPresentationHint(sexpString *s)\r
        /*@*/;\r
 void setSexpStringPresentationHint(sexpString *s, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@modifies s @*/;\r
 void setSexpStringString(sexpString *s, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@modifies s @*/;\r
+/*@null@*/\r
 sexpSimpleString *sexpStringString(sexpString *s)\r
        /*@*/;\r
 void closeSexpString(sexpString *s)\r
        /*@*/;\r
 sexpList *newSexpList(void)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 void sexpAddSexpListObject(sexpList *list, sexpObject *object)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies list, fileSystem @*/;\r
 void closeSexpList(sexpList *list)\r
        /*@*/;\r
 sexpIter *sexpListIter(sexpList *list)\r
        /*@*/;\r
+/*@null@*/\r
 sexpIter *sexpIterNext(sexpIter *iter)\r
        /*@*/;\r
+/*@null@*/\r
 sexpObject *sexpIterObject(sexpIter *iter)\r
        /*@*/;\r
 int isObjectString(sexpObject *object)\r
@@ -147,89 +166,116 @@ int isTokenChar(int c)
 int isAlpha(int c)\r
        /*@*/;\r
 void changeInputByteSize(sexpInputStream *is, int newByteSize)\r
-       /*@*/;\r
+       /*@modifies is @*/;\r
 void getChar(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 sexpInputStream *newSexpInputStream(void)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 void skipWhiteSpace(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@modifies is @*/;\r
 void skipChar(sexpInputStream *is, int c)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 void scanToken(sexpInputStream *is, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, ss, fileSystem @*/;\r
 sexpObject *scanToEOF(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 unsigned long int scanDecimal(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 void scanVerbatimString(sexpInputStream *is, sexpSimpleString *ss, long int length)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, ss, fileSystem @*/;\r
 void scanQuotedString(sexpInputStream *is, sexpSimpleString *ss, long int length)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, ss, fileSystem @*/;\r
 void scanHexString(sexpInputStream *is, sexpSimpleString *ss, long int length)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, ss, fileSystem @*/;\r
 void scanBase64String(sexpInputStream *is, sexpSimpleString *ss, long int length)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, ss, fileSystem @*/;\r
 sexpSimpleString *scanSimpleString(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 sexpString *scanString(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 sexpList *scanList(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 sexpObject *scanObject(sexpInputStream *is)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies is, fileSystem @*/;\r
 \r
 /* sexp-output */\r
 void putChar(sexpOutputStream *os, int c)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void varPutChar(sexpOutputStream *os, int c)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 void changeOutputByteSize(sexpOutputStream *os, int newByteSize, int mode)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void flushOutput(sexpOutputStream * os)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 void newLine(sexpOutputStream *os, int mode)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 sexpOutputStream *newSexpOutputStream(void)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies fileSystem @*/;\r
 void printDecimal(sexpOutputStream *os, long int n)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 void canonicalPrintVerbatimSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void canonicalPrintString(sexpOutputStream *os, sexpString *s)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void canonicalPrintList(sexpOutputStream *os, sexpList *list)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void canonicalPrintObject(sexpOutputStream *os, sexpObject *object)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void base64PrintWholeObject(sexpOutputStream *os, sexpObject *object)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 int canPrintAsToken(sexpOutputStream *os, sexpSimpleString *ss)\r
        /*@*/;\r
 void advancedPrintTokenSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 int advancedLengthSimpleStringToken(sexpSimpleString *ss)\r
        /*@*/;\r
 void advancedPrintVerbatimSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 int advancedLengthSimpleStringVerbatim(sexpSimpleString *ss)\r
        /*@*/;\r
 void advancedPrintBase64SimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void advancedPrintHexSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 int advancedLengthSimpleStringHexadecimal(sexpSimpleString *ss)\r
        /*@*/;\r
 int canPrintAsQuotedString(sexpSimpleString *ss)\r
        /*@*/;\r
 void advancedPrintQuotedStringSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@modifies os @*/;\r
 int advancedLengthSimpleStringQuotedString(sexpSimpleString *ss)\r
        /*@*/;\r
 void advancedPrintSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void advancedPrintString(sexpOutputStream *os, sexpString *s)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 int advancedLengthSimpleStringBase64(sexpSimpleString *ss)\r
        /*@*/;\r
 int advancedLengthSimpleString(sexpOutputStream *os, sexpSimpleString *ss)\r
@@ -239,6 +285,8 @@ int advancedLengthString(sexpOutputStream *os, sexpString *s)
 int advancedLengthList(sexpOutputStream *os, sexpList *list)\r
        /*@*/;\r
 void advancedPrintList(sexpOutputStream *os, sexpList *list)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r
 void advancedPrintObject(sexpOutputStream *os, sexpObject *object)\r
-       /*@*/;\r
+       /*@globals fileSystem @*/\r
+       /*@modifies os, fileSystem @*/;\r