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

Diff for /src/usr.bin/tr/str.c between version 1.13 and 1.14

version 1.13, 2021/10/31 21:34:16 version 1.14, 2021/11/02 03:09:15
Line 164 
Line 164 
 };  };
   
 static void  static void
 genclass(s)  genclass(STR *s)
         STR *s;  
 {  {
         int cnt, (*func)(int);  
         CLASS *cp, tmp;          CLASS *cp, tmp;
         int *p;          size_t len;
           int i;
   
         tmp.name = (char *)s->str;          tmp.name = (char *)s->str;
         if ((cp = (CLASS *)bsearch(&tmp, classes, sizeof(classes) /          if ((cp = (CLASS *)bsearch(&tmp, classes, sizeof(classes) /
             sizeof(CLASS), sizeof(CLASS), c_class)) == NULL)              sizeof(CLASS), sizeof(CLASS), c_class)) == NULL)
                 errx(1, "unknown class %s", s->str);                  errx(1, "unknown class %s", s->str);
   
         if ((cp->set = p = calloc(NCHARS + 1, sizeof(int))) == NULL)          /*
                 errx(1, "no memory for a class");           * Generate the set of characters in the class if we haven't
         for (cnt = 0, func = cp->func; cnt < NCHARS; ++cnt)           * already done so.
                 if ((func)(cnt))           */
                         *p++ = cnt;          if (cp->set == NULL) {
         *p = OOBCH;                  cp->set = reallocarray(NULL, NCHARS + 1, sizeof(*cp->set));
                   if (cp->set == NULL)
                           err(1, NULL);
                   len = 0;
                   for (i = 0; i < NCHARS; i++) {
                           if (cp->func(i)) {
                                   cp->set[len] = i;
                                   len++;
                           }
                   }
                   cp->set[len] = OOBCH;
                   len++;
                   cp->set = reallocarray(cp->set, len, sizeof(*cp->set));
                   if (cp->set == NULL)
                           err(1, NULL);
           }
   
         s->cnt = 0;          s->cnt = 0;
         s->state = SET;          s->state = SET;

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14