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

Diff for /src/usr.bin/mg/interpreter.c between version 1.17 and 1.18

version 1.17, 2021/03/25 20:25:31 version 1.18, 2021/03/26 07:25:23
Line 121 
Line 121 
         struct expentry *e1 = NULL, *e2 = NULL;          struct expentry *e1 = NULL, *e2 = NULL;
         char            *p, *begp = NULL, *endp = NULL, *regs;          char            *p, *begp = NULL, *endp = NULL, *regs;
         char             expbuf[BUFSIZE], tmpbuf[BUFSIZE];          char             expbuf[BUFSIZE], tmpbuf[BUFSIZE];
         int              i, ret, pctr, fndstart, expctr, blkid, fndend;          int              i, ret, pctr, expctr, blkid, inquote;
         int              inquote;  
   
         pctr = fndstart = expctr = fndend = inquote = 0;          pctr = expctr = inquote = 0;
         blkid = 1;          blkid = 1;
   
         /*          /*
Line 155 
Line 154 
          */           */
         p = funstr;          p = funstr;
   
         for (i = 0; i < llen; ++i) {          for (i = 0; i < llen; ++i, p++) {
                 if (*p == '(') {                  if (*p == '(') {
                         if (fndstart == 1) {                          if (begp != NULL) {
                                 if (endp == NULL)                                  if (endp == NULL)
                                         *p = '\0';                                          *p = '\0';
                                 else                                  else
Line 168 
Line 167 
                                         cleanup();                                          cleanup();
                                         return(ret);                                          return(ret);
                                 }                                  }
                                 begp = NULL;  
                         }                          }
                         fndstart = 0;                          begp = endp = NULL;
                         fndend = 0;  
                         endp = NULL;  
                         pctr++;                          pctr++;
                 } else if (*p == ')') {                  } else if (*p == ')') {
                         if (inquote == 1) {                          if (inquote == 1) {
Line 180 
Line 176 
                                 return(dobeep_msg("Opening and closing quote "\                                  return(dobeep_msg("Opening and closing quote "\
                                     "char error"));                                      "char error"));
                         }                          }
                         if (fndstart == 1) {                          if (begp != NULL) {
                                 if (endp == NULL)                                  if (endp == NULL)
                                         *p = '\0';                                          *p = '\0';
                                 else                                  else
Line 192 
Line 188 
                                         return(ret);                                          return(ret);
                                 }                                  }
                         }                          }
                         fndstart = 0;                          begp = endp = NULL;
                         fndend = 0;  
                         begp = NULL;  
                         pctr--;                          pctr--;
                 } else if (*p != ' ' && *p != '\t') {                  } else if (*p != ' ' && *p != '\t') {
                         if (fndstart == 0) {                          if (begp == NULL)
                                 fndstart = 1;                                  begp = p;
                                 if (begp == NULL)  
                                         begp = p;  
                         }  
                         if (*p == '"') {                          if (*p == '"') {
                                 if (inquote == 0)                                  if (inquote == 0)
                                         inquote = 1;                                          inquote = 1;
                                 else                                  else
                                         inquote = 0;                                          inquote = 0;
                         }                          }
                         fndend = 0;  
                         endp = NULL;                          endp = NULL;
                 } else if (fndend == 0 && (*p == ' ' || *p == '\t')) {                  } else if (endp == NULL && (*p == ' ' || *p == '\t')) {
                         *p = ' ';                          *p = ' ';
                         fndend = 1;  
                         endp = p;                          endp = p;
                 } else if (*p == '\t')                  } else if (*p == '\t')
                         if (inquote == 0)                          if (inquote == 0)
Line 220 
Line 209 
   
                 if (pctr == 0)                  if (pctr == 0)
                         blkid++;                          blkid++;
                 p++;  
         }          }
   
         if (pctr != 0) {          if (pctr != 0) {

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18