date and time created 83/08/05 13:35:19 by sam
[unix-history] / usr / src / old / awk / lib.c
index e42869f..3118b69 100644 (file)
@@ -1,4 +1,4 @@
-/*     lib.c   4.1     82/05/07        */
+/*     lib.c   4.2     83/02/09        */
 
 #include "stdio.h"
 #include "awk.def"
 
 #include "stdio.h"
 #include "awk.def"
@@ -10,13 +10,14 @@ char        *file;
 #define        RECSIZE (5 * 512)
 char   record[RECSIZE];
 char   fields[RECSIZE];
 #define        RECSIZE (5 * 512)
 char   record[RECSIZE];
 char   fields[RECSIZE];
+char   EMPTY[] = "";
 
 #define        MAXFLD  100
 int    donefld;        /* 1 = implies rec broken into fields */
 int    donerec;        /* 1 = record is valid (no flds have changed) */
 int    mustfld;        /* 1 = NF seen, so always break*/
 
 
 #define        MAXFLD  100
 int    donefld;        /* 1 = implies rec broken into fields */
 int    donerec;        /* 1 = record is valid (no flds have changed) */
 int    mustfld;        /* 1 = NF seen, so always break*/
 
-#define        FINIT   {0, NULL, 0.0, FLD|STR}
+#define        FINIT   {EMPTY, EMPTY, 0.0, FLD|STR}
 cell fldtab[MAXFLD] = {        /*room for fields */
        { "$record", record, 0.0, STR|FLD},
        FINIT, FINIT, FINIT, FINIT, FINIT, FINIT, FINIT,
 cell fldtab[MAXFLD] = {        /*room for fields */
        { "$record", record, 0.0, STR|FLD},
        FINIT, FINIT, FINIT, FINIT, FINIT, FINIT, FINIT,
@@ -124,7 +125,7 @@ fldbld()
                        if (i >= MAXFLD)
                                error(FATAL, "record `%.20s...' has too many fields", record);
                        if (!(fldtab[i].tval&FLD))
                        if (i >= MAXFLD)
                                error(FATAL, "record `%.20s...' has too many fields", record);
                        if (!(fldtab[i].tval&FLD))
-                               xfree(fldtab[i].sval);
+                               strfree(fldtab[i].sval);
                        fldtab[i].sval = fr;
                        fldtab[i].tval = FLD | STR;
                        do
                        fldtab[i].sval = fr;
                        fldtab[i].tval = FLD | STR;
                        do
@@ -138,7 +139,7 @@ fldbld()
                        if (i >= MAXFLD)
                                error(FATAL, "record `%.20s...' has too many fields", record);
                        if (!(fldtab[i].tval&FLD))
                        if (i >= MAXFLD)
                                error(FATAL, "record `%.20s...' has too many fields", record);
                        if (!(fldtab[i].tval&FLD))
-                               xfree(fldtab[i].sval);
+                               strfree(fldtab[i].sval);
                        fldtab[i].sval = fr;
                        fldtab[i].tval = FLD | STR;
                        while (*r != sep && *r != '\n' && *r != '\0')   /* \n always a separator */
                        fldtab[i].sval = fr;
                        fldtab[i].tval = FLD | STR;
                        while (*r != sep && *r != '\n' && *r != '\0')   /* \n always a separator */
@@ -150,9 +151,9 @@ fldbld()
        *fr = 0;
        for (j=MAXFLD-1; j>i; j--) {    /* clean out junk from previous record */
                if (!(fldtab[j].tval&FLD))
        *fr = 0;
        for (j=MAXFLD-1; j>i; j--) {    /* clean out junk from previous record */
                if (!(fldtab[j].tval&FLD))
-                       xfree(fldtab[j].sval);
+                       strfree(fldtab[j].sval);
                fldtab[j].tval = STR | FLD;
                fldtab[j].tval = STR | FLD;
-               fldtab[j].sval = NULL;
+               fldtab[j].sval = EMPTY;
        }
        maxfld = i;
        donefld = 1;
        }
        maxfld = i;
        donefld = 1;
@@ -227,6 +228,8 @@ register char *s;
        int point;
        char *es;
 
        int point;
        char *es;
 
+       if (s == NULL) 
+               return (0);
        d1 = d2 = point = 0;
        while (*s == ' ' || *s == '\t' || *s == '\n')
                s++;
        d1 = d2 = point = 0;
        while (*s == ' ' || *s == '\t' || *s == '\n')
                s++;