diff options
author | Mike Frysinger <vapier@gentoo.org> | 2015-12-16 20:59:08 +0300 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-12-16 20:59:08 +0300 |
commit | 5f11ec3f6a7e4fe6cc2626ccb7cda4ecb5c3938a (patch) | |
tree | 3f53c36f98619131834ded9d48f2019738eb62c3 | |
parent | 77e2bde6a50f0f6b9b3c9983c86e661a9872b5f6 (diff) |
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.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c index 5cd1fbe70..7e548a464 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) { |