From 9bbcdb56d8221e2e839a2cf03fc071952fe7bc3c Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 22 Aug 2005 12:01:55 +0200 Subject: [PATCH 1/1] fix exit code of udevinitsend and udevmonitor Thanks to: Marco d'Itri for the initial patch. Signed-off-by: Kay Sievers --- udevinitsend.c | 12 +++++++----- udevmonitor.c | 11 ++++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/udevinitsend.c b/udevinitsend.c index 5abf3d4bd..ea05734a0 100644 --- a/udevinitsend.c +++ b/udevinitsend.c @@ -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; } diff --git a/udevmonitor.c b/udevmonitor.c index 2775b295c..9fe6da906 100644 --- a/udevmonitor.c +++ b/udevmonitor.c @@ -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; } -- 2.30.2