[LTP] [RFC PATCH 1/1] metaparse: Replace macro also in arrays
Petr Vorel
pvorel@suse.cz
Mon Aug 1 16:35:25 CEST 2022
> Hi!
> > This helps to replace macros like:
> > #define TEST_APP "userns06_capcheck"
> > static const char *const resource_files[] = {
> > TEST_APP,
> > NULL,
> > };
> > $ ./metaparse -Iinclude -Itestcases/kernel/syscalls/utils/ ../testcases/kernel/containers/userns/userns06.c
> > Before:
> > "resource_files": [
> > "TEST_APP"
> > ],
> > ...
> > After:
> > "resource_files": [
> > "userns06_capcheck"
> > ],
> > ...
> > Signed-off-by: Petr Vorel <pvorel@suse.cz>
> > ---
> > Hi all,
> > This is a reaction on patch
> > https://patchwork.ozlabs.org/project/ltp/patch/20220722083529.209-1-chenhx.fnst@fujitsu.com/
> > First: I was wrong, inlining arrays does any change in the docparse output.
> > BTW I'd be still for inlining for better readability.
> > I'm not sure if this is not good idea, maybe some of the constants should be
> > kept unparsed, e.g.:
> > Orig:
> > "caps": [
> > "TST_CAP",
> > "(",
> > "TST_CAP_DROP",
> > "CAP_SYS_RESOURCE",
> > Becomes:
> > "caps": [
> > "TST_CAP",
> > "(",
> > "TST_CAP_DROP",
> > "24",
> > CAP_SYS_RESOURCE is replaced because it's a string, but IMHO it'd be better to keep it.
> > TST_CAP{_DROP,} aren't replaced because they aren't a plain strings.
> > Maybe replace only non-numerc values?
> That really depends on the context, we do have many cases where we have
> a macro that expands to numeric that should be expanded, runtime would
> be one of the prime examples of that.
Yep.
> I guess that the only solution would be an explicit list of macro
> prefixes that should not be expanded, e.g. do not expand if macro starts
> with "CAP_".
Good idea, thanks! I was thinking about rewrite parsing to sparse, but you would
not like it as being slow. This is indeed a better solution.
Kind regards,
Petr
More information about the ltp
mailing list