volinfo: refactor -sizeOnly printing
authorMichael Meffie <mmeffie@sinenomine.net>
Wed, 25 May 2011 22:19:22 +0000 (18:19 -0400)
committerDerrick Brashear <shadow@dementia.org>
Sun, 5 Jun 2011 14:13:43 +0000 (07:13 -0700)
Refactor the -sizeOnly output processing to reduce code
duplication and coupling with -saveinodes.

Change-Id: I4d1c53678732afebba83813be676a292e2d8e62c
Reviewed-on: http://gerrit.openafs.org/4732
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/vol/vol-info.c

index 4663c64..9aaf5c5 100644 (file)
@@ -102,6 +102,64 @@ char name[VMAXPATHLEN];
 
 char BU[1000];
 
+static int PrintingVolumeSizes = 0;    /* printing volume size lines */
+
+/**
+ * Print the volume size table heading line, if needed.
+ *
+ * @return none
+ */
+static void
+PrintVolumeSizeHeading(void)
+{
+    if (!PrintingVolumeSizes) {
+       printf
+           ("Volume-Id\t  Volsize  Auxsize Inodesize  AVolsize SizeDiff                (VolName)\n");
+       PrintingVolumeSizes = 1;
+    }
+}
+
+/**
+ * Print the sizes for a volume.
+ *
+ * @return none
+ */
+static void
+PrintVolumeSizes(Volume * vp)
+{
+    PrintVolumeSizeHeading();
+    printf("%u\t%9d%9d%10d%10d%9d\t%24s\n", V_id(vp), Vdiskused,
+          Vauxsize_k, Vvnodesize_k, totvolsize, totvolsize - Vdiskused,
+          V_name(vp));
+}
+
+/**
+ * Print the size totals for the partition.
+ *
+ * @return none
+ */
+static void
+PrintPartitionTotals(int nvols)
+{
+    PrintVolumeSizeHeading();
+    printf("\nPart Totals  %12d%9d%10d%10d%9d (%d volumes)\n\n",
+          TVdiskused, TVauxsize, TVvnodesize, Totvolsize,
+          Totvolsize - TVdiskused, nvols);
+    PrintingVolumeSizes = 0;
+}
+
+/**
+ * Print the size totals for all the partitions.
+ *
+ * @return none
+ */
+static void
+PrintServerTotals(void)
+{
+    printf("\nServer Totals%12d%9d%10d%10d%9d\n", SVdiskused, SVauxsize,
+          SVvnodesize, Stotvolsize, Stotvolsize - SVdiskused);
+}
+
 int
 ReadHdr1(IHandle_t * ih, char *to, int size, u_int magic, u_int version)
 {
@@ -308,9 +366,6 @@ handleit(struct cmd_syndesc *as, void *arock)
        }
        snprintf(name1, sizeof name1, VFORMAT,
                 afs_printable_uint32_lu(volumeId));
-       if (dsizeOnly && !saveinodes)
-           printf
-               ("Volume-Id\t  Volsize  Auxsize Inodesize  AVolsize SizeDiff                (VolName)\n");
        HandleVolume(partP, name1);
     }
     return 0;
@@ -382,8 +437,7 @@ HandleAllPart(void)
     }
 
     if (dsizeOnly) {
-       printf("\nServer Totals%12d%9d%10d%10d%9d\n", SVdiskused, SVauxsize,
-              SVvnodesize, Stotvolsize, Stotvolsize - SVdiskused);
+       PrintServerTotals();
     }
 }
 
@@ -407,9 +461,6 @@ HandlePart(struct DiskPartition64 *partP)
                p);
        exit(1);
     }
-    if (dsizeOnly && !saveinodes)
-       printf
-           ("Volume-Id\t  Volsize  Auxsize Inodesize  AVolsize SizeDiff                (VolName)\n");
     while ((dp = readdir(dirp))) {
        p = (char *)strrchr(dp->d_name, '.');
        if (p != NULL && strcmp(p, VHDREXT) == 0) {
@@ -423,9 +474,7 @@ HandlePart(struct DiskPartition64 *partP)
     }
     closedir(dirp);
     if (dsizeOnly) {
-       printf("\nPart Totals  %12d%9d%10d%10d%9d (%d volumes)\n\n",
-              TVdiskused, TVauxsize, TVvnodesize, Totvolsize,
-              Totvolsize - TVdiskused, nvols);
+       PrintPartitionTotals(nvols);
     }
 }
 
@@ -588,18 +637,15 @@ HandleVolume(struct DiskPartition64 *dp, char *name)
            printf("\nSmall vnodes(files, symbolic links)\n");
            fflush(stdout);
        }
-       if (saveinodes)
+       if (saveinodes) {
            printf("Saving all volume files to current directory ...\n");
+           PrintingVolumeSizes = 0;    /* -saveinodes interfers with -sizeOnly */
+       }
        PrintVnodes(vp, vSmall);
     }
     if (dsizeOnly) {
        totvolsize = Vauxsize_k + Vvnodesize_k;
-       if (saveinodes)
-           printf
-               ("Volume-Id\t  Volsize  Auxsize Inodesize  AVolsize SizeDiff                (VolName)\n");
-       printf("%u\t%9d%9d%10d%10d%9d\t%24s\n", V_id(vp), Vdiskused,
-              Vauxsize_k, Vvnodesize_k, totvolsize, totvolsize - Vdiskused,
-              V_name(vp));
+       PrintVolumeSizes(vp);
     }
     free(vp->header);
     free(vp);