[pacman-dev] [RFC][PATCH] Introduce Include key globing for pacman.conf v3
Marc - A. Dahlhaus [ Administration | Westermann GmbH ]
mad at wol.de
Fri Sep 11 04:51:02 EDT 2009
This patch adds the ability to use Include filenames
containing wildcards and also expands the tilde to the
homedirectory of the executing user.
Added a headercheck for glob.h to configure.ac.
Added a globfree call to clean up the struct properly.
Signed-off-by: Marc-A. Dahlhaus <mad at wol.de>
---
--- pacman-3.3.0.orig/configure.ac
+++ pacman-3.3.0/configure.ac
@@ -150,7 +150,7 @@ fi
AM_CONDITIONAL(INTERNAL_DOWNLOAD, test "x$internaldownload" = "xyes")
# Checks for header files.
-AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h
strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h
sys/time.h syslog.h wchar.h])
+AC_CHECK_HEADERS([fcntl.h glob.h libintl.h limits.h locale.h string.h
strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h
sys/time.h syslog.h wchar.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
--- pacman-3.3.0.orig/src/pacman/pacman.c
+++ pacman-3.3.0/src/pacman/pacman.c
@@ -38,6 +38,7 @@
#include <locale.h> /* setlocale */
#include <time.h> /* time_t */
#include <errno.h>
+#include <glob.h>
#if defined(PACMAN_DEBUG) && defined(HAVE_MCHECK_H)
#include <mcheck.h> /* debug tracing (mtrace) */
#endif
@@ -814,8 +815,24 @@ static int _parseconfig(const char *file
} else {
/* directives with settings */
if(strcmp(key, "Include") == 0) {
- pm_printf(PM_LOG_DEBUG, "config: including %s\n", ptr);
- _parseconfig(ptr, section, db);
+ int globret;
+ glob_t globbuf;
+ globret = glob(ptr, GLOB_TILDE_CHECK, NULL, &globbuf);
+ switch(globret) {
+ case GLOB_NOSPACE:
+ pm_printf(PM_LOG_DEBUG, "config: include globing out of space
\n");
+ break;
+ case GLOB_ABORTED:
+ pm_printf(PM_LOG_DEBUG, "config: include globing read error for
%s\n", ptr);
+ break;
+ default:
+ for(int gindex = 0; gindex < globbuf.gl_pathc; gindex++) {
+ pm_printf(PM_LOG_DEBUG, "config: including %s\n",
globbuf.gl_pathv[gindex]);
+ _parseconfig(globbuf.gl_pathv[gindex], section, db);
+ }
+ break;
+ }
+ globfree(&globbuf);
/* Ignore include failures... assume non-critical */
} else if(strcmp(section, "options") == 0) {
if(strcmp(key, "NoUpgrade") == 0) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: globing3.patch
Type: text/x-patch
Size: 2265 bytes
Desc: not available
URL: <http://mailman.archlinux.org/pipermail/pacman-dev/attachments/20090911/f8377b2d/attachment.bin>
More information about the pacman-dev
mailing list