1*99a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 2*99a2dd95SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation. 3*99a2dd95SBruce Richardson * Copyright (c) 2009, Olivier MATZ <[email protected]> 4*99a2dd95SBruce Richardson * All rights reserved. 5*99a2dd95SBruce Richardson */ 6*99a2dd95SBruce Richardson 7*99a2dd95SBruce Richardson #ifndef _PARSE_STRING_H_ 8*99a2dd95SBruce Richardson #define _PARSE_STRING_H_ 9*99a2dd95SBruce Richardson 10*99a2dd95SBruce Richardson #include <cmdline_parse.h> 11*99a2dd95SBruce Richardson 12*99a2dd95SBruce Richardson #ifdef __cplusplus 13*99a2dd95SBruce Richardson extern "C" { 14*99a2dd95SBruce Richardson #endif 15*99a2dd95SBruce Richardson 16*99a2dd95SBruce Richardson /* size of a parsed string */ 17*99a2dd95SBruce Richardson #define STR_TOKEN_SIZE 128 18*99a2dd95SBruce Richardson 19*99a2dd95SBruce Richardson /* size of a parsed multi string */ 20*99a2dd95SBruce Richardson #define STR_MULTI_TOKEN_SIZE 4096 21*99a2dd95SBruce Richardson 22*99a2dd95SBruce Richardson typedef char cmdline_fixed_string_t[STR_TOKEN_SIZE]; 23*99a2dd95SBruce Richardson 24*99a2dd95SBruce Richardson typedef char cmdline_multi_string_t[STR_MULTI_TOKEN_SIZE]; 25*99a2dd95SBruce Richardson 26*99a2dd95SBruce Richardson struct cmdline_token_string_data { 27*99a2dd95SBruce Richardson const char *str; 28*99a2dd95SBruce Richardson }; 29*99a2dd95SBruce Richardson 30*99a2dd95SBruce Richardson struct cmdline_token_string { 31*99a2dd95SBruce Richardson struct cmdline_token_hdr hdr; 32*99a2dd95SBruce Richardson struct cmdline_token_string_data string_data; 33*99a2dd95SBruce Richardson }; 34*99a2dd95SBruce Richardson typedef struct cmdline_token_string cmdline_parse_token_string_t; 35*99a2dd95SBruce Richardson 36*99a2dd95SBruce Richardson extern struct cmdline_token_ops cmdline_token_string_ops; 37*99a2dd95SBruce Richardson 38*99a2dd95SBruce Richardson int cmdline_parse_string(cmdline_parse_token_hdr_t *tk, const char *srcbuf, 39*99a2dd95SBruce Richardson void *res, unsigned ressize); 40*99a2dd95SBruce Richardson int cmdline_complete_get_nb_string(cmdline_parse_token_hdr_t *tk); 41*99a2dd95SBruce Richardson int cmdline_complete_get_elt_string(cmdline_parse_token_hdr_t *tk, int idx, 42*99a2dd95SBruce Richardson char *dstbuf, unsigned int size); 43*99a2dd95SBruce Richardson int cmdline_get_help_string(cmdline_parse_token_hdr_t *tk, char *dstbuf, 44*99a2dd95SBruce Richardson unsigned int size); 45*99a2dd95SBruce Richardson 46*99a2dd95SBruce Richardson /** 47*99a2dd95SBruce Richardson * Token marked as TOKEN_STRING_MULTI takes entire parsing string 48*99a2dd95SBruce Richardson * until “#” sign appear. Everything after “#” sign is treated as a comment. 49*99a2dd95SBruce Richardson * 50*99a2dd95SBruce Richardson * Note: 51*99a2dd95SBruce Richardson * In this case second parameter of TOKEN_STRING_INITIALIZER must be a type of 52*99a2dd95SBruce Richardson * cmdline_multi_string_t. 53*99a2dd95SBruce Richardson */ 54*99a2dd95SBruce Richardson #define TOKEN_STRING_MULTI "" 55*99a2dd95SBruce Richardson 56*99a2dd95SBruce Richardson #define TOKEN_STRING_INITIALIZER(structure, field, string) \ 57*99a2dd95SBruce Richardson { \ 58*99a2dd95SBruce Richardson /* hdr */ \ 59*99a2dd95SBruce Richardson { \ 60*99a2dd95SBruce Richardson &cmdline_token_string_ops, /* ops */ \ 61*99a2dd95SBruce Richardson offsetof(structure, field), /* offset */ \ 62*99a2dd95SBruce Richardson }, \ 63*99a2dd95SBruce Richardson /* string_data */ \ 64*99a2dd95SBruce Richardson { \ 65*99a2dd95SBruce Richardson string, /* str */ \ 66*99a2dd95SBruce Richardson }, \ 67*99a2dd95SBruce Richardson } 68*99a2dd95SBruce Richardson 69*99a2dd95SBruce Richardson #ifdef __cplusplus 70*99a2dd95SBruce Richardson } 71*99a2dd95SBruce Richardson #endif 72*99a2dd95SBruce Richardson 73*99a2dd95SBruce Richardson #endif /* _PARSE_STRING_H_ */ 74