xref: /linux-6.15/include/linux/parser.h (revision b32a09db)
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