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

Diff for /src/usr.bin/m4/eval.c between version 1.55 and 1.56

version 1.55, 2005/03/02 10:12:15 version 1.56, 2005/05/29 18:44:36
Line 49 
Line 49 
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <errno.h>  #include <errno.h>
   #include <limits.h>
 #include <unistd.h>  #include <unistd.h>
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
Line 178 
Line 179 
          * doexpr - evaluate arithmetic           * doexpr - evaluate arithmetic
          * expression           * expression
          */           */
           {
                   int base = 10;
                   int maxdigits = 0;
                   const char *errstr;
   
                   if (argc > 3) {
                           base = strtonum(argv[3], 2, 36, &errstr);
                           if (errstr) {
                                   errx(1, "base %s invalid", argv[3]);
                           }
                   }
                   if (argc > 4) {
                           maxdigits = strtonum(argv[4], 0, INT_MAX, &errstr);
                           if (errstr) {
                                   errx(1, "maxdigits %s invalid", argv[4]);
                           }
                   }
                 if (argc > 2)                  if (argc > 2)
                         pbnum(expr(argv[2]));                          pbnumbase(expr(argv[2]), base, maxdigits);
                 break;                  break;
           }
   
         case IFELTYPE:          case IFELTYPE:
                 if (argc > 4)                  if (argc > 4)
Line 866 
Line 885 
   
         if (argc > 2) {          if (argc > 2) {
                 for (ind = 2; ind < argc; ind++) {                  for (ind = 2; ind < argc; ind++) {
                         n = atoi(argv[ind]);                          const char *errstr;
                         if (n > 0 && n < maxout && outfile[n] != NULL)                          n = strtonum(argv[ind], 1, INT_MAX, &errstr);
                                 getdiv(n);                          if (errstr) {
                                   if (errno == EINVAL && mimic_gnu)
                                           getdivfile(argv[ind]);
                           } else {
                                   if (n < maxout && outfile[n] != NULL)
                                           getdiv(n);
                           }
                 }                  }
         }          }
         else          else
Line 1011 
Line 1035 
         while(*src) {          while(*src) {
                 if (src[1] == '-' && src[2]) {                  if (src[1] == '-' && src[2]) {
                         unsigned char i;                          unsigned char i;
                         for (i = (unsigned char)src[0];                          if ((unsigned char)src[0] <= (unsigned char)src[2]) {
                             i <= (unsigned char)src[2]; i++) {                                  for (i = (unsigned char)src[0];
                                 *p++ = i;                                      i <= (unsigned char)src[2]; i++) {
                                 if (p == end) {                                          *p++ = i;
                                         *p = '\0';                                          if (p == end) {
                                         return buffer;                                                  *p = '\0';
                                                   return buffer;
                                           }
                                   }
                           } else {
                                   for (i = (unsigned char)src[0];
                                       i >= (unsigned char)src[2]; i--) {
                                           *p++ = i;
                                           if (p == end) {
                                                   *p = '\0';
                                                   return buffer;
                                           }
                                 }                                  }
                         }                          }
                         src += 3;                          src += 3;

Legend:
Removed from v.1.55  
changed lines
  Added in v.1.56