the beginnings of a proper man page for busybox.
[oweals/busybox.git] / utility.c
index c1bd82e8b23b403f9f99436753c2bc40c1b71997..ade47bde0906d30edff5880cb9ef8e52d207b1c1 100644 (file)
--- a/utility.c
+++ b/utility.c
@@ -317,7 +317,9 @@ const char *timeString(time_t timeVal)
 
     return buf;
 }
+#endif
 
+#if defined BB_TAR || defined BB_CP || defined BB_MV
 /*
  * Write all of the supplied buffer out to a file.
  * This does multiple writes as necessary.
@@ -396,7 +398,7 @@ recursiveAction(const char *fileName, int recurse, int followLinks, int depthFir
                int (*dirAction) (const char *fileName, struct stat* statbuf))
 {
     int status;
-    struct stat statbuf;
+    struct stat statbuf, statbuf1;
     struct dirent *next;
 
     if (followLinks == TRUE)
@@ -404,6 +406,7 @@ recursiveAction(const char *fileName, int recurse, int followLinks, int depthFir
     else
        status = lstat(fileName, &statbuf);
 
+    status = lstat(fileName, &statbuf);
     if (status < 0) {
        perror(fileName);
        return (FALSE);
@@ -424,8 +427,14 @@ recursiveAction(const char *fileName, int recurse, int followLinks, int depthFir
                return (TRUE);
        } 
     }
+    
+    status = lstat(fileName, &statbuf1);
+    if (status < 0) {
+       perror(fileName);
+       return (FALSE);
+    }
 
-    if (S_ISDIR(statbuf.st_mode)) {
+    if (S_ISDIR(statbuf.st_mode) && S_ISDIR(statbuf1.st_mode)) {
        DIR *dir;
        dir = opendir(fileName);
        if (!dir) {