| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | /* | 
|---|
| 3 | * linux/include/linux/parser.h | 
|---|
| 4 | * | 
|---|
| 5 | * Header for lib/parser.c | 
|---|
| 6 | * Intended use of these functions is parsing filesystem argument lists, | 
|---|
| 7 | * but could potentially be used anywhere else that simple option=arg | 
|---|
| 8 | * parsing is required. | 
|---|
| 9 | */ | 
|---|
| 10 | #ifndef _LINUX_PARSER_H | 
|---|
| 11 | #define _LINUX_PARSER_H | 
|---|
| 12 |  | 
|---|
| 13 | /* associates an integer enumerator with a pattern string. */ | 
|---|
| 14 | struct match_token { | 
|---|
| 15 | int token; | 
|---|
| 16 | const char *pattern; | 
|---|
| 17 | }; | 
|---|
| 18 |  | 
|---|
| 19 | typedef struct match_token match_table_t[]; | 
|---|
| 20 |  | 
|---|
| 21 | /* Maximum number of arguments that match_token will find in a pattern */ | 
|---|
| 22 | enum {MAX_OPT_ARGS = 3}; | 
|---|
| 23 |  | 
|---|
| 24 | /* Describe the location within a string of a substring */ | 
|---|
| 25 | typedef struct { | 
|---|
| 26 | char *from; | 
|---|
| 27 | char *to; | 
|---|
| 28 | } substring_t; | 
|---|
| 29 |  | 
|---|
| 30 | int match_token(char *, const match_table_t table, substring_t args[]); | 
|---|
| 31 | int match_int(substring_t *, int *result); | 
|---|
| 32 | int match_uint(substring_t *s, unsigned int *result); | 
|---|
| 33 | int match_u64(substring_t *, u64 *result); | 
|---|
| 34 | int match_octal(substring_t *, int *result); | 
|---|
| 35 | int match_hex(substring_t *, int *result); | 
|---|
| 36 | bool match_wildcard(const char *pattern, const char *str); | 
|---|
| 37 | size_t match_strlcpy(char *, const substring_t *, size_t); | 
|---|
| 38 | char *match_strdup(const substring_t *); | 
|---|
| 39 |  | 
|---|
| 40 | #endif /* _LINUX_PARSER_H */ | 
|---|
| 41 |  | 
|---|