X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbinfmt%2Fbinfmt.c;h=0399ab75e046f1594f635173b29dbf33d7ec14dc;hb=dc36ac673356534b8b32c31e1892e55b8f891381;hp=0e60618e9080b5ff40613e168258130bead6604f;hpb=fc1a2e06a2eab6ca16664adb83b61fe958f00598;p=elogind.git diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index 0e60618e9..0399ab75e 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -6,16 +6,16 @@ Copyright 2010 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -31,6 +31,7 @@ #include "hashmap.h" #include "strv.h" #include "util.h" +#include "conf-files.h" static int delete_rule(const char *rule) { char *x, *fn = NULL, *e; @@ -118,11 +119,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 +126,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[i], 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;