From: Karel Zak Date: Mon, 13 Apr 2015 10:08:50 +0000 (+0200) Subject: sfdisk: improve -N warnings X-Git-Tag: v2.27-rc1~276 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d754d5540fa3e5399f2f46a2781acaa12aa33500;p=thirdparty%2Futil-linux.git sfdisk: improve -N warnings Signed-off-by: Karel Zak --- diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8 index 18227591da..a7b84cab17 100644 --- a/disk-utils/sfdisk.8 +++ b/disk-utils/sfdisk.8 @@ -57,7 +57,14 @@ input format. If standard input is a terminal, then \fBsfdisk\fR starts an interactive session. .sp If the option \fB\-N\fR is specified, then the changes are applied to -the partition addressed by \fIpartition-number\fR. +the partition addressed by \fIpartition-number\fR. The unspecified fields +of the partition are not modified. +.sp +Note that it's possible to address unused partition by \fB\-N\fR. For example +MBR always contains 4 partitions, but the number of the used partitions may be +smaller. In this case sfdisk follows the default values from the partition +table and it does not use built-in defaults for the unused partition specified +by \fB\-N\fR. See also \fB\---append\fR. .TP .BR \-A , " \-\-activate \fIdevice\fR [" \fIpartition-number\fR...] Switch on the bootable flag. If no \fIpartition-number\fR is specified, diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index 6b60d040e1..ee55feae4e 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -1161,16 +1161,21 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv) */ if (partno >= 0) { size_t n; + if (!fdisk_has_label(sf->cxt)) errx(EXIT_FAILURE, _("%s: cannot modify partition %d: " "no partition table was found"), - devname, partno); + devname, partno + 1); n = fdisk_get_npartitions(sf->cxt); if ((size_t) partno > n) errx(EXIT_FAILURE, _("%s: cannot modify partition %d: " "partition table contains only %zu " "partitions"), - devname, partno, n); + devname, partno + 1, n); + + if (!fdisk_is_partition_used(sf->cxt, partno)) + fdisk_warnx(sf->cxt, _("warning: %s: partition %d is not defined yet"), + devname, partno + 1); created = 1; next_partno = partno; }