[LTP] [PATCH 8/9] metadata: metaparse: Add a few pre-defined macros
Cyril Hrubis
chrubis@suse.cz
Wed Dec 18 20:00:28 CET 2024
This is used mostly for stripping macro prefixes such as:
...
"save_restore": [
[
"/proc/sys/user/max_user_namespaces",
null,
- "TST_SR_SKIP"
+ "SKIP"
],
...
- "needs_cgroup_ver": "TST_CG_V2",
+ "needs_cgroup_ver": "2",
...
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
metadata/metaparse.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/metadata/metaparse.c b/metadata/metaparse.c
index 29c03e5c3..fa30be727 100644
--- a/metadata/metaparse.c
+++ b/metadata/metaparse.c
@@ -760,6 +760,51 @@ static void parse_include_macros(FILE *f, int level)
close_include(inc);
}
+/* pre-defined macros that makes the output cleaner. */
+static const struct macro {
+ char *from;
+ char *to;
+} internal_macros[] = {
+ {"TST_CG_V2", "2"},
+ {"TST_CG_V1", "1"},
+ {"TST_KB", "1024"},
+ {"TST_MB", "1048576"},
+ {"TST_GB", "1073741824"},
+ {"TST_SR_TBROK", "TBROK"},
+ {"TST_SR_TCONF", "TCONF"},
+ {"TST_SR_SKIP", "SKIP"},
+ {"TST_SR_TBROK_MISSING", "TBROK_MISSING"},
+ {"TST_SR_TCONF_MISSING", "TCONF_MISSING"},
+ {"TST_SR_SKIP_MISSING", "SKIP_MISSING"},
+ {"TST_SR_TBROK_RO", "TBROK_RO"},
+ {"TST_SR_TCONF_RO", "TCONF_RO"},
+ {"TST_SR_SKIP_RO", "SKIP_RO"},
+ {}
+};
+
+static void load_internal_macros(void)
+{
+ unsigned int i;
+
+ if (verbose)
+ fprintf(stderr, "PREDEFINED MACROS\n");
+
+ for (i = 0; internal_macros[i].from; i++) {
+ ENTRY e = {
+ .key = internal_macros[i].from,
+ .data = internal_macros[i].to,
+ };
+
+ if (verbose)
+ fprintf(stderr, " MACRO %s=%s\n", e.key, (char*)e.data);
+
+ hsearch(e, ENTER);
+ }
+
+ if (verbose)
+ fprintf(stderr, "END PREDEFINED MACROS\n");
+}
+
static struct data_node *parse_file(const char *fname)
{
int state = 0, found = 0;
@@ -777,6 +822,8 @@ static struct data_node *parse_file(const char *fname)
struct data_node *res = data_node_hash();
struct data_node *doc = data_node_array();
+ load_internal_macros();
+
while ((token = next_token(f, doc))) {
if (state < 6 && !strcmp(tokens[state], token)) {
state++;
--
2.45.2
More information about the ltp
mailing list