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