(show_dev) [!posix_format]: When using --print-type,
authorJim Meyering <jim@meyering.net>
Mon, 7 Sep 1998 18:08:09 +0000 (18:08 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 7 Sep 1998 18:08:09 +0000 (18:08 +0000)
let the device path and the file system type share a single (wider)
field if their combined lengths allow it.  From Andries Brouwer.

src/df.c

index a51915a2bb1dbb49cd6d0ecfe04b7f51013f1e45..415d4fec7101675dbf622f782ffdc8b1bf4b21f6 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -246,15 +246,29 @@ show_dev (const char *disk, const char *mount_point, const char *fstype,
 
   if (! disk)
     disk = "-";                        /* unknown */
-
-  printf ((print_type ? "%-13s" : "%-20s"), disk);
-  if ((int) strlen (disk) > (print_type ? 13 : 20) && !posix_format)
-    printf ((print_type ? "\n%13s" : "\n%20s"), "");
-
   if (! fstype)
     fstype = "-";              /* unknown */
+
+  /* df.c reserved 5 positions for fstype,
+     but that does not suffice for type iso9660 */
   if (print_type)
-    printf (" %-5s ", fstype);
+    {
+      int disk_name_len = (int) strlen (disk);
+      int fstype_len = (int) strlen (fstype);
+      if (disk_name_len + fstype_len + 2 < 20)
+       printf ("%s%*s  ", disk, 18 - disk_name_len, fstype);
+      else if (!posix_format)
+       printf ("%s\n%18s  ", disk, fstype);
+      else
+       printf ("%s %s", disk, fstype);
+    }
+  else
+    {
+      if ((int) strlen (disk) > 20 && !posix_format)
+       printf ("%s\n%20s", disk, "");
+      else
+       printf ("%-20s", disk);
+    }
 
   if (inode_format)
     {