From: Rob Landley Date: Tue, 13 Jun 2006 18:27:16 +0000 (-0000) Subject: Work around a persistent uClibc bug, since 0.9.29 still hasn't shipped. X-Git-Tag: 1_2_0~154 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0960ca7383b3ef35433c269709d12fa6508cc78a;p=oweals%2Fbusybox.git Work around a persistent uClibc bug, since 0.9.29 still hasn't shipped. Poked to do this by Jason Schoon. --- diff --git a/util-linux/mdev.c b/util-linux/mdev.c index d0c40e2ae..73a82314c 100644 --- a/util-linux/mdev.c +++ b/util-linux/mdev.c @@ -197,17 +197,18 @@ static void find_dev(char *path) return; while ((entry = readdir(dir)) != NULL) { + struct stat st; /* Skip "." and ".." (also skips hidden files, which is ok) */ if (entry->d_name[0] == '.') continue; - if (entry->d_type == DT_DIR) { - snprintf(path+len, PATH_MAX-len, "/%s", entry->d_name); - find_dev(path); - path[len] = 0; - } + // uClibc doesn't fill out entry->d_type reliably. so we use lstat(). + + snprintf(path+len, PATH_MAX-len, "/%s", entry->d_name); + if (!lstat(path, &st) && S_ISDIR(st.st_mode)) find_dev(path); + path[len] = 0; /* If there's a dev entry, mknod it */