char num[32];
udev_device->ifindex = ifindex;
- snprintf(num, sizeof(num), "%u", ifindex);
+ snprintf(num, sizeof(num), "%d", ifindex);
udev_device_add_property(udev_device, "IFINDEX", num);
return 0;
}
}
f = fopen(dbfile, "re");
- if (f == NULL) {
- log_debug("no db file to read %s: %m", dbfile);
- return -errno;
- }
+ if (f == NULL)
+ return log_debug_errno(errno, "no db file to read %s: %m", dbfile);
/* devices with a database entry are initialized */
udev_device->is_initialized = true;
return NULL;
} else {
/* everything else just needs to be a directory */
- if (stat(path, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))
+ if (stat(path, &statbuf) != 0)
+ return NULL;
+
+ if (!S_ISDIR(statbuf.st_mode)) {
+ errno = EISDIR;
return NULL;
+ }
}
udev_device = udev_device_new(udev);
udev_device->id_filename = NULL;
} else if (udev_device_get_ifindex(udev_device) > 0) {
/* use netdev ifindex -- n3 */
- if (asprintf(&udev_device->id_filename, "n%u", udev_device_get_ifindex(udev_device)) < 0)
+ if (asprintf(&udev_device->id_filename, "n%i", udev_device_get_ifindex(udev_device)) < 0)
udev_device->id_filename = NULL;
} else {
/*
{
udev_device->db_persist = true;
}
+
+int udev_device_rename(struct udev_device *udev_device, const char *name)
+{
+ _cleanup_free_ char *dirname = NULL;
+ char *new_syspath;
+ int r;
+
+ if (udev_device == NULL || name == NULL)
+ return -EINVAL;
+
+ dirname = dirname_malloc(udev_device->syspath);
+ if (!dirname)
+ return -ENOMEM;
+
+ new_syspath = strappenda(dirname, "/", name);
+
+ r = udev_device_set_syspath(udev_device, new_syspath);
+ if (r < 0)
+ return r;
+
+ return 0;
+}