Skip to content

Commit

Permalink
sfdisk: fix previous --append patch, improve man page
Browse files Browse the repository at this point in the history
- fix stupid typo (!has_container_or_unused(sf))
- use fdisk_is_partition_used() as fdisk_get_partition() returns
  nothing for unused partition
- update tests
- add more hints to the man page

Addresses: calamares/calamares#1332
Signed-off-by: Karel Zak <kzak@redhat.com>
  • Loading branch information
karelzak committed Mar 2, 2020
1 parent fa3ffac commit ac762ed
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 5 deletions.
8 changes: 8 additions & 0 deletions disk-utils/sfdisk.8
Expand Up @@ -74,6 +74,10 @@ the event handling on the device. For example:
.sp
.RE
Note, this semantic is not currently supported by udevd for MD and DM devices.
.PP
The sfdisk prompt is only a hint for users and a displayed partition number does
not mean that the same partition table entry will be created (if -N not
specified), especially for tables with gaps.

.SH COMMANDS
The commands are mutually exclusive.
Expand Down Expand Up @@ -189,6 +193,10 @@ tools can automatically relocate the header to follow the standard.
.TP
.BR \-a , " \-\-append"
Don't create a new partition table, but only append the specified partitions.
.sp
Note that unused partition maybe be re-used in this case although it is not the
last partition in the partition table. See also \fB\-N\fR to specify entry in
the partition table.
.TP
.BR \-b , " \-\-backup"
Back up the current partition table sectors before starting the partitioning.
Expand Down
9 changes: 6 additions & 3 deletions disk-utils/sfdisk.c
Expand Up @@ -1530,10 +1530,13 @@ static int has_container_or_unused(struct sfdisk *sf)

nparts = fdisk_get_npartitions(sf->cxt);
for (i = 0; i < nparts; i++) {

if (!fdisk_is_partition_used(sf->cxt, i)) {
sf->unused = 1;
continue;
}
if (fdisk_get_partition(sf->cxt, i, &pa) != 0)
continue;
if (!fdisk_partition_is_used(pa))
sf->unused = 1;
if (fdisk_partition_is_container(pa))
sf->container = 1;
}
Expand Down Expand Up @@ -1840,7 +1843,7 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
if (created
&& partno < 0
&& next_partno == fdisk_get_npartitions(sf->cxt)
&& has_container_or_unused(sf)) {
&& !has_container_or_unused(sf)) {
fdisk_info(sf->cxt, _("All partitions used."));
rc = SFDISK_DONE_ASK;
break;
Expand Down
2 changes: 1 addition & 1 deletion tests/expected/sfdisk/dos-dump-gaps
Expand Up @@ -12,7 +12,7 @@ I/O size (minimum/optimal): 4096 bytes / <removed> bytes
<removed>2: Ignoring partition.
<removed>3: Created a new <removed>.
<removed>4: Ignoring partition.
All partitions used.
<removed>5: Done.

New situation:
Disklabel type: dos
Expand Down
2 changes: 1 addition & 1 deletion tests/expected/sfdisk/dos-dump-old
Expand Up @@ -12,7 +12,7 @@ I/O size (minimum/optimal): 4096 bytes / <removed> bytes
<removed>2: Ignoring partition.
<removed>3: Ignoring partition.
<removed>4: Ignoring partition.
All partitions used.
<removed>5: Done.

New situation:
Disklabel type: dos
Expand Down

0 comments on commit ac762ed

Please sign in to comment.