X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fquotacheck.c;h=60033a8eb256275c2df03b51b1cf4a5ad31cfde5;hp=5d61146d9325e607a8d193b58c3b618f26af2138;hb=4bba9156da3e1df2cee24d10d7cd88c776ef4179;hpb=550c4dcc4184d5c4d55d3786b66797e5fb99c30a diff --git a/src/quotacheck.c b/src/quotacheck.c index 5d61146d9..60033a8eb 100644 --- a/src/quotacheck.c +++ b/src/quotacheck.c @@ -26,6 +26,7 @@ #include #include "util.h" +#include "virt.h" static bool arg_skip = false; static bool arg_force = false; @@ -35,6 +36,9 @@ static int parse_proc_cmdline(void) { int r; size_t l; + if (detect_container(NULL) > 0) + return 0; + if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); return 0; @@ -50,7 +54,7 @@ static int parse_proc_cmdline(void) { arg_skip = true; else if (startswith(w, "quotacheck.mode")) log_warning("Invalid quotacheck.mode= parameter. Ignoring."); -#ifdef TARGET_FEDORA +#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA) else if (strneq(w, "forcequotacheck", l)) arg_force = true; #endif @@ -61,8 +65,8 @@ static int parse_proc_cmdline(void) { } static void test_files(void) { -#ifdef TARGET_FEDORA - /* This exists only on Fedora */ +#if defined(TARGET_FEDORA) || defined(TARGET_MANDRIVA) || defined(TARGET_MAGEIA) + /* This exists only on Fedora, Mandriva or Mageia */ if (access("/forcequotacheck", F_OK) >= 0) arg_force = true; #endif @@ -87,6 +91,8 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); + umask(0022); + parse_proc_cmdline(); test_files(); @@ -94,7 +100,7 @@ int main(int argc, char *argv[]) { if (arg_skip) return 0; - if (access("/dev/.systemd/quotacheck", F_OK) < 0) + if (access("/run/systemd/quotacheck", F_OK) < 0) return 0; } @@ -107,7 +113,7 @@ int main(int argc, char *argv[]) { _exit(1); /* Operational error */ } - r = wait_for_terminate_and_warn("quotacheck", pid) >= 0 ? EXIT_SUCCESS : EXIT_FAILURE; + r = wait_for_terminate_and_warn("quotacheck", pid) == 0 ? EXIT_SUCCESS : EXIT_FAILURE; finish: return r;