chiark / gitweb /
add udev_rules_run() to handle RUN list
[elogind.git] / udev_utils_run.c
index 8137ec1c66168530f615069ecd97c4560ad2ffb6..69b54f47a79e3400380701ff0dc15433d43da6ec 100644 (file)
@@ -24,6 +24,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <ctype.h>
+#include <syslog.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/wait.h>
@@ -69,9 +70,8 @@ int pass_env_to_socket(const char *sockname, const char *devpath, const char *ac
 }
 
 int run_program(const char *command, const char *subsystem,
-               char *result, size_t ressize, size_t *reslen, int log)
+               char *result, size_t ressize, size_t *reslen)
 {
-       int retval = 0;
        int status;
        int outpipe[2] = {-1, -1};
        int errpipe[2] = {-1, -1};
@@ -81,6 +81,7 @@ int run_program(const char *command, const char *subsystem,
        char *argv[(sizeof(arg) / 2) + 1];
        int devnull;
        int i;
+       int retval = 0;
 
        /* build argv from comand */
        strlcpy(arg, command, sizeof(arg));
@@ -109,13 +110,13 @@ int run_program(const char *command, const char *subsystem,
        info("'%s'", command);
 
        /* prepare pipes from child to parent */
-       if (result || log) {
+       if (result != NULL || udev_log_priority >= LOG_INFO) {
                if (pipe(outpipe) != 0) {
                        err("pipe failed: %s", strerror(errno));
                        return -1;
                }
        }
-       if (log) {
+       if (udev_log_priority >= LOG_INFO) {
                if (pipe(errpipe) != 0) {
                        err("pipe failed: %s", strerror(errno));
                        return -1;
@@ -158,7 +159,7 @@ int run_program(const char *command, const char *subsystem,
                        close(errpipe[WRITE_END]);
                }
                execv(argv[0], argv);
-               if ((errno == ENOENT) || (errno = ENOTDIR)) {
+               if (errno == ENOENT || errno == ENOTDIR) {
                        /* may be on a filesytem which is not mounted right now */
                        info("program '%s' not found", argv[0]);
                } else {