X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udevsettle.c;h=cb63a66bba6bf624cf76a2ea95c4e94ab5bbfbc9;hp=4b66f89cd64034a004a46c7626428a291b8ece34;hb=98d8d24bcc668022857e1b4852ac37ce4400ddf8;hpb=c70560feef0eb61a150cd2f956f0beead4313ffe diff --git a/udevsettle.c b/udevsettle.c index 4b66f89cd..cb63a66bb 100644 --- a/udevsettle.c +++ b/udevsettle.c @@ -35,6 +35,38 @@ #define DEFAULT_TIMEOUT 180 #define LOOP_PER_SECOND 20 +static void print_queue(const char *dir) +{ + LIST_HEAD(files); + struct name_entry *item; + + if (add_matching_files(&files, dir, NULL) < 0) + return; + + printf("\n\nAfter the udevadm settle timeout, the events queue contains:\n\n"); + + list_for_each_entry(item, &files, node) { + char target[NAME_SIZE]; + size_t len; + const char *filename = strrchr(item->name, '/'); + + if (filename == NULL) + continue; + filename++; + if (*filename == '\0') + continue; + + len = readlink(item->name, target, sizeof(target)); + if (len < 0) + continue; + target[len] = '\0'; + + printf("%s: %s\n", filename, target); + } + + printf("\n\n"); +} + int udevsettle(int argc, char *argv[], char *envp[]) { char queuename[PATH_SIZE]; @@ -97,6 +129,7 @@ int udevsettle(int argc, char *argv[], char *envp[]) } if (loop <= 0) { info("timeout waiting for queue\n"); + print_queue(queuename); goto exit; }