X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Flib%2Flibudev-device.c;h=b5d42354e548d31c33f4304f6e35ef6049d362dd;hb=babcf3cb22af24725030ad795f2e41d024afced3;hp=daf2217765ee373efc0b326696f77d7b27cd07f8;hpb=ebacd6ecc301cb4cdacd1a18f6514c4a839f5999;p=elogind.git diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c index daf221776..b5d42354e 100644 --- a/udev/lib/libudev-device.c +++ b/udev/lib/libudev-device.c @@ -75,7 +75,7 @@ static size_t devpath_to_db_path(struct udev *udev, const char *devpath, char *f return util_path_encode(&filename[start], len - start); } -static int device_read_db(struct udev_device *udev_device) +int udev_device_read_db(struct udev_device *udev_device) { struct stat stats; char filename[UTIL_PATH_SIZE]; @@ -220,7 +220,7 @@ static void device_load_info(struct udev_device *device) { device->info_loaded = 1; udev_device_read_uevent_file(device); - device_read_db(device); + udev_device_read_db(device); } void udev_device_set_info_loaded(struct udev_device *device) @@ -936,8 +936,13 @@ int udev_device_set_syspath(struct udev_device *udev_device, const char *syspath } /* trailing number */ - while (isdigit(udev_device->sysname[--len])) + while (len > 0 && isdigit(udev_device->sysname[--len])) udev_device->sysnum = &udev_device->sysname[len]; + + /* sysname is completely numeric */ + if (len == 0) + udev_device->sysnum = NULL; + return 0; }