if (re_string_eoi(regexp) || i >= BRACKET_NAME_BUF_SIZE) return REG_EBRACK;
parse_bracket_symbol (elem, regexp, token)     bracket_elem_t *elem;     re_string_t *regexp;     re_token_t *token;{  unsigned char ch, delim = token->opr.c;  int i = 0;  for (;; i++)    {#ifdef DEBUG      assert (i < BRACKET_NAME_BUF_SIZE);#endif      if (token->type == OP_OPEN_CHAR_CLASS)        ch = re_string_fetch_byte_case (regexp);      else        ch = re_string_fetch_byte (regexp);      if (ch == delim && re_string_peek_byte (regexp, 0) == ']')        break;      elem->opr.name[i] = ch;    }  re_string_skip_bytes (regexp, 1);  elem->opr.name[i] = '\0';  switch (token->type)    {    case OP_OPEN_COLL_ELEM:      elem->type = COLL_SYM;      break;    case OP_OPEN_EQUIV_CLASS:      elem->type = EQUIV_CLASS;      break;    case OP_OPEN_CHAR_CLASS:      elem->type = CHAR_CLASS;      break;    default:      break;    }  return REG_NOERROR;}