chiark / gitweb /
[PATCH] udevd - switch socket path to abstract namespace
[elogind.git] / udevsend.c
index 415207d8ca26d8108a90d17cff7b83a93abdaf5c..223647785d73a17af57fbf0b3481550e35e95dcc 100644 (file)
@@ -125,7 +125,9 @@ int main(int argc, char* argv[])
        int sock;
        struct sockaddr_un saddr;
 
+#ifdef DEBUG
        init_logging("udevsend");
+#endif
 
        subsystem = argv[1];
        if (subsystem == NULL) {
@@ -146,11 +148,10 @@ int main(int argc, char* argv[])
        }
 
        seqnum = get_seqnum();
-       if (seqnum == NULL) {
-               dbg("no seqnum");
-               goto exit;
-       }
-       seq = atoi(seqnum);
+       if (seqnum == NULL)
+               seq = 0;
+       else
+               seq = atoi(seqnum);
 
        sock = socket(AF_LOCAL, SOCK_STREAM, 0);
        if (sock == -1) {
@@ -160,10 +161,11 @@ int main(int argc, char* argv[])
 
        memset(&saddr, 0x00, sizeof(saddr));
        saddr.sun_family = AF_LOCAL;
-       strcpy(saddr.sun_path, UDEVD_SOCK);
+       /* use abstract namespace for socket path */
+       strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH);
 
        /* try to connect, if it fails start daemon */
-       retval = connect(sock, &saddr, sizeof(saddr));
+       retval = connect(sock, (struct sockaddr *) &saddr, sizeof(saddr));
        if (retval != -1) {
                goto send;
        } else {
@@ -182,7 +184,7 @@ int main(int argc, char* argv[])
        tspec.tv_nsec = 100000000;  /* 100 millisec */
        loop = UDEVSEND_CONNECT_RETRY;
        while (loop--) {
-               retval = connect(sock, &saddr, sizeof(saddr));
+               retval = connect(sock, (struct sockaddr *) &saddr, sizeof(saddr));
                if (retval != -1)
                        goto send;
                else