From: Tobias Brunner Date: Wed, 4 Sep 2013 16:23:07 +0000 (+0200) Subject: settings: Use glob enumerator to load included files X-Git-Tag: 5.2.0dr4~1^2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3784633fa5866bc53b47429753cb275f079c756d;p=thirdparty%2Fstrongswan.git settings: Use glob enumerator to load included files --- diff --git a/src/libstrongswan/settings/settings.c b/src/libstrongswan/settings/settings.c index cf34fd1cf0..acfa7c1ea9 100644 --- a/src/libstrongswan/settings/settings.c +++ b/src/libstrongswan/settings/settings.c @@ -24,10 +24,6 @@ #include #include -#ifdef HAVE_GLOB_H -#include -#endif /* HAVE_GLOB_H */ - #include "settings.h" #include "collections/array.h" @@ -1284,8 +1280,9 @@ static bool parse_file(linked_list_t *contents, char *file, int level, static bool parse_files(linked_list_t *contents, char *file, int level, char *pattern, section_t *section) { + enumerator_t *enumerator; bool success = TRUE; - char pat[PATH_MAX]; + char pat[PATH_MAX], *expanded; if (level > MAX_INCLUSION_LEVEL) { @@ -1319,39 +1316,23 @@ static bool parse_files(linked_list_t *contents, char *file, int level, } free(dir); } -#ifdef HAVE_GLOB_H + enumerator = enumerator_create_glob(pat); + if (enumerator) { - int status; - glob_t buf; - - status = glob(pat, GLOB_ERR, NULL, &buf); - if (status == GLOB_NOMATCH) - { - DBG1(DBG_LIB, "no files found matching '%s', ignored", pat); - } - else if (status != 0) - { - DBG1(DBG_LIB, "expanding file pattern '%s' failed", pat); - success = FALSE; - } - else + while (enumerator->enumerate(enumerator, &expanded, NULL)) { - char **expanded; - for (expanded = buf.gl_pathv; *expanded != NULL; expanded++) + success &= parse_file(contents, expanded, level + 1, section); + if (!success) { - success &= parse_file(contents, *expanded, level + 1, section); - if (!success) - { - break; - } + break; } } - globfree(&buf); + enumerator->destroy(enumerator); + } + else + { /* if glob(3) is not available, try to load pattern directly */ + success = parse_file(contents, pat, level + 1, section); } -#else /* HAVE_GLOB_H */ - /* if glob(3) is not available, try to load pattern directly */ - success = parse_file(contents, pat, level + 1, section); -#endif /* HAVE_GLOB_H */ return success; }