quota: use QUOTACHECK path correctly as tested in configure.ac

https://bugs.freedesktop.org/show_bug.cgi?id=63555
This commit is contained in:
Lennart Poettering 2013-05-06 21:15:38 +02:00
parent f8964235e6
commit 8337416301
2 changed files with 14 additions and 15 deletions

View file

@ -165,6 +165,7 @@ AM_CPPFLAGS = \
-DX_SERVER=\"$(bindir)/X\" \ -DX_SERVER=\"$(bindir)/X\" \
-DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \ -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \
-DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \ -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \
-DQUOTACHECK=\"$(QUOTACHECK)\" \
-I $(top_srcdir)/src \ -I $(top_srcdir)/src \
-I $(top_srcdir)/src/shared \ -I $(top_srcdir)/src/shared \
-I $(top_srcdir)/src/login \ -I $(top_srcdir)/src/login \

View file

@ -33,14 +33,16 @@ static bool arg_skip = false;
static bool arg_force = false; static bool arg_force = false;
static int parse_proc_cmdline(void) { static int parse_proc_cmdline(void) {
char *line, *w, *state; _cleanup_free_ char *line = NULL;
int r; char *w, *state;
size_t l; size_t l;
int r;
if (detect_container(NULL) > 0) if (detect_container(NULL) > 0)
return 0; return 0;
if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { r = read_one_line_file("/proc/cmdline", &line);
if (r < 0) {
log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
return 0; return 0;
} }
@ -62,8 +64,6 @@ static int parse_proc_cmdline(void) {
} }
#endif #endif
} }
free(line);
return 0; return 0;
} }
@ -77,13 +77,13 @@ static void test_files(void) {
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
static const char * const cmdline[] = { static const char * const cmdline[] = {
"/sbin/quotacheck", QUOTACHECK,
"-anug", "-anug",
NULL NULL
}; };
int r = EXIT_FAILURE;
pid_t pid; pid_t pid;
if (argc > 1) { if (argc > 1) {
@ -102,23 +102,21 @@ int main(int argc, char *argv[]) {
if (!arg_force) { if (!arg_force) {
if (arg_skip) if (arg_skip)
return 0; return EXIT_SUCCESS;
if (access("/run/systemd/quotacheck", F_OK) < 0) if (access("/run/systemd/quotacheck", F_OK) < 0)
return 0; return EXIT_SUCCESS;
} }
if ((pid = fork()) < 0) { pid = fork();
if (pid < 0) {
log_error("fork(): %m"); log_error("fork(): %m");
goto finish; return EXIT_FAILURE;
} else if (pid == 0) { } else if (pid == 0) {
/* Child */ /* Child */
execv(cmdline[0], (char**) cmdline); execv(cmdline[0], (char**) cmdline);
_exit(1); /* Operational error */ _exit(1); /* Operational error */
} }
r = wait_for_terminate_and_warn("quotacheck", pid) == 0 ? EXIT_SUCCESS : EXIT_FAILURE; return wait_for_terminate_and_warn("quotacheck", pid) >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
finish:
return r;
} }