[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.1 and 1.2

version 1.1, 1996/07/04 20:34:42 version 1.2, 1997/01/20 19:43:22
Line 38 
Line 38 
 char    *record;  char    *record;
 char    *fields;  char    *fields;
 Cell    *fldtab;  Cell    *fldtab;
   char    inputFS[100];   /* BUG: unchecked */
   
 #define MAXFLD  200  #define MAXFLD  200
 int     nfields = MAXFLD;       /* can be set from commandline in main */  int     nfields = MAXFLD;       /* can be set from commandline in main */
Line 158 
Line 159 
         char *rr;          char *rr;
         int nrr;          int nrr;
   
           strcpy(inputFS, *FS);   /* for subsequent field splitting */
         if ((sep = **RS) == 0) {          if ((sep = **RS) == 0) {
                 sep = '\n';                  sep = '\n';
                 while ((c=getc(inf)) == '\n' && c != EOF)       /* skip leading \n's */                  while ((c=getc(inf)) == '\n' && c != EOF)       /* skip leading \n's */
Line 228 
Line 230 
         r = recloc->sval;          r = recloc->sval;
         fr = fields;          fr = fields;
         i = 0;  /* number of fields accumulated here */          i = 0;  /* number of fields accumulated here */
         if (strlen(*FS) > 1) {  /* it's a regular expression */          if (strlen(inputFS) > 1) {      /* it's a regular expression */
                 i = refldbld(r, *FS);                  i = refldbld(r, inputFS);
         } else if ((sep = **FS) == ' ') {       /* default whitespace */          } else if ((sep = *inputFS) == ' ') {   /* default whitespace */
                 for (i = 0; ; ) {                  for (i = 0; ; ) {
                         while (*r == ' ' || *r == '\t' || *r == '\n')                          while (*r == ' ' || *r == '\t' || *r == '\n')
                                 r++;                                  r++;
Line 249 
Line 251 
                         *fr++ = 0;                          *fr++ = 0;
                 }                  }
                 *fr = 0;                  *fr = 0;
         } else if ((sep = **FS) == 0) {         /* new: FS="" => 1 char/field */          } else if ((sep = *inputFS) == 0) {             /* new: FS="" => 1 char/field */
                 for (i = 0; *r != 0; r++) {                  for (i = 0; *r != 0; r++) {
                         char buf[2];                          char buf[2];
                         i++;                          i++;
Line 381 
Line 383 
         if (r > rec + recsize - 1)          if (r > rec + recsize - 1)
                 ERROR "built giant record `%.30s...'; try -mr n", record FATAL;                  ERROR "built giant record `%.30s...'; try -mr n", record FATAL;
         *r = '\0';          *r = '\0';
         dprintf( ("in recbld FS=%o, recloc=%p\n", **FS, recloc) );          dprintf( ("in recbld inputFS=%s, recloc=%p\n", inputFS, recloc) );
         recloc->tval = REC | STR | DONTFREE;          recloc->tval = REC | STR | DONTFREE;
         recloc->sval = record = rec;          recloc->sval = record = rec;
         dprintf( ("in recbld FS=%o, recloc=%p\n", **FS, recloc) );          dprintf( ("in recbld inputFS=%s, recloc=%p\n", inputFS, recloc) );
         dprintf( ("recbld = |%s|\n", record) );          dprintf( ("recbld = |%s|\n", record) );
         donerec = 1;          donerec = 1;
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2