chiark / gitweb /
[PATCH] replace tdb database by simple lockless file database
[elogind.git] / udevsend.c
index 883181c1b69dfe496677c942ac483d7a67c404ce..19922f3870728cdd394cbfcb6b0827d569c8e59d 100644 (file)
@@ -82,7 +82,7 @@ static int start_daemon(void)
                dbg("fork of helper failed");
                return -1;
        default:
-               wait(NULL);
+               waitpid(pid, NULL, 0);
        }
        return 0;
 }
@@ -97,13 +97,13 @@ static void run_udev(const char *subsystem)
                /* child */
                execl(UDEV_BIN, "udev", subsystem, NULL);
                dbg("exec of child failed");
-               exit(1);
+               _exit(1);
                break;
        case -1:
                dbg("fork of child failed");
                break;
        default:
-               wait(NULL);
+               waitpid(pid, NULL, 0);
        }
 }
 
@@ -117,7 +117,6 @@ int main(int argc, char* argv[])
        unsigned long long seq;
        int retval = 1;
        int loop;
-       struct timespec tspec;
        int sock = -1;
        struct sockaddr_un saddr;
        socklen_t addrlen;
@@ -176,8 +175,8 @@ int main(int argc, char* argv[])
        strfieldcpy(msg.subsystem, subsystem);
 
        /* If we can't send, try to start daemon and resend message */
-       loop = UDEVSEND_CONNECT_RETRY;
-       while (loop--) {
+       loop = SEND_WAIT_MAX_SECONDS * SEND_WAIT_LOOP_PER_SECOND;
+       while (--loop) {
                retval = sendto(sock, &msg, sizeof(struct hotplug_msg), 0,
                                (struct sockaddr *)&saddr, addrlen);
                if (retval != -1) {
@@ -191,19 +190,17 @@ int main(int argc, char* argv[])
                }
 
                if (!started_daemon) {
-                       info("starting udevd daemon");
+                       dbg("try to start udevd daemon");
                        retval = start_daemon();
                        if (retval) {
                                info("error starting daemon");
                                goto fallback;
                        }
-                       dbg("daemon started");
+                       info("udevd daemon started");
                        started_daemon = 1;
                } else {
-                       dbg("retry to connect %d", UDEVSEND_CONNECT_RETRY - loop);
-                       tspec.tv_sec = 0;
-                       tspec.tv_nsec = 100000000;  /* 100 millisec */
-                       nanosleep(&tspec, NULL);
+                       dbg("retry to connect %d", SEND_WAIT_MAX_SECONDS * SEND_WAIT_LOOP_PER_SECOND - loop);
+                       usleep(1000 * 1000 / SEND_WAIT_LOOP_PER_SECOND);
                }
        }