Signed-off-by: Nathan Hintz <nlhi...@hotmail.com> --- block.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/block.c b/block.c index 2289b77..2ef33e8 100644 --- a/block.c +++ b/block.c @@ -1038,8 +1038,8 @@ static int main_info(int argc, char **argv) static int main_swapon(int argc, char **argv) { - if (argc != 2) { - fprintf(stderr, "Usage: swapon <-s> <-a> [DEVICE]\n\n\tStart swapping on [DEVICE]\n -a\tStart swapping on all swap devices\n -s\tShow summary\n"); + if (argc != 2 && argc != 4) { + fprintf(stderr, "Usage: swapon <-s> <-a> <-p pri> [DEVICE]\n\n\tStart swapping on [DEVICE]\n -a\tStart swapping on all swap devices\n -p pri\tSet priority of swap device\n -s\tShow summary\n"); return -1; } @@ -1070,14 +1070,21 @@ static int main_swapon(int argc, char **argv) } else { struct stat s; int err; + int prio = 0; + int dev_arg = 1; - if (stat(argv[1], &s) || (!S_ISBLK(s.st_mode) && !S_ISREG(s.st_mode))) { - fprintf(stderr, "%s is not a block device or file\n", argv[1]); + if (!strcmp(argv[1], "-p")) { + prio = ((atoi(argv[2]) << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK) | SWAP_FLAG_PREFER; + dev_arg = 3; + } + + if (stat(argv[dev_arg], &s) || (!S_ISBLK(s.st_mode) && !S_ISREG(s.st_mode))) { + fprintf(stderr, "%s is not a block device or file\n", argv[dev_arg]); return -1; } - err = swapon(argv[1], 0); + err = swapon(argv[dev_arg], prio); if (err) { - fprintf(stderr, "failed to swapon %s (%d)\n", argv[1], err); + fprintf(stderr, "failed to swapon %s (%d)\n", argv[dev_arg], err); return err; } } -- 1.8.3.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel