blob: dce217718f8c825acec8d7dad38806db2064b4ec [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#ifndef _REGEX_H
2#define _REGEX_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Rich Felker455f9682012-09-08 17:14:52 -04008#include <features.h>
Rich Felker400c5e52012-09-06 22:44:55 -04009
Rich Felker8327ae02013-07-22 14:39:59 -040010#define __NEED_regoff_t
Rich Felker0b44a032011-02-12 00:22:29 -050011#define __NEED_size_t
12
13#include <bits/alltypes.h>
14
Rich Felker8327ae02013-07-22 14:39:59 -040015typedef struct re_pattern_buffer {
Rich Felker0b44a032011-02-12 00:22:29 -050016 size_t re_nsub;
Rich Felker32aea202011-06-16 16:53:11 -040017 void *__opaque, *__padding[4];
18 size_t __nsub2;
Rich Felker8c741782013-03-04 17:05:45 -050019 char __padding2;
Rich Felker0b44a032011-02-12 00:22:29 -050020} regex_t;
21
22typedef struct {
23 regoff_t rm_so;
24 regoff_t rm_eo;
25} regmatch_t;
26
27#define REG_EXTENDED 1
28#define REG_ICASE 2
29#define REG_NEWLINE 4
30#define REG_NOSUB 8
31
32#define REG_NOTBOL 1
33#define REG_NOTEOL 2
34
35#define REG_OK 0
36#define REG_NOMATCH 1
37#define REG_BADPAT 2
38#define REG_ECOLLATE 3
39#define REG_ECTYPE 4
40#define REG_EESCAPE 5
41#define REG_ESUBREG 6
42#define REG_EBRACK 7
43#define REG_EPAREN 8
44#define REG_EBRACE 9
45#define REG_BADBR 10
46#define REG_ERANGE 11
47#define REG_ESPACE 12
48#define REG_BADRPT 13
49
50#define REG_ENOSYS -1
51
Rich Felker400c5e52012-09-06 22:44:55 -040052int regcomp(regex_t *__restrict, const char *__restrict, int);
53int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int);
Rich Felker0b44a032011-02-12 00:22:29 -050054void regfree(regex_t *);
55
Rich Felker400c5e52012-09-06 22:44:55 -040056size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
Rich Felker0b44a032011-02-12 00:22:29 -050057
58#ifdef __cplusplus
59}
60#endif
61
62#endif