diff options
-rw-r--r-- | util-linux/mdev.c | 11 |
1 files changed, 6 insertions, 5 deletions
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) | |||
197 | return; | 197 | return; |
198 | 198 | ||
199 | while ((entry = readdir(dir)) != NULL) { | 199 | while ((entry = readdir(dir)) != NULL) { |
200 | struct stat st; | ||
200 | 201 | ||
201 | /* Skip "." and ".." (also skips hidden files, which is ok) */ | 202 | /* Skip "." and ".." (also skips hidden files, which is ok) */ |
202 | 203 | ||
203 | if (entry->d_name[0] == '.') | 204 | if (entry->d_name[0] == '.') |
204 | continue; | 205 | continue; |
205 | 206 | ||
206 | if (entry->d_type == DT_DIR) { | 207 | // uClibc doesn't fill out entry->d_type reliably. so we use lstat(). |
207 | snprintf(path+len, PATH_MAX-len, "/%s", entry->d_name); | 208 | |
208 | find_dev(path); | 209 | snprintf(path+len, PATH_MAX-len, "/%s", entry->d_name); |
209 | path[len] = 0; | 210 | if (!lstat(path, &st) && S_ISDIR(st.st_mode)) find_dev(path); |
210 | } | 211 | path[len] = 0; |
211 | 212 | ||
212 | /* If there's a dev entry, mknod it */ | 213 | /* If there's a dev entry, mknod it */ |
213 | 214 | ||