From: Wolfram Sang Date: Wed, 6 May 2020 10:39:21 +0000 (+0200) Subject: (s)fdisk: avoid unneeded empty lines with '--list' X-Git-Tag: v2.36-rc1~110 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Futil-linux.git;a=commitdiff_plain;h=4a52959d18ecd57a90680961fc1e3c57c34bf145 (s)fdisk: avoid unneeded empty lines with '--list' On my system, I got two superfluous empty lines because /dev/sr0 didn't contain a medium. Refactor the code to handle the seperator within print_device_pt() and print it only when assigning the device worked. This unifies handling between print_all_devices_pt and (s)fdisk because the latter did not consider the return code for the seperator while the former did. Also, it saves some lines of code. Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814184 (first part) Signed-off-by: Wolfram Sang --- diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c index 834c7b4e93..78e17a97fa 100644 --- a/disk-utils/fdisk-list.c +++ b/disk-utils/fdisk-list.c @@ -360,7 +360,8 @@ char *next_proc_partition(FILE **f) return NULL; } -int print_device_pt(struct fdisk_context *cxt, char *device, int warnme, int verify) +int print_device_pt(struct fdisk_context *cxt, char *device, int warnme, + int verify, int seperator) { if (fdisk_assign_device(cxt, device, 1) != 0) { /* read-only */ if (warnme || errno == EACCES) @@ -368,6 +369,9 @@ int print_device_pt(struct fdisk_context *cxt, char *device, int warnme, int ver return -1; } + if (seperator) + fputs("\n\n", stdout); + list_disk_geometry(cxt); if (fdisk_has_label(cxt)) { @@ -395,15 +399,13 @@ int print_device_freespace(struct fdisk_context *cxt, char *device, int warnme) void print_all_devices_pt(struct fdisk_context *cxt, int verify) { FILE *f = NULL; - int ct = 0; + int sep = 0; char *dev; while ((dev = next_proc_partition(&f))) { - if (ct) - fputs("\n\n", stdout); - if (print_device_pt(cxt, dev, 0, verify) == 0) - ct++; + print_device_pt(cxt, dev, 0, verify, sep); free(dev); + sep = 1; } } diff --git a/disk-utils/fdisk-list.h b/disk-utils/fdisk-list.h index 4ed5c256bc..47518c4987 100644 --- a/disk-utils/fdisk-list.h +++ b/disk-utils/fdisk-list.h @@ -7,7 +7,7 @@ extern void list_disk_geometry(struct fdisk_context *cxt); extern void list_freespace(struct fdisk_context *cxt); extern char *next_proc_partition(FILE **f); -extern int print_device_pt(struct fdisk_context *cxt, char *device, int warnme, int verify); +extern int print_device_pt(struct fdisk_context *cxt, char *device, int warnme, int verify, int seperator); extern int print_device_freespace(struct fdisk_context *cxt, char *device, int warnme); extern void print_all_devices_pt(struct fdisk_context *cxt, int verify); diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index 8a9b8cf2a2..bf5307b62f 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -1080,15 +1080,10 @@ int main(int argc, char **argv) if (argc > optind) { int k; - int ct = 0; - for (rc = 0, k = optind; k < argc; k++) { - if (ct) - fputs("\n\n", stdout); + for (rc = 0, k = optind; k < argc; k++) + rc += print_device_pt(cxt, argv[k], 1, 0, k != optind); - rc += print_device_pt(cxt, argv[k], 1, 0); - ct++; - } if (rc) return EXIT_FAILURE; } else diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index 07e8b2341a..6299cb49c7 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -653,15 +653,11 @@ static int command_list_partitions(struct sfdisk *sf, int argc, char **argv) fdisk_enable_listonly(sf->cxt, 1); if (argc) { - int i, ct = 0; + int i; - for (i = 0; i < argc; i++) { - if (ct) - fputs("\n\n", stdout); - if (print_device_pt(sf->cxt, argv[i], 1, sf->verify) != 0) + for (i = 0; i < argc; i++) + if (print_device_pt(sf->cxt, argv[i], 1, sf->verify, i) != 0) fail++; - ct++; - } } else print_all_devices_pt(sf->cxt, sf->verify);