]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
Fix xfs_bmap -n option displaying a truncated extent.
authorBarry Naujok <bnaujok@sgi.com>
Thu, 25 Jan 2007 05:07:59 +0000 (05:07 +0000)
committerBarry Naujok <bnaujok@sgi.com>
Thu, 25 Jan 2007 05:07:59 +0000 (05:07 +0000)
Merge of master-melb:xfs-cmds:27990a by kenmcd.

  Fix xfs_bmap -n option displaying a truncated extent.

io/bmap.c

index a364759cd0a911391f95164a52390b3a7620d3dd..ce60863cca4e2570fee88de4b964f04ee2431739 100644 (file)
--- a/io/bmap.c
+++ b/io/bmap.c
@@ -78,6 +78,7 @@ bmap_f(
        int                     bmv_iflags = 0; /* flags for XFS_IOC_GETBMAPX */
        int                     i = 0;
        int                     c;
+       int                     egcnt;
 
        while ((c = getopt(argc, argv, "adln:pv")) != EOF) {
                switch (c) {
@@ -136,7 +137,7 @@ bmap_f(
                }
        }
 
-       map_size = nflag ? nflag+1 : 32;        /* initial guess - 256 */
+       map_size = nflag ? nflag+2 : 32;        /* initial guess - 256 */
        map = malloc(map_size*sizeof(*map));
        if (map == NULL) {
                fprintf(stderr, _("%s: malloc of %d bytes failed.\n"),
@@ -232,9 +233,10 @@ bmap_f(
                        return 0;
                }
        }
+       egcnt = nflag ? min(nflag, map->bmv_entries) : map->bmv_entries;
        printf("%s:\n", file->name);
        if (!vflag) {
-               for (i = 0; i < map->bmv_entries; i++) {
+               for (i = 0; i < egcnt; i++) {
                        printf("\t%d: [%lld..%lld]: ", i,
                                (long long) map[i + 1].bmv_offset,
                                (long long)(map[i + 1].bmv_offset +
@@ -288,7 +290,7 @@ bmap_f(
                 * Go through the extents and figure out the width
                 * needed for all columns.
                 */
-               for (i = 0; i < map->bmv_entries; i++) {
+               for (i = 0; i < egcnt; i++) {
                        snprintf(rbuf, sizeof(rbuf), "[%lld..%lld]:",
                                (long long) map[i + 1].bmv_offset,
                                (long long)(map[i + 1].bmv_offset +
@@ -325,7 +327,7 @@ bmap_f(
                        aoff_w, _("AG-OFFSET"),
                        tot_w, _("TOTAL"),
                        flg ? _(" FLAGS") : "");
-               for (i = 0; i < map->bmv_entries; i++) {
+               for (i = 0; i < egcnt; i++) {
                        flg = FLG_NULL;
                        if (map[i + 1].bmv_oflags & BMV_OF_PREALLOC) {
                                flg |= FLG_PRE;