From 40cf9012a15ea5ea1f020f0afbb0c9012659549f Mon Sep 17 00:00:00 2001 From: sobomax Date: Tue, 25 Oct 2011 01:47:33 +0000 Subject: [PATCH] Add new option -F to specify alternative location of the /etc/fstab file. MFC after: 1 month --- sbin/swapon/swapon.8 | 22 ++++++++++++++++++++-- sbin/swapon/swapon.c | 11 +++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/sbin/swapon/swapon.8 b/sbin/swapon/swapon.8 index 40dba745c093..5602a9a5ff86 100644 --- a/sbin/swapon/swapon.8 +++ b/sbin/swapon/swapon.8 @@ -35,8 +35,14 @@ .Nm swapon , swapoff , swapctl .Nd "specify devices for paging and swapping" .Sh SYNOPSIS -.Nm swapon Fl aq | Ar -.Nm swapoff Fl aq | Ar +.Nm swapon +.Oo Fl F Ar fstab +.Oc +.Fl aq | Ar +.Nm swapoff +.Oo Fl F Ar fstab +.Oc +.Fl aq | Ar .Nm swapctl .Op Fl AghklmsU .Oo @@ -99,6 +105,18 @@ must move swapped pages out of the device being removed which could lead to high system loads for a period of time, depending on how much data has been swapped out to that device. .Pp +Other options supported by both +.Nm swapon +and +.Nm swapoff +are as follows: +.Bl -tag -width indent +.It Fl F Ar fstab +Specify the +.Pa fstab +file to use. +.El +.Pp The .Nm swapctl utility exists primarily for those familiar with other diff --git a/sbin/swapon/swapon.c b/sbin/swapon/swapon.c index e2cf8cafc0b4..5e85602aaf5c 100644 --- a/sbin/swapon/swapon.c +++ b/sbin/swapon/swapon.c @@ -70,6 +70,7 @@ main(int argc, char **argv) int stat; int ch, doall; int sflag = 0, lflag = 0, hflag = 0, qflag = 0; + const char *etc_fstab; if ((ptr = strrchr(argv[0], '/')) == NULL) ptr = argv[0]; @@ -80,7 +81,8 @@ main(int argc, char **argv) orig_prog = which_prog; doall = 0; - while ((ch = getopt(argc, argv, "AadghklmqsU")) != -1) { + etc_fstab = NULL; + while ((ch = getopt(argc, argv, "AadghklmqsUF:")) != -1) { switch(ch) { case 'A': if (which_prog == SWAPCTL) { @@ -132,6 +134,9 @@ main(int argc, char **argv) usage(); } break; + case 'F': + etc_fstab = optarg; + break; case '?': default: usage(); @@ -140,6 +145,8 @@ main(int argc, char **argv) argv += optind; stat = 0; + if (etc_fstab != NULL) + setfstab(etc_fstab); if (which_prog == SWAPON || which_prog == SWAPOFF) { if (doall) { while ((fsp = getfsent()) != NULL) { @@ -210,7 +217,7 @@ usage(void) switch(orig_prog) { case SWAPON: case SWAPOFF: - fprintf(stderr, "-aq | file ...\n"); + fprintf(stderr, "[-F fstab] -aq | file ...\n"); break; case SWAPCTL: fprintf(stderr, "[-AghklmsU] [-a file ... | -d file ...]\n");