summaryrefslogtreecommitdiff
path: root/src/binfmt
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-03-20 15:29:49 +0100
committerLennart Poettering <lennart@poettering.net>2012-03-20 15:29:49 +0100
commit133176702a03e5f6264f35c403dd7720d9e05c3f (patch)
treeb6d43675124cb7d54786797da6af290066a55633 /src/binfmt
parentbd08f2422491169e92dc0899d5ba848fcae4c15c (diff)
bmfmt: allow passing more than one config file name
Diffstat (limited to 'src/binfmt')
-rw-r--r--src/binfmt/binfmt.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
index 0e60618e90..28925ac84b 100644
--- a/src/binfmt/binfmt.c
+++ b/src/binfmt/binfmt.c
@@ -118,11 +118,6 @@ finish:
int main(int argc, char *argv[]) {
int r = 0;
- if (argc > 2) {
- log_error("This program expects one or no arguments.");
- return EXIT_FAILURE;
- }
-
log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
@@ -130,25 +125,35 @@ int main(int argc, char *argv[]) {
umask(0022);
if (argc > 1) {
- r = apply_file(argv[1], false);
+ int i;
+
+ for (i = 1; i < argc; i++) {
+ int k;
+
+ k = apply_file(argv[1], false);
+ if (k < 0 && r == 0)
+ r = k;
+ }
} else {
char **files, **f;
- /* Flush out all rules */
- write_one_line_file("/proc/sys/fs/binfmt_misc/status", "-1");
-
r = conf_files_list(&files, ".conf",
"/etc/binfmt.d",
"/run/binfmt.d",
"/usr/local/lib/binfmt.d",
"/usr/lib/binfmt.d",
+#ifdef HAVE_SPLIT_USR
+ "/lib/binfmt.d",
+#endif
NULL);
-
if (r < 0) {
log_error("Failed to enumerate binfmt.d files: %s", strerror(-r));
goto finish;
}
+ /* Flush out all rules */
+ write_one_line_file("/proc/sys/fs/binfmt_misc/status", "-1");
+
STRV_FOREACH(f, files) {
int k;