chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libudev: use sysfs attr ilist interface for attribute walk
[elogind.git]
/
udev
/
udev-watch.c
diff --git
a/udev/udev-watch.c
b/udev/udev-watch.c
index 7135d9f4721c7cfd74bbb61bf24592d138fd6a0c..f51a10dcabdd410589f3cdcdf1fd4386044d6214 100644
(file)
--- a/
udev/udev-watch.c
+++ b/
udev/udev-watch.c
@@
-72,8
+72,6
@@
void udev_watch_restore(struct udev *udev)
size_t l;
ssize_t len;
struct udev_device *dev;
size_t l;
ssize_t len;
struct udev_device *dev;
- int maj, min;
- char type;
if (ent->d_name[0] == '.')
continue;
if (ent->d_name[0] == '.')
continue;
@@
-81,13
+79,11
@@
void udev_watch_restore(struct udev *udev)
s = device;
l = util_strpcpy(&s, sizeof(device), udev_get_sys_path(udev));
len = readlinkat(dirfd(dir), ent->d_name, s, l);
s = device;
l = util_strpcpy(&s, sizeof(device), udev_get_sys_path(udev));
len = readlinkat(dirfd(dir), ent->d_name, s, l);
- if (len <= 0 || len
>
= (ssize_t)l)
+ if (len <= 0 || len
=
= (ssize_t)l)
goto unlink;
s[len] = '\0';
goto unlink;
s[len] = '\0';
- if (sscanf(s, "%c%i:%i", &type, &maj, &min) != 3)
- goto unlink;
- dev = udev_device_new_from_devnum(udev, type, makedev(maj, min));
+ dev = udev_device_new_from_id_filename(udev, s);
if (dev == NULL)
goto unlink;
if (dev == NULL)
goto unlink;
@@
-109,7
+105,6
@@
unlink:
void udev_watch_begin(struct udev *udev, struct udev_device *dev)
{
char filename[UTIL_PATH_SIZE];
void udev_watch_begin(struct udev *udev, struct udev_device *dev)
{
char filename[UTIL_PATH_SIZE];
- char majmin[UTIL_PATH_SIZE];
int wd;
if (inotify_fd < 0)
int wd;
if (inotify_fd < 0)
@@
-123,13
+118,10
@@
void udev_watch_begin(struct udev *udev, struct udev_device *dev)
return;
}
return;
}
- snprintf(majmin, sizeof(majmin), "%c%i:%i",
- strcmp(udev_device_get_subsystem(dev), "block") == 0 ? 'b' : 'c',
- major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev)));
snprintf(filename, sizeof(filename), "%s/.udev/watch/%d", udev_get_dev_path(udev), wd);
util_create_path(udev, filename);
unlink(filename);
snprintf(filename, sizeof(filename), "%s/.udev/watch/%d", udev_get_dev_path(udev), wd);
util_create_path(udev, filename);
unlink(filename);
- symlink(
majmin
, filename);
+ symlink(
udev_device_get_id_filename(dev)
, filename);
udev_device_set_watch_handle(dev, wd);
}
udev_device_set_watch_handle(dev, wd);
}
@@
-162,9
+154,6
@@
struct udev_device *udev_watch_lookup(struct udev *udev, int wd)
char *s;
size_t l;
ssize_t len;
char *s;
size_t l;
ssize_t len;
- int maj, min;
- char type;
- dev_t devnum;
if (inotify_fd < 0 || wd < 0)
return NULL;
if (inotify_fd < 0 || wd < 0)
return NULL;
@@
-173,12
+162,9
@@
struct udev_device *udev_watch_lookup(struct udev *udev, int wd)
s = majmin;
l = util_strpcpy(&s, sizeof(majmin), udev_get_sys_path(udev));
len = readlink(filename, s, l);
s = majmin;
l = util_strpcpy(&s, sizeof(majmin), udev_get_sys_path(udev));
len = readlink(filename, s, l);
- if (len <
0 || (size_t)len >
= l)
+ if (len <
= 0 || (size_t)len =
= l)
return NULL;
s[len] = '\0';
return NULL;
s[len] = '\0';
- if (sscanf(s, "%c%i:%i", &type, &maj, &min) != 3)
- return NULL;
- devnum = makedev(maj, min);
- return udev_device_new_from_devnum(udev, type, devnum);
+ return udev_device_new_from_id_filename(udev, s);
}
}