[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.31 and 1.32

version 1.31, 2020/06/10 21:03:36 version 1.32, 2020/06/10 21:03:56
Line 47 
Line 47 
 #define MAXFLD  2  #define MAXFLD  2
 int     nfields = MAXFLD;       /* last allocated slot for $i */  int     nfields = MAXFLD;       /* last allocated slot for $i */
   
 int     donefld;        /* 1 = implies rec broken into fields */  bool    donefld;        /* true = implies rec broken into fields */
 int     donerec;        /* 1 = record is valid (no flds have changed) */  bool    donerec;        /* true = record is valid (no flds have changed) */
   
 int     lastfld = 0;    /* last used field */  int     lastfld = 0;    /* last used field */
 int     argno   = 1;    /* current input argument number */  int     argno   = 1;    /* current input argument number */
Line 123 
Line 123 
         strlcpy(inputFS, *FS, sizeof(inputFS));          strlcpy(inputFS, *FS, sizeof(inputFS));
 }  }
   
 static int firsttime = 1;  static bool firsttime = true;
   
 int getrec(char **pbuf, int *pbufsize, int isrecord)    /* get next input record */  int getrec(char **pbuf, int *pbufsize, bool isrecord)   /* get next input record */
 {                       /* note: cares whether buf == record */  {                       /* note: cares whether buf == record */
         int c;          int c;
         char *buf = *pbuf;          char *buf = *pbuf;
Line 133 
Line 133 
         int bufsize = *pbufsize, savebufsize = bufsize;          int bufsize = *pbufsize, savebufsize = bufsize;
   
         if (firsttime) {          if (firsttime) {
                 firsttime = 0;                  firsttime = false;
                 initgetrec();                  initgetrec();
         }          }
            DPRINTF( ("RS=<%s>, FS=<%s>, ARGC=%g, FILENAME=%s\n",             DPRINTF( ("RS=<%s>, FS=<%s>, ARGC=%g, FILENAME=%s\n",
                 *RS, *FS, *ARGC, *FILENAME) );                  *RS, *FS, *ARGC, *FILENAME) );
         if (isrecord) {          if (isrecord) {
                 donefld = 0;                  donefld = false;
                 donerec = 1;                  donerec = true;
                 savefs();                  savefs();
         }          }
         saveb0 = buf[0];          saveb0 = buf[0];
Line 212 
Line 212 
         char *rs = getsval(rsloc);          char *rs = getsval(rsloc);
   
         if (*rs && rs[1]) {          if (*rs && rs[1]) {
                 int found;                  bool found;
   
                 fa *pfa = makedfa(rs, 1);                  fa *pfa = makedfa(rs, 1);
                 found = fnematch(pfa, inf, &buf, &bufsize, recsize);                  found = fnematch(pfa, inf, &buf, &bufsize, recsize);
Line 334 
Line 334 
                 }                  }
                 *fr = 0;                  *fr = 0;
         } else if ((sep = *inputFS) == 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 += n) {
                         char buf[2];                          char buf[MB_CUR_MAX + 1];
   
                         i++;                          i++;
                         if (i > nfields)                          if (i > nfields)
                                 growfldtab(i);                                  growfldtab(i);
                         if (freeable(fldtab[i]))                          if (freeable(fldtab[i]))
                                 xfree(fldtab[i]->sval);                                  xfree(fldtab[i]->sval);
                         buf[0] = *r;                          n = mblen(r, MB_CUR_MAX);
                         buf[1] = 0;                          if (n < 0)
                                   n = 1;
                           memcpy(buf, r, n);
                           buf[n] = '\0';
                         fldtab[i]->sval = tostring(buf);                          fldtab[i]->sval = tostring(buf);
                         fldtab[i]->tval = FLD | STR;                          fldtab[i]->tval = FLD | STR;
                 }                  }
