From 8175ed3d74adacc895657ded7546cb3c5deeabad Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 2 Nov 2017 13:50:30 +0100 Subject: sfdisk: allow to disable bootable flag on all partitions Let use '-' rather than a partition number to disable the bootable flag on all partitions: sfdisk --activate /dev/sdc - Signed-off-by: Karel Zak --- disk-utils/sfdisk.8 | 12 ++++++++---- disk-utils/sfdisk.c | 6 +++++- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'disk-utils') diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8 index 5266ca744..31f64fd79 100644 --- a/disk-utils/sfdisk.8 +++ b/disk-utils/sfdisk.8 @@ -78,10 +78,14 @@ partitions may be smaller. In this case \fBsfdisk\fR follows the default values from the partition table and does not use built-in defaults for the unused partition given with \fB\-N\fR. See also \fB\-\-append\fR. .TP -.BR \-A , " \-\-activate \fIdevice " [ \fIpartition-number ...] -Switch on the bootable flag for the specified partitions. -If no \fIpartition-number\fR is specified, -then list the partitions with an enabled flag. +.BR \-A , " \-\-activate \fIdevice " [ \fIpartition-number...] +Switch on the bootable flag for the specified partitions and switch off the +bootable flag on all unspecified partitions. The special placeholder '-' +may be used instead of the partition numbers to switch off the bootable flag +on all partitions. + +If no \fIpartition-number\fR is specified, then list the partitions with an +enabled flag. .TP .BR "\-\-delete \fIdevice " [ \fIpartition-number ...] Delete all or the specified partitions. diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index 46b7e54db..ac4f71106 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -853,7 +853,11 @@ static int command_activate(struct sfdisk *sf, int argc, char **argv) /* sfdisk --activate [..] */ for (i = 1; i < argc; i++) { - int n = strtou32_or_err(argv[i], _("failed to parse partition number")); + int n; + + if (i == 1 && strcmp(argv[1], "-") == 0) + break; + n = strtou32_or_err(argv[i], _("failed to parse partition number")); rc = fdisk_toggle_partition_flag(sf->cxt, n - 1, DOS_FLAG_ACTIVE); if (rc) -- cgit v1.2.3-55-g7522