]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
isosize: move file name printing after error determination
authorSami Kerola <kerolasa@iki.fi>
Sun, 16 Feb 2014 23:54:20 +0000 (23:54 +0000)
committerKarel Zak <kzak@redhat.com>
Mon, 17 Feb 2014 13:04:41 +0000 (14:04 +0100)
Earlier the filename printing was buffered, and exit at error made output
to appear in front of prompt.  Output below demonstrates the brokenness.

prompt> isosize /etc /
isosize: /etc: might not be an ISO filesystem
isosize: read error on /etc: Is a directory
/etc: prompt>

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
disk-utils/isosize.c

index 4c16ec52df23b6438e47e01f7af93ebfaca07bc3..f90029e2a2c59ddc3c802908756be55ad0e41dc0 100644 (file)
@@ -125,7 +125,7 @@ struct iso_primary_descriptor
        unsigned char unused5                   [ISODCL (1396, 2048)];
 };
 
-static void isosize(char *filenamep, int xflag, long divisor)
+static void isosize(int argc, char *filenamep, int xflag, long divisor)
 {
        int fd, nsecs, ssize;
        struct iso_primary_descriptor ipd;
@@ -145,6 +145,8 @@ static void isosize(char *filenamep, int xflag, long divisor)
        /* isonum_723 returns nowadays always 2048 */
        ssize = isonum_723(ipd.logical_block_size, xflag);
 
+       if (1 < argc)
+               printf("%s: ", filenamep);
        if (xflag) {
                printf(_("sector count: %d, sector size: %d\n"), nsecs, ssize);
        } else {
@@ -220,11 +222,8 @@ int main(int argc, char **argv)
        if (ct <= 0)
                usage(stderr);
 
-       for (j = optind; j < argc; j++) {
-               if (ct > 1)
-                       printf("%s: ", argv[j]);
-               isosize(argv[j], xflag, divisor);
-       }
+       for (j = optind; j < argc; j++)
+               isosize(ct, argv[j], xflag, divisor);
 
        return EXIT_SUCCESS;
 }