388294d44032b60bc0826319be657e69f11c9a61
[people/lynusvaz/gpxe.git] / src / include / gpxe / parse.h
1 #ifndef _GPXE_PARSE_H_
2 #define _GPXE_PARSE_H_
3
4 #include <stdint.h>
5
6 #define                 ENDQUOTES       0
7 #define                 TABLE           1
8 #define                 FUNC            2
9 #define                 ENDTOK          3
10
11 struct string {
12         char *value;
13 };
14
15 struct char_table {
16         char token;
17         int type;
18         union {
19                 struct {
20                         struct char_table *ntable;
21                         int len;
22                 } next_table;
23                 char * ( *parse_func ) ( struct string *, char *, char ** );
24         }next;
25 };
26
27 int parse_arith ( struct string *inp, char *inp_str, char **end );
28
29 char * expand_string ( struct string *s, char **head, char **end, const struct char_table *table, int tlen, int in_quotes, int *success );
30 char * dollar_expand ( struct string *s, char *inp, char ** end );
31 char * parse_escape ( struct string *s, char *input, char **end );
32 int isnum ( char *string, long *num );
33
34 void free_string ( struct string *s );
35 char * string3cat ( struct string *s1, const char *s2, const char *s3 );
36 char * stringcpy ( struct string *s1, const char *s2 );
37 char * stringcat ( struct string *s1, const char *s2 );
38
39 extern struct char_table dquote_table[3];
40 extern struct char_table squote_table[1];
41
42 #endif