summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger2015-12-16 12:59:08 -0500
committerMike Frysinger2015-12-16 12:59:08 -0500
commit5f11ec3f6a7e4fe6cc2626ccb7cda4ecb5c3938a (patch)
tree3f53c36f98619131834ded9d48f2019738eb62c3
parent77e2bde6a50f0f6b9b3c9983c86e661a9872b5f6 (diff)
downloadbusybox-5f11ec3f6a7e4fe6cc2626ccb7cda4ecb5c3938a.zip
busybox-5f11ec3f6a7e4fe6cc2626ccb7cda4ecb5c3938a.tar.gz
swapon/swapoff: refine the -e (ifexists) option
The -e option should only apply to swapon, and it should swallow all errors/warnings when the device does not exist. So delete the flag from the swapoff patch and unify the check in the swapoff path. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--util-linux/swaponoff.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index 5cd1fbe..7e548a4 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -22,11 +22,10 @@
//usage: )
//usage:
//usage:#define swapoff_trivial_usage
-//usage: "[-a] [-e] [DEVICE]"
+//usage: "[-a] [DEVICE]"
//usage:#define swapoff_full_usage "\n\n"
//usage: "Stop swapping on DEVICE\n"
//usage: "\n -a Stop swapping on all swap devices"
-//usage: "\n -e Silently skip devices that do not exist"
#include "libbb.h"
#include <mntent.h>
@@ -93,15 +92,12 @@ enum {
#define OPT_IFEXISTS (option_mask32 & OPT_e)
#define OPT_PRIO (option_mask32 & OPT_p)
-static int swap_enable_disable(char *device)
+static int swap_enable_disable(const char *device)
{
int err = 0;
int quiet = 0;
- struct stat st;
resolve_mount_spec(&device);
- if (!OPT_IFEXISTS)
- xstat(device, &st);
if (do_swapoff) {
err = swapoff(device);
@@ -109,6 +105,7 @@ static int swap_enable_disable(char *device)
quiet = (OPT_ALL && (errno == EINVAL || errno == ENOENT));
} else {
/* swapon */
+ struct stat st;
err = stat(device, &st);
if (!err) {
if (ENABLE_DESKTOP && S_ISREG(st.st_mode)) {
@@ -119,9 +116,11 @@ static int swap_enable_disable(char *device)
}
err = swapon(device, g_flags);
/* Don't complain on swapon -a if device is already in use */
- /* Don't complain if file does not exist with -e option */
- quiet = (OPT_ALL && errno == EBUSY) || (OPT_IFEXISTS && errno == ENOENT);
+ quiet = (OPT_ALL && errno == EBUSY);
}
+ /* Don't complain if file does not exist with -e option */
+ if (err && OPT_IFEXISTS && errno == ENOENT)
+ err = 0;
}
if (err && !quiet) {