From c332cfc72da865f3c9f5e34867fc3ac1b0bf0154 Mon Sep 17 00:00:00 2001 From: "rml@tech9.net" Date: Thu, 23 Oct 2003 00:50:27 -0700 Subject: [PATCH] [PATCH] udev: sleep_for_dev() bits OK, I fixed that bug you hinted at earlier in my previous sleep_for_dev() patch. I am sure you fixed it, but here we go nonetheless, just in case. I actually changed it up a bit. It is probably faster to count down from SECONDS_TO_WAIT_FOR_DEV than count up. I also made the lone 'path' argument const, since it can be. Some other misc. bits, too. --- udev-add.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/udev-add.c b/udev-add.c index 7a89076ad..d237834c6 100644 --- a/udev-add.c +++ b/udev-add.c @@ -139,26 +139,24 @@ exit: static int sleep_for_dev(char *path) { char filename[SYSFS_PATH_MAX + 6]; - struct stat buf; - int loop = 0; - int retval = -ENODEV; + int loop = SECONDS_TO_WAIT_FOR_DEV; + int retval; strcpy(filename, sysfs_path); strcat(filename, path); strcat(filename, "/dev"); - while (loop < SECONDS_TO_WAIT_FOR_DEV) { + while (loop--) { + struct stat buf; + dbg("looking for %s", filename); retval = stat(filename, &buf); - if (retval == 0) { - retval = 0; + if (!retval) goto exit; - } /* sleep for a second or two to give the kernel a chance to * create the dev file */ sleep(1); - ++loop; } retval = -ENODEV; exit: -- 2.30.2