RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: popt Date: 06-Oct-2007 04:14:42 Branch: HEAD Handle: 2007100603144200 Modified files: popt CHANGES poptconfig.c Log: - bero: read /etc/popt.d/* files. Summary: Revision Changes Path 1.25 +1 -0 popt/CHANGES 1.31 +23 -0 popt/poptconfig.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: popt/CHANGES ============================================================================ $ cvs diff -u -r1.24 -r1.25 CHANGES --- popt/CHANGES 14 Sep 2007 11:41:35 -0000 1.24 +++ popt/CHANGES 6 Oct 2007 02:14:42 -0000 1.25 @@ -1,4 +1,5 @@ 1.12 -> 1.13: + - bero: read /etc/popt.d/* files. - jbj: don't read /etc/popt twice (#290531). - jbj: isspace(3) has i18n encoding signednesss issues on Solaris (#172393). - jbj: refactor column cursor to a structure, carry maxcols as well. @@ . patch -p0 <<'@@ .' Index: popt/poptconfig.c ============================================================================ $ cvs diff -u -r1.30 -r1.31 poptconfig.c --- popt/poptconfig.c 14 Sep 2007 11:41:35 -0000 1.30 +++ popt/poptconfig.c 6 Oct 2007 02:14:42 -0000 1.31 @@ -8,6 +8,8 @@ #include "system.h" #include "poptint.h" +#include <sys/stat.h> +#include <glob.h> /[EMAIL PROTECTED] poptContext @*/ /[EMAIL PROTECTED]@*/ /* FIX: item->option.longName kept, not dependent. */ @@ -171,6 +173,7 @@ static const char _popt_sysconfdir[] = POPT_SYSCONFDIR "/popt"; static const char _popt_etc[] = "/etc/popt"; char * fn, * home; + struct stat s; int rc; if (con->appName == NULL) return 0; @@ -183,6 +186,26 @@ rc = poptReadConfigFile(con, _popt_etc); if (rc) return rc; + stat("/etc/popt.d", &s); + if(S_ISDIR(s.st_mode)) { + glob_t g; + if (!glob("/etc/popt.d/*", 0, NULL, &g)) { + int i; + for (i=0; i<g.gl_pathc; i++) { + char *f=g.gl_pathv[i]; + if (strstr(f, ".rpmnew") || strstr(f, ".rpmsave")) + continue; + if (!stat(f, &s)) { + if (!S_ISREG(s.st_mode) && !S_ISLNK(s.st_mode)) + continue; + } + rc = poptReadConfigFile(con, f); + if (rc) return rc; + } + globfree(&g); + } + } + if ((home = getenv("HOME"))) { fn = malloc(strlen(home) + 20); strcpy(fn, home); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org