udev-rules: fix querying of attributes
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 22 Feb 2016 17:17:08 +0000 (12:17 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 22 Feb 2016 18:21:32 +0000 (13:21 -0500)
faccessat returns 0 on success.

A cosmetic fix is also included: the slash was doubled unnecessarily.

src/udev/udev-rules.c

index 8470456..475856d 100644 (file)
@@ -705,10 +705,10 @@ static void attr_subst_subdir(char *attr, size_t len) {
 
         for (dent = readdir(dir); dent != NULL; dent = readdir(dir))
                 if (dent->d_name[0] != '.') {
-                        char n[strlen(dent->d_name) + 1 + strlen(tail) + 1];
+                        char n[strlen(dent->d_name) + strlen(tail) + 1];
 
-                        strscpyl(n, sizeof n, dent->d_name, "/", tail, NULL);
-                        if (faccessat(dirfd(dir), n, F_OK, 0)) {
+                        strscpyl(n, sizeof n, dent->d_name, tail, NULL);
+                        if (faccessat(dirfd(dir), n, F_OK, 0) == 0) {
                                 strscpyl(attr, len, path, n, NULL);
                                 break;
                         }