ifupdown: support "source-directory" stanza
Support the "source-directory" stanza from ifupdown[1]. source-directory will include all files in the named directory. Similar to the Busybox version of the "source" stanza, this version of source-directory does not currently support shell wildcards. We only check that the stanza starts with "source-dir" as ifupdown does[2]. [1] https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html#INCLUDING_OTHER_FILES [2] https://salsa.debian.org/debian/ifupdown/blob/0.8.33/config.c#L498 function old new delta read_interfaces 1150 1241 +91 Signed-off-by: Brandon Maier <brandon.maier@rockwellcollins.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
committed by
Denys Vlasenko
parent
abfa3ec059
commit
14454b3071
@@ -1022,6 +1022,22 @@ static struct interfaces_file_t *read_interfaces(const char *filename, struct in
|
|||||||
currently_processing = NONE;
|
currently_processing = NONE;
|
||||||
} else if (strcmp(first_word, "source") == 0) {
|
} else if (strcmp(first_word, "source") == 0) {
|
||||||
read_interfaces(next_word(&rest_of_line), defn);
|
read_interfaces(next_word(&rest_of_line), defn);
|
||||||
|
} else if (is_prefixed_with(first_word, "source-dir")) {
|
||||||
|
const char *dirpath;
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
|
dirpath = next_word(&rest_of_line);
|
||||||
|
dir = xopendir(dirpath);
|
||||||
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
|
char *path;
|
||||||
|
if (entry->d_name[0] == '.')
|
||||||
|
continue;
|
||||||
|
path = concat_path_file(dirpath, entry->d_name);
|
||||||
|
read_interfaces(path, defn);
|
||||||
|
free(path);
|
||||||
|
}
|
||||||
|
closedir(dir);
|
||||||
} else {
|
} else {
|
||||||
switch (currently_processing) {
|
switch (currently_processing) {
|
||||||
case IFACE:
|
case IFACE:
|
||||||
|
Reference in New Issue
Block a user