chiark / gitweb /
libudev: add udev_device_get_syspath()
[elogind.git] / udev / udev_rules.c
index ea850a84c339a90712ff89c792b8d987b3ba1322..557513afcc3ba454f8856fb3e8397cbaf51e0f25 100644 (file)
@@ -174,7 +174,7 @@ static int run_program(const char *command, const char *subsystem,
 
        /* allow programs in /lib/udev called without the path */
        if (strchr(argv[0], '/') == NULL) {
-               strlcpy(program, "/lib/udev/", sizeof(program));
+               strlcpy(program, UDEV_PREFIX "/lib/udev/", sizeof(program));
                strlcat(program, argv[0], sizeof(program));
                argv[0] = program;
        }
@@ -569,27 +569,29 @@ static int wait_for_file(struct udevice *udev, const char *file, int timeout)
 static int attr_get_by_subsys_id(const char *attrstr, char *devpath, size_t len, char **attr)
 {
        char subsys[NAME_SIZE];
-       char *attrib;
+       char *pos;
        char *id;
+       char *attrib;
        int found = 0;
 
        if (attrstr[0] != '[')
                goto out;
 
-       strlcpy(subsys, &attrstr[1], sizeof(subsys));
-
-       attrib = strchr(subsys, ']');
+       attrib = strchr(&attrstr[1], ']');
        if (attrib == NULL)
                goto out;
-       attrib[0] = '\0';
        attrib = &attrib[1];
 
+       strlcpy(subsys, &attrstr[1], sizeof(subsys));
+       pos = strchr(subsys, ']');
+       if (pos == NULL)
+               goto out;
+       pos[0] = '\0';
        id = strchr(subsys, '/');
        if (id == NULL)
                goto out;
        id[0] = '\0';
        id = &id[1];
-
        if (sysfs_lookup_devpath_by_subsys_id(devpath, len, subsys, id)) {
                if (attr != NULL) {
                        if (attrib[0] != '\0')