123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #ifndef _REGEXP_H
- #define _REGEXP_H 1
- #include <features.h>
- #include <alloca.h>
- #include <regex.h>
- #include <stdlib.h>
- #include <string.h>
- __BEGIN_DECLS
- #if 0
- extern char *loc1;
- extern char *loc2;
- extern char *locs;
- #endif
- #ifndef __DO_NOT_DEFINE_COMPILE
- char *
- compile (char *__restrict instring, char *__restrict expbuf,
- const char *__restrict endbuf, int eof)
- {
- char *__input_buffer = NULL;
- size_t __input_size = 0;
- size_t __current_size = 0;
- int __ch;
- int __error;
- INIT
-
- regex_t *__expr_ptr;
- # if defined __GNUC__ && __GNUC__ >= 2
- const size_t __req = __alignof__ (regex_t *);
- # else
-
- const size_t __req = 8;
- # endif
- expbuf += __req;
- expbuf -= (expbuf - ((char *) 0)) % __req;
- if (endbuf < expbuf + sizeof (regex_t))
- {
- ERROR (50);
- }
- __expr_ptr = (regex_t *) expbuf;
-
- __expr_ptr->__REPB_PREFIX (buffer) = expbuf + sizeof (regex_t);
- __expr_ptr->__REPB_PREFIX (allocated)
- = endbuf - (char *) __expr_ptr->__REPB_PREFIX (buffer);
- while ((__ch = (GETC ())) != eof)
- {
- if (__ch == '\0' || __ch == '\n')
- {
- UNGETC (__ch);
- break;
- }
- if (__current_size + 1 >= __input_size)
- {
- size_t __new_size = __input_size ? 2 * __input_size : 128;
- char *__new_room = (char *) alloca (__new_size);
-
- if (__new_room + __new_size == __input_buffer)
- {
- __input_size += __new_size;
- __input_buffer = (char *) memcpy (__new_room, __input_buffer,
- __current_size);
- }
- else if (__input_buffer + __input_size == __new_room)
- __input_size += __new_size;
- else
- {
- __input_size = __new_size;
- __input_buffer = (char *) memcpy (__new_room, __input_buffer,
- __current_size);
- }
- }
- __input_buffer[__current_size++] = __ch;
- }
- if (__current_size)
- __input_buffer[__current_size++] = '\0';
- else
- __input_buffer = "";
-
- __error = regcomp (__expr_ptr, __input_buffer, REG_NEWLINE);
- if (__error != 0)
-
- switch (__error)
- {
- case REG_BADPAT:
- case REG_ECOLLATE:
- case REG_ECTYPE:
- case REG_EESCAPE:
- case REG_BADRPT:
- case REG_EEND:
- case REG_ERPAREN:
- default:
-
- RETURN (36);
- case REG_ESUBREG:
- RETURN (25);
- case REG_EBRACK:
- RETURN (49);
- case REG_EPAREN:
- RETURN (42);
- case REG_EBRACE:
- RETURN (44);
- case REG_BADBR:
- RETURN (46);
- case REG_ERANGE:
- RETURN (11);
- case REG_ESPACE:
- case REG_ESIZE:
- ERROR (50);
- }
-
- RETURN ((char *) (__expr_ptr->__REPB_PREFIX (buffer)
- + __expr_ptr->__REPB_PREFIX (used)));
- }
- #endif
- #if 0
- extern int step (const char *__restrict __string,
- const char *__restrict __expbuf) __THROW;
- extern int advance (const char *__restrict __string,
- const char *__restrict __expbuf) __THROW;
- #endif
- __END_DECLS
- #endif
|