xref: /openbmc/linux/include/linux/parser.h (revision 01531ac3)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  * linux/include/linux/parser.h
41da177e4SLinus Torvalds  *
51da177e4SLinus Torvalds  * Header for lib/parser.c
61da177e4SLinus Torvalds  * Intended use of these functions is parsing filesystem argument lists,
71da177e4SLinus Torvalds  * but could potentially be used anywhere else that simple option=arg
81da177e4SLinus Torvalds  * parsing is required.
91da177e4SLinus Torvalds  */
108b859960SEric Biggers #ifndef _LINUX_PARSER_H
118b859960SEric Biggers #define _LINUX_PARSER_H
121da177e4SLinus Torvalds 
131da177e4SLinus Torvalds /* associates an integer enumerator with a pattern string. */
141da177e4SLinus Torvalds struct match_token {
151da177e4SLinus Torvalds 	int token;
16ef4533f8SDavid Howells 	const char *pattern;
171da177e4SLinus Torvalds };
181da177e4SLinus Torvalds 
191a3f7d98SLinus Torvalds typedef struct match_token match_table_t[];
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds /* Maximum number of arguments that match_token will find in a pattern */
221da177e4SLinus Torvalds enum {MAX_OPT_ARGS = 3};
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds /* Describe the location within a string of a substring */
251da177e4SLinus Torvalds typedef struct {
261da177e4SLinus Torvalds 	char *from;
271da177e4SLinus Torvalds 	char *to;
281da177e4SLinus Torvalds } substring_t;
291da177e4SLinus Torvalds 
30a447c093SSteven Whitehouse int match_token(char *, const match_table_t table, substring_t args[]);
311da177e4SLinus Torvalds int match_int(substring_t *, int *result);
32*01531ac3SBingJing Chang int match_uint(substring_t *s, unsigned int *result);
33a317178eSJames Smart int match_u64(substring_t *, u64 *result);
341da177e4SLinus Torvalds int match_octal(substring_t *, int *result);
351da177e4SLinus Torvalds int match_hex(substring_t *, int *result);
36aace0509SDu, Changbin bool match_wildcard(const char *pattern, const char *str);
37b32a09dbSMarkus Armbruster size_t match_strlcpy(char *, const substring_t *, size_t);
38ef4533f8SDavid Howells char *match_strdup(const substring_t *);
398b859960SEric Biggers 
408b859960SEric Biggers #endif /* _LINUX_PARSER_H */
41