diff options
author | Michal Domonkos <mdomonko@redhat.com> | 2022-05-23 14:38:02 +0200 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2022-08-18 12:33:00 +0300 |
commit | ce6247e9e3b5e7719d777488757aa51b8229c187 (patch) | |
tree | 61847f389968030c138dad48def9aba352bf602d /rpmio/rpmglob.c | |
parent | 9ddb2508c893d45560b54fc78b488e3622fd6be3 (diff) | |
download | rpm-ce6247e9e3b5e7719d777488757aa51b8229c187.tar.gz |
Append to arglist in rpmGlob()
Instead of constructing a new list from scratch and returning that, just
extend the passed list. This makes it easier to use this function
incrementally when expanding multiple patterns in a loop, such as during
package manifest parsing which we adapt here right away.
Preserve the ability to pass NULL as argvPtr and still get a match count
via argcPtr, by keeping the local argv around for that case.
No functional change.
Diffstat (limited to 'rpmio/rpmglob.c')
-rw-r--r-- | rpmio/rpmglob.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/rpmio/rpmglob.c b/rpmio/rpmglob.c index 5595e16e3..c299cf932 100644 --- a/rpmio/rpmglob.c +++ b/rpmio/rpmglob.c @@ -74,6 +74,10 @@ int rpmGlob(const char * pattern, int * argcPtr, ARGV_t * argvPtr) int i; int rc = 0; + if (argvPtr == NULL) + /* We still want to count matches so use a scratch list */ + argvPtr = &argv; + flags |= GLOB_BRACE; if (home != NULL && strlen(home) > 0) @@ -91,7 +95,7 @@ int rpmGlob(const char * pattern, int * argcPtr, ARGV_t * argvPtr) #endif if (!local || !ismagic(pattern)) { - argvAdd(&argv, pattern); + argvAdd(argvPtr, pattern); goto exit; } @@ -145,16 +149,14 @@ int rpmGlob(const char * pattern, int * argcPtr, ARGV_t * argvPtr) if (globRoot > globURL && globRoot[-1] == '/') while (*globFile == '/') globFile++; strcpy(globRoot, globFile); - argvAdd(&argv, globURL); + argvAdd(argvPtr, globURL); } globfree(&gl); free(globURL); exit: - argc = argvCount(argv); + argc = argvCount(*argvPtr); if (argc > 0) { - if (argvPtr) - *argvPtr = argv; if (argcPtr) *argcPtr = argc; rc = 0; @@ -172,8 +174,6 @@ exit: free(old_ctype); } #endif - if (rc || argvPtr == NULL) { - argvFree(argv); - } + argvFree(argv); return rc; } |