MCPcopy Create free account
hub / github.com/git/git / parse_bracket_symbol

Function parse_bracket_symbol

compat/regex/regcomp.c:3386–3425  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3384 return REG_ERANGE;
3385 }
3386 elem->type = SB_CHAR;
3387 elem->opr.ch = token->opr.c;
3388 return REG_NOERROR;
3389}
3390
3391/* Parse a bracket symbol in the bracket expression. Bracket symbols are
3392 such as [:<character_class>:], [.<collating_element>.], and
3393 [=<equivalent_class>=]. */
3394
3395static reg_errcode_t
3396parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
3397 re_token_t *token)
3398{
3399 unsigned char ch, delim = token->opr.c;
3400 int i = 0;
3401 if (re_string_eoi(regexp))
3402 return REG_EBRACK;
3403 for (;; ++i)
3404 {
3405 if (i >= BRACKET_NAME_BUF_SIZE)
3406 return REG_EBRACK;
3407 if (token->type == OP_OPEN_CHAR_CLASS)
3408 ch = re_string_fetch_byte_case (regexp);
3409 else
3410 ch = re_string_fetch_byte (regexp);
3411 if (re_string_eoi(regexp))
3412 return REG_EBRACK;
3413 if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
3414 break;
3415 elem->opr.name[i] = ch;
3416 }
3417 re_string_skip_bytes (regexp, 1);
3418 elem->opr.name[i] = '\0';
3419 switch (token->type)
3420 {
3421 case OP_OPEN_COLL_ELEM:
3422 elem->type = COLL_SYM;
3423 break;
3424 case OP_OPEN_EQUIV_CLASS:
3425 elem->type = EQUIV_CLASS;
3426 break;
3427 case OP_OPEN_CHAR_CLASS:
3428 elem->type = CHAR_CLASS;

Callers 1

parse_bracket_elementFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected