continue;
}
- k = sd_device_get_devnum(device, &devnum);
- if (k < 0) {
- r = k;
- continue;
- }
-
- k = sd_device_get_ifindex(device, &ifindex);
- if (k < 0) {
- r = k;
- continue;
- }
-
k = sd_device_get_is_initialized(device, &initialized);
if (k < 0) {
r = k;
*/
if (!enumerator->match_allow_uninitialized &&
!initialized &&
- (major(devnum) > 0 || ifindex > 0))
+ (sd_device_get_devnum(device, &devnum) >= 0 ||
+ (sd_device_get_ifindex(device, &ifindex) >= 0 && ifindex > 0)))
continue;
if (!match_parent(enumerator, device))
if (r < 0)
return r;
+ if (device->devmode == (mode_t) -1)
+ return -ENOENT;
+
*mode = device->devmode;
return 0;
if (r < 0)
return r;
+ if (device->devuid == (uid_t) -1)
+ return -ENOENT;
+
*uid = device->devuid;
return 0;
if (r < 0)
return r;
+ if (device->devgid == (gid_t) -1)
+ return -ENOENT;
+
*gid = device->devgid;
return 0;
if (r < 0)
return r;
+ if (device->watch_handle < 0)
+ return -ENOENT;
+
*handle = device->watch_handle;
return 0;
*device = (sd_device) {
.n_ref = 1,
.watch_handle = -1,
+ .ifindex = -1,
+ .devmode = (mode_t) -1,
+ .devuid = (uid_t) -1,
+ .devgid = (gid_t) -1,
};
*ret = device;
if (r < 0)
return r;
+ if (device->ifindex < 0)
+ return -ENOENT;
+
*ifindex = device->ifindex;
return 0;
if (r < 0)
return r;
+ if (!device->devtype)
+ return -ENOENT;
+
*devtype = device->devtype;
return 0;
if (r < 0)
return r;
+ if (major(device->devnum) <= 0)
+ return -ENOENT;
+
*devnum = device->devnum;
return 0;
return r;
}
+ if (!device->sysnum)
+ return -ENOENT;
+
*ret = device->sysnum;
return 0;
if (r < 0)
return r;
- r = sd_device_get_devnum(device, &devnum);
- if (r < 0)
- return r;
-
- r = sd_device_get_ifindex(device, &ifindex);
- if (r < 0)
- return r;
-
- if (major(devnum) > 0) {
+ if (sd_device_get_devnum(device, &devnum) >= 0) {
assert(subsystem);
/* use dev_t — b259:131072, c254:0 */
major(devnum), minor(devnum));
if (r < 0)
return -ENOMEM;
- } else if (ifindex > 0) {
+ } else if (sd_device_get_ifindex(device, &ifindex) >= 0 && ifindex > 0) {
/* use netdev ifindex — n3 */
r = asprintf(&id, "n%u", ifindex);
if (r < 0)
r = sd_device_get_devnum(udev_device->device, &devnum);
if (r < 0) {
- errno = -r;
+ if (r != -ENOENT)
+ errno = -r;
return makedev(0, 0);
}
r = sd_device_get_devtype(udev_device->device, &devtype);
if (r < 0) {
- errno = -r;
+ if (r != -ENOENT)
+ errno = -r;
return NULL;
}
r = sd_device_get_sysnum(udev_device->device, &sysnum);
if (r < 0) {
- errno = -r;
+ if (r != -ENOENT)
+ errno = -r;
return NULL;
}