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];