commit b5ff71655de1de3877f051107eede51bb0a79f65
parent ad16c666dc65782226ff97c918eee2e026d94377
Author: Connor Lane Smith <cls@lubutu.com>
Date: Sat, 4 Jun 2011 14:30:54 +0100
recurse: ignore links
Diffstat:
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/config.mk b/config.mk
@@ -2,7 +2,7 @@
VERSION = 0.0
#CC = gcc
-#CC = musl-gcc
+CC = musl-gcc
LD = $(CC)
CPPFLAGS = -D_POSIX_C_SOURCE=200112L
CFLAGS = -Os -ansi -Wall -pedantic $(CPPFLAGS)
diff --git a/util/recurse.c b/util/recurse.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <sys/stat.h>
#include "../util.h"
void
@@ -11,14 +12,14 @@ recurse(const char *path, void (*fn)(const char *))
{
char *cwd;
struct dirent *d;
+ struct stat st;
DIR *dp;
- if(!(dp = opendir(path))) {
- if(errno == ENOTDIR)
- return;
- else
- eprintf("opendir %s:", path);
- }
+ if(lstat(path, &st) == -1 || !S_ISDIR(st.st_mode))
+ return;
+ else if(!(dp = opendir(path)))
+ eprintf("opendir %s:", path);
+
cwd = agetcwd();
if(chdir(path) == -1)
eprintf("chdir %s:", path);