const unsigned char *name = class_name;
build_charclass (mbcset, sbcset, char_class_alloc, name)     re_charset_t *mbcset;     re_bitset_ptr_t sbcset;     int *char_class_alloc;     const unsigned char *name;{  int i;  /* Check the space of the arrays.  */  if (*char_class_alloc == mbcset->nchar_classes)    {      /* Not enough, realloc it.  */      /* +1 in case of mbcset->nchar_classes is 0.  */      *char_class_alloc = 2 * mbcset->nchar_classes + 1;      /* Use realloc since array is NULL if *alloc == 0.  */      mbcset->char_classes = re_realloc (mbcset->char_classes, wctype_t,                                         *char_class_alloc);      if (BE (mbcset->char_classes == NULL, 0))        return REG_ESPACE;    }  mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);#define BUILD_CHARCLASS_LOOP(ctype_func)\    for (i = 0; i < SBC_MAX; ++i)	\      {					\        if (ctype_func (i))		\          bitset_set (sbcset, i);	\      }  if (strcmp (name, "alnum") == 0)    BUILD_CHARCLASS_LOOP (isalnum)  else if (strcmp (name, "cntrl") == 0)    BUILD_CHARCLASS_LOOP (iscntrl)  else if (strcmp (name, "lower") == 0)    BUILD_CHARCLASS_LOOP (islower)  else if (strcmp (name, "space") == 0)    BUILD_CHARCLASS_LOOP (isspace)  else if (strcmp (name, "alpha") == 0)    BUILD_CHARCLASS_LOOP (isalpha)  else if (strcmp (name, "digit") == 0)    BUILD_CHARCLASS_LOOP (isdigit)  else if (strcmp (name, "print") == 0)    BUILD_CHARCLASS_LOOP (isprint)  else if (strcmp (name, "upper") == 0)    BUILD_CHARCLASS_LOOP (isupper)  else if (strcmp (name, "blank") == 0)    BUILD_CHARCLASS_LOOP (isblank)  else if (strcmp (name, "graph") == 0)    BUILD_CHARCLASS_LOOP (isgraph)  else if (strcmp (name, "punct") == 0)    BUILD_CHARCLASS_LOOP (ispunct)  else if (strcmp (name, "xdigit") == 0)    BUILD_CHARCLASS_LOOP (isxdigit)  else    return REG_ECTYPE;  return REG_NOERROR;}