Προς το περιεχόμενο

Ένα μικρό patch για την df του coreutils.


firewalker

Προτεινόμενες αναρτήσεις

Είχα ένα "πρόβλημα" με το τρόπο που τυπώνει η df(1). Όταν το όνομα του δίσκου ήταν πάνω από 18 χαρακτήρες έσπαγε την εκτύπωση σε δύο σειρές.

 

 

Παράδειγμα:

>
Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/VolGroup00-lvolSys
         reiserfs         0       0       0    -  /
none         tmpfs     96488    2350   94138    3% /dev
none         tmpfs     96488       2   96486    1% /dev/shm
/dev/mapper/VolGroup00-lvolHome
             ext3   2621440   43975 2577465    2% /home
/dev/mapper/VolGroup00-lvolStor1
             ext3   3276800    7853 3268947    1% /mnt/storage1
/dev/mapper/VolGroup00-lvolStor2
             ext4   1476960      54 1476906    1% /mnt/storage2
/dev/sda3     ext2     60480      55   60425    1% /boot

 

Δεν με βόλευε καθόλου σε κάτι script που την χρησιμοποιούσα. Πείραξα λοιπόν τον κώδικα του df.c (τα νούμερα άλλαξα βασικά :P) και τώρα τυπώνει διαφορετικά.

 

>
Filesystem                               Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/VolGroup00-lvolSys       reiserfs         0       0       0    -  /
none                                    tmpfs     96488    2350   94138    3% /dev
none                                    tmpfs     96488       2   96486    1% /dev/shm
/dev/mapper/VolGroup00-lvolHome          ext3   2621440   43975 2577465    2% /home
/dev/mapper/VolGroup00-lvolStor1         ext3   3276800    7853 3268947    1% /mnt/storage1
/dev/mapper/VolGroup00-lvolStor2         ext4   1476960      54 1476906    1% /mnt/storage2
/dev/sda3                                ext2     60480      55   60425    1% /boot

 

Για όποιον ενδιαφέρεται υπάρχει το παρακάτω patch.

 

>
diff -Naur coreutils-7.6-orig/src/df.c coreutils-7.6/src/df.c
--- coreutils-7.6-orig/src/df.c	2009-09-10 21:29:04.000000000 +0300
+++ coreutils-7.6/src/df.c	2009-10-26 00:11:33.000000000 +0200
@@ -149,9 +149,9 @@
  char buf[MAX (LONGEST_HUMAN_READABLE + 1, INT_BUFSIZE_BOUND (uintmax_t))];

  if (print_type)
-    fputs (_("Filesystem    Type"), stdout);
+    fputs (_("Filesystem                               Type"), stdout);
  else
-    fputs (_("Filesystem        "), stdout);
+    fputs (_("Filesystem                                   "), stdout);

  if (inode_format)
    printf (_("    Inodes   IUsed   IFree IUse%%"));
@@ -378,19 +378,19 @@
    {
      size_t disk_name_len = strlen (disk);
      size_t fstype_len = strlen (fstype);
-      if (disk_name_len + fstype_len < 18)
-        printf ("%s%*s  ", disk, 18 - (int) disk_name_len, fstype);
+      if (disk_name_len + fstype_len < 45)
+        printf ("%s%*s  ", disk, 45 - (int) disk_name_len, fstype);
      else if (!posix_format)
-        printf ("%s\n%18s  ", disk, fstype);
+        printf ("%s\n%45s  ", disk, fstype);
      else
        printf ("%s %s", disk, fstype);
    }
  else
    {
-      if (strlen (disk) > 20 && !posix_format)
-        printf ("%s\n%20s", disk, "");
+      if (strlen (disk) > 47 && !posix_format)
+        printf ("%s\n%47s", disk, "");
      else
-        printf ("%-20s", disk);
+        printf ("%-47s", disk);
    }

  if (inode_format)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...