1 /* 2 * Copyright (c) 2018 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: Text parsing related abstractions, not related to a specific type 22 */ 23 24 #ifndef __QDF_PARSE_H 25 #define __QDF_PARSE_H 26 27 #include "qdf_status.h" 28 29 typedef QDF_STATUS (*qdf_ini_section_cb)(void *context, const char *name); 30 typedef QDF_STATUS (*qdf_ini_item_cb)(void *context, 31 const char *key, 32 const char *value); 33 34 /** 35 * qdf_ini_parse() - parse an ini file 36 * @ini_path: The full file path of the ini file to parse 37 * @context: The caller supplied context to pass into callbacks 38 * @item_cb: Ini item (key/value pair) handler callback function 39 * Return QDF_STATUS_SUCCESS to continue parsing, else to abort 40 * @section_cb: Ini section header handler callback function 41 * Return QDF_STATUS_SUCCESS to continue parsing, else to abort 42 * 43 * The *.ini file format is a simple format consisting of a list of key/value 44 * pairs (items), separated by an '=' character. Comments are initiated with 45 * a '#' character. Sections are also supported, using '[' and ']' around the 46 * section name. e.g. 47 * 48 * # comments are started with a '#' character 49 * # items are key/value string pairs, separated by the '=' character 50 * someKey1=someValue1 51 * someKey2=someValue2 # this is also a comment 52 * 53 * # section headers are enclosed in square brackets 54 * [some section header] # new section begins 55 * someKey3=someValue3 56 * 57 * Return: QDF_STATUS 58 */ 59 QDF_STATUS 60 qdf_ini_parse(const char *ini_path, void *context, 61 qdf_ini_item_cb item_cb, qdf_ini_section_cb section_cb); 62 63 /** 64 * qdf_ini_section_parse() - parse a section from ini file 65 * @ini_path: The full file path of the ini file to parse 66 * @context: The caller supplied context to pass into callbacks 67 * @item_cb: Ini item (key/value pair) handler callback function 68 * Return QDF_STATUS_SUCCESS to continue parsing, else to abort 69 * @section_name: Ini section name to be parsed from file 70 * Return QDF_STATUS_SUCCESS to continue parsing, else to abort 71 * 72 * The *.ini file format is a simple format consisting of a list of key/value 73 * pairs (items), separated by an '=' character. Comments are initiated with 74 * a '#' character. Sections are also supported, using '[' and ']' around the 75 * section name. e.g. 76 * 77 * # comments are started with a '#' character 78 * # items are key/value string pairs, separated by the '=' character 79 * someKey1=someValue1 80 * someKey2=someValue2 # this is also a comment 81 * 82 * # section headers are enclosed in square brackets 83 * [some section header] # new section begins 84 * someKey3=someValue3 85 * 86 * Return: QDF_STATUS 87 */ 88 QDF_STATUS qdf_ini_section_parse(const char *ini_path, void *context, 89 qdf_ini_item_cb item_cb, 90 const char *section_name); 91 92 /** 93 * qdf_valid_ini_check() - check ini file for invalid characters 94 * @path: path to ini file 95 * 96 * Return: true if no invalid character found, false otherwise 97 */ 98 bool qdf_valid_ini_check(const char *path); 99 100 #endif /* __QDF_PARSE_H */ 101 102