Index: selinux/setfiles.c
===================================================================
--- selinux/setfiles.c	(revision 19256)
+++ selinux/setfiles.c	(working copy)
@@ -128,27 +128,26 @@
 	}
 }
 
-static bool add_exclude(const char *const directory)
+static void add_exclude(const char *const directory)
 {
 	struct stat sb;
 	size_t len;
 
 	if (directory == NULL || directory[0] != '/') {
-		bb_error_msg("full path required for exclude: %s", directory);
-		return 1;
+		bb_error_msg_and_die("full path required for exclude: %s", directory);
+
 	}
 	if (lstat(directory, &sb)) {
 		bb_error_msg("directory \"%s\" not found, ignoring", directory);
-		return 0;
+		return;
 	}
 	if ((sb.st_mode & S_IFDIR) == 0) {
 		bb_error_msg("\"%s\" is not a directory: mode %o, ignoring",
 			directory, sb.st_mode);
-		return 0;
+		return;
 	}
 	if (excludeCtr == MAX_EXCLUDES) {
-		bb_error_msg("maximum excludes %d exceeded", MAX_EXCLUDES);
-		return 1;
+		bb_error_msg_and_die("maximum excludes %d exceeded", MAX_EXCLUDES);
 	}
 
 	len = strlen(directory);
@@ -158,7 +157,7 @@
 	excludeArray[excludeCtr].directory = xstrndup(directory, len);
 	excludeArray[excludeCtr++].size = len;
 
-	return 0;
+	return;
 }
 
 static bool exclude(const char *file)
@@ -596,15 +595,9 @@
 	//if (flags & OPT_d) {
 	//	debug = 1;
 	//}
-	if (flags & OPT_e) {
-		if (exclude_dir == NULL) {
-			bb_show_usage();
-		}
-		while (exclude_dir) {
-			if (add_exclude(llist_pop(&exclude_dir)))
-				exit(1);
-		}
-	}
+	while (exclude_dir)
+		add_exclude(llist_pop(&exclude_dir));
+
 	//if (flags & OPT_i) {
 	//	ignore_enoent = 1;
 	//}
