From: Karel Zak Date: Mon, 13 Apr 2015 10:08:50 +0000 (+0200) Subject: sfdisk: improve -N warnings X-Git-Tag: v2.26.2~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68d5fefe3cd34ad962355118d17c5d8582b98bd8;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 e52b8eb26c..38d741a7d7 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -1109,16 +1109,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; }