]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
(s)fdisk: avoid unneeded empty lines with '--list'
authorWolfram Sang <wsa@kernel.org>
Wed, 6 May 2020 10:39:21 +0000 (12:39 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 11 May 2020 09:28:49 +0000 (11:28 +0200)
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 <wsa@kernel.org>
disk-utils/fdisk-list.c
disk-utils/fdisk-list.h
disk-utils/fdisk.c
disk-utils/sfdisk.c

index 834c7b4e9368e7e1080c8bb631aa3ccdf706fffb..78e17a97fad1e5ef90220de307cdfb09c3f3bb29 100644 (file)
@@ -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;
        }
 }
 
index 4ed5c256bcb156c4e077116cf895c6eeec208535..47518c4987304852c00ea9a7c8128caafeb54215 100644 (file)
@@ -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);
index 8a9b8cf2a290a7e3c2a311a93915a3175f291292..bf5307b62f8e6443d8752160c47916bf3d494d51 100644 (file)
@@ -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
index 07e8b2341a212485cf2acd5255337fca250d083f..6299cb49c7559de4d34684967364800ff7873f86 100644 (file)
@@ -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);