From: Martin Pitt Date: Mon, 21 Dec 2009 14:41:25 +0000 (+0100) Subject: Speed up udev_enumerate_scan_* X-Git-Tag: 174~666 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=b73bf332c2da4f539d029d5e9a09af76df12181f Speed up udev_enumerate_scan_* Check property match earlier, to avoid lots of readlink() and stat() calls when we check property matches. --- diff --git a/libudev/libudev-enumerate.c b/libudev/libudev-enumerate.c index 2fcd34829..53cd53b69 100644 --- a/libudev/libudev-enumerate.c +++ b/libudev/libudev-enumerate.c @@ -574,6 +574,8 @@ static int scan_dir_and_add_devices(struct udev_enumerate *udev_enumerate, continue; util_strscpyl(syspath, sizeof(syspath), path, "/", dent->d_name, NULL); + if (!match_property(udev_enumerate, syspath)) + continue; if (lstat(syspath, &statbuf) != 0) continue; if (S_ISREG(statbuf.st_mode)) @@ -586,8 +588,6 @@ static int scan_dir_and_add_devices(struct udev_enumerate *udev_enumerate, continue; if (!match_sysattr(udev_enumerate, syspath)) continue; - if (!match_property(udev_enumerate, syspath)) - continue; syspath_add(udev_enumerate, syspath); } closedir(dir);