[BACK]Return to lib.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / awk

Diff for /src/usr.bin/awk/lib.c between version 1.19 and 1.20

version 1.19, 2010/06/13 17:58:19 version 1.20, 2011/09/28 19:27:18
Line 91 
Line 91 
         char *p;          char *p;
   
         for (i = 1; i < *ARGC; i++) {          for (i = 1; i < *ARGC; i++) {
                 if (!isclvar(p = getargv(i))) { /* find 1st real filename */                  p = getargv(i); /* find 1st real filename */
                         setsval(lookup("FILENAME", symtab), getargv(i));                  if (p == NULL || *p == '\0') {  /* deleted or zapped */
                           argno++;
                           continue;
                   }
                   if (!isclvar(p)) {
                           setsval(lookup("FILENAME", symtab), p);
                         return;                          return;
                 }                  }
                 setclvar(p);    /* a commandline assignment before filename */                  setclvar(p);    /* a commandline assignment before filename */
Line 126 
Line 131 
                    dprintf( ("argno=%d, file=|%s|\n", argno, file) );                     dprintf( ("argno=%d, file=|%s|\n", argno, file) );
                 if (infile == NULL) {   /* have to open a new file */                  if (infile == NULL) {   /* have to open a new file */
                         file = getargv(argno);                          file = getargv(argno);
                         if (*file == '\0') {    /* it's been zapped */                          if (file == NULL || *file == '\0') {    /* deleted or zapped */
                                 argno++;                                  argno++;
                                 continue;                                  continue;
                         }                          }
Line 189 
Line 194 
   
         if (strlen(*FS) >= sizeof(inputFS))          if (strlen(*FS) >= sizeof(inputFS))
                 FATAL("field separator %.10s... is too long", *FS);                  FATAL("field separator %.10s... is too long", *FS);
           /*fflush(stdout); avoids some buffering problem but makes it 25% slower*/
         strlcpy(inputFS, *FS, sizeof inputFS);  /* for subsequent field splitting */          strlcpy(inputFS, *FS, sizeof inputFS);  /* for subsequent field splitting */
         if ((sep = **RS) == 0) {          if ((sep = **RS) == 0) {
                 sep = '\n';                  sep = '\n';
Line 229 
Line 235 
         extern Array *ARGVtab;          extern Array *ARGVtab;
   
         snprintf(temp, sizeof temp, "%d", n);          snprintf(temp, sizeof temp, "%d", n);
           if (lookup(temp, ARGVtab) == NULL)
                   return NULL;
         x = setsymtab(temp, "", 0.0, STR, ARGVtab);          x = setsymtab(temp, "", 0.0, STR, ARGVtab);
         s = getsval(x);          s = getsval(x);
            dprintf( ("getargv(%d) returns |%s|\n", n, s) );             dprintf( ("getargv(%d) returns |%s|\n", n, s) );
Line 258 
Line 266 
 {  {
         /* this relies on having fields[] the same length as $0 */          /* this relies on having fields[] the same length as $0 */
         /* the fields are all stored in this one array with \0's */          /* the fields are all stored in this one array with \0's */
           /* possibly with a final trailing \0 not associated with any field */
         char *r, *fr, sep;          char *r, *fr, sep;
         Cell *p;          Cell *p;
         int i, j, n;          int i, j, n;
Line 270 
Line 279 
         n = strlen(r);          n = strlen(r);
         if (n > fieldssize) {          if (n > fieldssize) {
                 xfree(fields);                  xfree(fields);
                 if ((fields = (char *) malloc(n+1)) == NULL)                  if ((fields = (char *) malloc(n+2)) == NULL) /* possibly 2 final \0s */
                         FATAL("out of space for fields in fldbld %d", n);                          FATAL("out of space for fields in fldbld %d", n);
                 fieldssize = n;                  fieldssize = n;
         }          }
Line 478 
Line 487 
         if (!adjbuf(&record, &recsize, 2+r-record, recsize, &r, "recbld 3"))          if (!adjbuf(&record, &recsize, 2+r-record, recsize, &r, "recbld 3"))
                 FATAL("built giant record `%.30s...'", record);                  FATAL("built giant record `%.30s...'", record);
         *r = '\0';          *r = '\0';
            dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, fldtab[0]) );             dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]) );
   
         if (freeable(fldtab[0]))          if (freeable(fldtab[0]))
                 xfree(fldtab[0]->sval);                  xfree(fldtab[0]->sval);
         fldtab[0]->tval = REC | STR | DONTFREE;          fldtab[0]->tval = REC | STR | DONTFREE;
         fldtab[0]->sval = record;          fldtab[0]->sval = record;
   
            dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, fldtab[0]) );             dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]) );
            dprintf( ("recbld = |%s|\n", record) );             dprintf( ("recbld = |%s|\n", record) );
         donerec = 1;          donerec = 1;
 }  }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20