From cff458acc31e21042d7b2dba77751d55a5c8c093 Mon Sep 17 00:00:00 2001
From: "Carlos J. Torres" <vlaadbrain@gmail.com>
Date: Sun, 9 Feb 2014 11:44:11 -0500
Subject: return exit codes like util-linux

---
 swapoff.c | 23 +++++++++++++----------
 swapon.c  | 23 +++++++++++++----------
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/swapoff.c b/swapoff.c
index 68b1f02..d89915f 100644
--- a/swapoff.c
+++ b/swapoff.c
@@ -13,6 +13,17 @@ usage(void)
 	eprintf("usage: %s [-a] device\n", argv0);
 }
 
+static int
+xswapoff(const char *path) {
+	int status;
+	status = swapoff(path);
+	if (status < 0) {
+		fprintf(stderr, "swapoff %s: %s\n",
+				path, strerror(errno));
+	}
+	return status;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -38,21 +49,13 @@ main(int argc, char *argv[])
 		fp = setmntent("/etc/fstab", "r");
 		while ((me = getmntent(fp)) != NULL) {
 			if (strcmp(me->mnt_type, MNTTYPE_SWAP) == 0) {
-				if (swapoff(me->mnt_fsname) < 0) {
-					fprintf(stderr, "swapoff %s: %s\n",
-							me->mnt_fsname, strerror(errno));
-					ret = EXIT_FAILURE;
-				}
+					ret |= xswapoff(me->mnt_fsname);
 			}
 		}
 		endmntent(fp);
 	} else {
 		for (i = 0; i < argc; i++) {
-			if (swapoff(argv[i]) < 0) {
-				fprintf(stderr, "swapoff %s: %s\n",
-						argv[i], strerror(errno));
-				ret = EXIT_FAILURE;
-			}
+			ret |= xswapoff(argv[i]);
 		}
 	}
 	return ret;
diff --git a/swapon.c b/swapon.c
index 278aa73..fdce3ce 100644
--- a/swapon.c
+++ b/swapon.c
@@ -13,6 +13,17 @@ usage(void)
 	eprintf("usage: %s [-dp] [-a] device\n", argv0);
 }
 
+static int
+xswapon(const char *path, int swapflags) {
+	int status = 0;
+	status = swapon(path, swapflags);
+	if (status < 0) {
+		fprintf(stderr, "swapon %s: %s\n",
+				path, strerror(errno));
+	}
+	return status;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -46,21 +57,13 @@ main(int argc, char *argv[])
 		while ((me = getmntent(fp)) != NULL) {
 			if (strcmp(me->mnt_type, MNTTYPE_SWAP) == 0
 					&& (hasmntopt(me, MNTOPT_NOAUTO) == NULL)) {
-				if (swapon(me->mnt_fsname, flags) < 0) {
-					fprintf(stderr, "swapon %s: %s\n",
-							me->mnt_fsname, strerror(errno));
-					ret = EXIT_FAILURE;
-				}
+				ret |= xswapon(me->mnt_fsname, flags);
 			}
 		}
 		endmntent(fp);
 	} else {
 		for (i = 0; i < argc; i++) {
-			if (swapon(argv[i], flags) < 0) {
-				fprintf(stderr, "swapon %s: %s\n",
-						argv[i], strerror(errno));
-				ret = EXIT_FAILURE;
-			}
+			ret |= xswapon(argv[i], flags);
 		}
 	}
 	return ret;
-- 
1.8.4

