Fix exit status on failure.
diff --git a/df.c b/df.c
index aefffc7..969a5b9 100644
--- a/df.c
+++ b/df.c
@@ -36,7 +36,7 @@
 	long blocks_percent_used;
 
 	if (statfs(mountPoint, &s) != 0) {
-		perror(mountPoint);
+		perrorMsg("%s", mountPoint);
 		return FALSE;
 	}
 
@@ -63,12 +63,13 @@
 
 extern int df_main(int argc, char **argv)
 {
+	int status = EXIT_SUCCESS;
+
 	printf("%-20s %-14s %s %s %s %s\n", "Filesystem",
 		   "1k-blocks", "Used", "Available", "Use%", "Mounted on");
 
 	if (argc > 1) {
 		struct mntent *mountEntry;
-		int status;
 
 		if (**(argv + 1) == '-') {
 			usage(df_usage);
@@ -76,32 +77,30 @@
 		while (argc > 1) {
 			if ((mountEntry = findMountPoint(argv[1], mtab_file)) == 0) {
 				errorMsg("%s: can't find mount point.\n", argv[1]);
-				exit(FALSE);
-			}
-			status = df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
-			if (status != TRUE)
-				return EXIT_FAILURE;
+				status = EXIT_FAILURE;
+			} else if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
+				status = EXIT_FAILURE;
 			argc--;
 			argv++;
 		}
-		return EXIT_SUCCESS;
 	} else {
 		FILE *mountTable;
 		struct mntent *mountEntry;
 
 		mountTable = setmntent(mtab_file, "r");
 		if (mountTable == 0) {
-			perror(mtab_file);
+			perrorMsg("%s", mtab_file);
 			return EXIT_FAILURE;
 		}
 
 		while ((mountEntry = getmntent(mountTable))) {
-			df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
+			if (!df(mountEntry->mnt_fsname, mountEntry->mnt_dir))
+				status = EXIT_FAILURE;
 		}
 		endmntent(mountTable);
 	}
 
-	return EXIT_FAILURE;
+	return status;
 }
 
 /*