From 5752e276fb585d07bd0f8e8b2a1f2827afdf2799 Mon Sep 17 00:00:00 2001 From: "Marc-A. Dahlhaus" Date: Tue, 18 May 2010 14:32:02 +0200 Subject: Allow to include a path containing wildcards Dan: line wrapping and man page touchup. Signed-off-by: Marc-A. Dahlhaus Signed-off-by: Dan McGee --- src/pacman/pacman.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 6ecda052..78407d67 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -39,6 +39,7 @@ #include /* setlocale */ #include /* time_t */ #include +#include #if defined(PACMAN_DEBUG) && defined(HAVE_MCHECK_H) #include /* debug tracing (mtrace) */ #endif @@ -967,9 +968,35 @@ static int _parseconfig(const char *file, const char *givensection, ret = 1; goto cleanup; } - pm_printf(PM_LOG_DEBUG, "config: including %s\n", value); /* Ignore include failures... assume non-critical */ - _parseconfig(value, section, db); + int globret; + glob_t globbuf; + globret = glob(value, GLOB_NOCHECK, NULL, &globbuf); + switch(globret) { + case GLOB_NOSPACE: + pm_printf(PM_LOG_DEBUG, + "config file %s, line %d: include globing out of space\n", + file, linenum); + break; + case GLOB_ABORTED: + pm_printf(PM_LOG_DEBUG, + "config file %s, line %d: include globing read error for %s\n", + file, linenum, value); + break; + case GLOB_NOMATCH: + pm_printf(PM_LOG_DEBUG, + "config file %s, line %d: no include found for %s\n", + file, linenum, value); + break; + default: + for(int gindex = 0; gindex < globbuf.gl_pathc; gindex++) { + pm_printf(PM_LOG_DEBUG, "config file %s, line %d: including %s\n", + file, linenum, globbuf.gl_pathv[gindex]); + _parseconfig(globbuf.gl_pathv[gindex], section, db); + } + break; + } + globfree(&globbuf); continue; } if(strcmp(section, "options") == 0) { -- cgit v1.2.3-24-g4f1b