Fix tar handling of absolute paths and excluded directories.
diff --git a/utility.c b/utility.c
index 34341c8..b06abf4 100644
--- a/utility.c
+++ b/utility.c
@@ -663,17 +663,18 @@
if (S_ISDIR(statbuf.st_mode)) {
DIR *dir;
- dir = opendir(fileName);
- if (!dir) {
- perror_msg("%s", fileName);
- return FALSE;
- }
if (dirAction != NULL && depthFirst == FALSE) {
status = dirAction(fileName, &statbuf, userData);
if (status == FALSE) {
perror_msg("%s", fileName);
return FALSE;
- }
+ } else if (status == SKIP)
+ return TRUE;
+ }
+ dir = opendir(fileName);
+ if (!dir) {
+ perror_msg("%s", fileName);
+ return FALSE;
}
while ((next = readdir(dir)) != NULL) {
char nextFile[BUFSIZ + 1];