chiark / gitweb /
fix exit code of udevinitsend and udevmonitor
authorKay Sievers <kay.sievers@suse.de>
Mon, 22 Aug 2005 10:01:55 +0000 (12:01 +0200)
committerKay Sievers <kay.sievers@suse.de>
Mon, 22 Aug 2005 10:01:55 +0000 (12:01 +0200)
Thanks to: Marco d'Itri <md@Linux.IT> for the initial patch.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
udevinitsend.c
udevmonitor.c

index 5abf3d4bd33fcd361a1c58f680ae99a31ff8bb72..ea05734a0076fc7871d18af71c9259ad09c722b4 100644 (file)
@@ -128,7 +128,6 @@ static int udevsend(char *filename, int sock, int disable_loop_detection)
                }
 
                if (ch < le) {
-
                        strncpy(&usend_msg.envbuf[bufpos],ls,(ch - ls) + 1);
                        bufpos += (ch - ls) + 1;
                        if (ch[1] == '\'' && le[-1] == '\'') {
@@ -153,9 +152,10 @@ loop_end:
                retval = sendto(sock, &usend_msg, usend_msg_len, 0, (struct sockaddr *)&saddr, addrlen);
                if (retval < 0) {
                        dbg("error sending message (%s)", strerror(errno));
+                       retval = -1;
                }
        }
-               
+
        return retval;
 }
 
@@ -167,7 +167,7 @@ int main(int argc, char *argv[], char *envp[])
        char *event_file = NULL;
        DIR *dirstream;
        struct dirent *direntry;
-       int retval = 1;
+       int retval = 0;
        int disable_loop_detection = 0;
        int sock;
        const char *env;
@@ -218,7 +218,7 @@ int main(int argc, char *argv[], char *envp[])
                if (!dirstream) {
                        info("error opening directory %s: %s\n",
                             event_dir, strerror(errno));
-                       return 1;
+                       return 2;
                }
                chdir(event_dir);
                while ((direntry = readdir(dirstream)) != NULL) {
@@ -235,5 +235,7 @@ int main(int argc, char *argv[], char *envp[])
        if (sock != -1)
                close(sock);
 
-       return retval;
+       if (retval)
+               return 3;
+       return 0;
 }
index 2775b295ceac9bc18e709d77e6660dce23655612..9fe6da906f986ab81895efb67e332d7087a62a16 100644 (file)
@@ -63,6 +63,7 @@ static int init_udev_monitor_socket(void)
        if (retval < 0) {
                fprintf(stderr, "bind failed, %s\n", strerror(errno));
                close(udev_monitor_sock);
+               udev_monitor_sock = -1;
                return -1;
        }
 
@@ -125,13 +126,15 @@ int main(int argc, char *argv[])
 
        if (getuid() != 0) {
                fprintf(stderr, "need to be root, exit\n\n");
-               exit(1);
+               exit(2);
        }
 
        retval = init_udev_monitor_socket();
        if (retval)
                goto out;
-       init_uevent_netlink_sock();
+       retval = init_uevent_netlink_sock();
+       if (retval)
+               goto out;
 
        printf("udevmonitor prints the received event from the kernel [UEVENT]\n"
               "and the event which udev sends out after rule processing [UDEV]\n\n");
@@ -204,5 +207,7 @@ out:
        if (udev_monitor_sock > 0)
                close(udev_monitor_sock);
 
-       return retval;
+       if (retval)
+               return 3;
+       return 0;
 }