11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * linux/include/linux/parser.h 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Header for lib/parser.c 51da177e4SLinus Torvalds * Intended use of these functions is parsing filesystem argument lists, 61da177e4SLinus Torvalds * but could potentially be used anywhere else that simple option=arg 71da177e4SLinus Torvalds * parsing is required. 81da177e4SLinus Torvalds */ 91da177e4SLinus Torvalds 101da177e4SLinus Torvalds 111da177e4SLinus Torvalds /* associates an integer enumerator with a pattern string. */ 121da177e4SLinus Torvalds struct match_token { 131da177e4SLinus Torvalds int token; 14ef4533f8SDavid Howells const char *pattern; 151da177e4SLinus Torvalds }; 161da177e4SLinus Torvalds 17989485c1SRalf Baechle typedef struct match_token match_table_t[]; 181da177e4SLinus Torvalds 191da177e4SLinus Torvalds /* Maximum number of arguments that match_token will find in a pattern */ 201da177e4SLinus Torvalds enum {MAX_OPT_ARGS = 3}; 211da177e4SLinus Torvalds 221da177e4SLinus Torvalds /* Describe the location within a string of a substring */ 231da177e4SLinus Torvalds typedef struct { 241da177e4SLinus Torvalds char *from; 251da177e4SLinus Torvalds char *to; 261da177e4SLinus Torvalds } substring_t; 271da177e4SLinus Torvalds 281da177e4SLinus Torvalds int match_token(char *, match_table_t table, substring_t args[]); 291da177e4SLinus Torvalds int match_int(substring_t *, int *result); 301da177e4SLinus Torvalds int match_octal(substring_t *, int *result); 311da177e4SLinus Torvalds int match_hex(substring_t *, int *result); 32*b32a09dbSMarkus Armbruster size_t match_strlcpy(char *, const substring_t *, size_t); 33ef4533f8SDavid Howells char *match_strdup(const substring_t *); 34