Line 375 
Line 379 
                 FATAL("record `%.30s...' has too many fields; can't happen", r);                  FATAL("record `%.30s...' has too many fields; can't happen", r);
         cleanfld(i+1, lastfld); /* clean out junk from previous record */          cleanfld(i+1, lastfld); /* clean out junk from previous record */
         lastfld = i;          lastfld = i;
         donefld = 1;          donefld = true;
         for (j = 1; j <= lastfld; j++) {          for (j = 1; j <= lastfld; j++) {
                 p = fldtab[j];                  p = fldtab[j];
                 if(is_number(p->sval)) {                  if(is_number(p->sval)) {
Line 384 
Line 388 
                 }                  }
         }          }
         setfval(nfloc, (Awkfloat) lastfld);          setfval(nfloc, (Awkfloat) lastfld);
         donerec = 1; /* restore */          donerec = true; /* restore */
         if (dbg) {          if (dbg) {
                 for (j = 0; j <= lastfld; j++) {                  for (j = 0; j <= lastfld; j++) {
                         p = fldtab[j];                          p = fldtab[j];
Line 511 
Line 515 
         char *r, *p;          char *r, *p;
         char *sep = getsval(ofsloc);          char *sep = getsval(ofsloc);
   
         if (donerec == 1)          if (donerec)
                 return;                  return;
         r = record;          r = record;
         for (i = 1; i <= *NF; i++) {          for (i = 1; i <= *NF; i++) {
Line 539 
Line 543 
   
            DPRINTF( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)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 = true;
 }  }
   
 int     errorflag       = 0;  int     errorflag       = 0;
Line 564 
Line 568 
         fprintf(stderr, " at source line %d", lineno);          fprintf(stderr, " at source line %d", lineno);
         if (curfname != NULL)          if (curfname != NULL)
                 fprintf(stderr, " in function %s", curfname);                  fprintf(stderr, " in function %s", curfname);
         if (compile_time == 1 && cursource() != NULL)          if (compile_time == COMPILING && cursource() != NULL)
                 fprintf(stderr, " source file %s", cursource());                  fprintf(stderr, " source file %s", cursource());
         fprintf(stderr, "\n");          fprintf(stderr, "\n");
         errorflag = 2;          errorflag = 2;
Line 660 
Line 664 
         extern Node *curnode;          extern Node *curnode;
   
         fprintf(stderr, "\n");          fprintf(stderr, "\n");
         if (compile_time != 2 && NR && *NR > 0) {          if (compile_time != ERROR_PRINTING) {
                 fprintf(stderr, " input record number %d", (int) (*FNR));                  if (NR && *NR > 0) {
                 if (strcmp(*FILENAME, "-") != 0)                          fprintf(stderr, " input record number %d", (int) (*FNR));
                         fprintf(stderr, ", file %s", *FILENAME);                          if (strcmp(*FILENAME, "-") != 0)
                 fprintf(stderr, "\n");                                  fprintf(stderr, ", file %s", *FILENAME);
                           fprintf(stderr, "\n");
                   }
                   if (curnode)
                           fprintf(stderr, " source line number %d", curnode->lineno);
                   else if (lineno)
                           fprintf(stderr, " source line number %d", lineno);
         }          }
         if (compile_time != 2 && curnode)  
                 fprintf(stderr, " source line number %d", curnode->lineno);          if (compile_time == COMPILING && cursource() != NULL)
         else if (compile_time != 2 && lineno)  
                 fprintf(stderr, " source line number %d", lineno);  
         if (compile_time == 1 && cursource() != NULL)  
                 fprintf(stderr, " source file %s", cursource());                  fprintf(stderr, " source file %s", cursource());
         fprintf(stderr, "\n");          fprintf(stderr, "\n");
         eprint();          eprint();
Line 683 
Line 690 
         static int been_here = 0;          static int been_here = 0;
         extern char ebuf[], *ep;          extern char ebuf[], *ep;
   
         if (compile_time == 2 || compile_time == 0 || been_here++ > 0 || ebuf == ep)          if (compile_time != COMPILING || been_here++ > 0 || ebuf == ep)
                 return;                  return;
         p = ep - 1;          p = ep - 1;
         if (p > ebuf && *p == '\n')          if (p > ebuf && *p == '\n')

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.32