Author: rew
Date: Wed Aug 19 00:09:39 2020
New Revision: 364369
URL: https://svnweb.freebsd.org/changeset/base/364369

Log:
  bectl(8): Fix output of `bectl list` for the 'Mountpoint' column.
  
  Currently, the output of `bectl list` doesn't align the 'Mountpoint' column
  correctly when the 'mounted' property of a boot environment dataset is longer
  than the default column width.
  
  Set the 'Mountpoint' column width to the boot environment dataset with the
  longest 'mounted' property or to the default width, whichever is greater.
  
  PR:             241064
  Reported by:  verma...@interia.pl
  Reviewed by:    kevans (mentor)
  Approved by:    kevans (mentor)
  MFC after:      1 week
  Differential Revision:        https://reviews.freebsd.org/D26048

Modified:
  head/sbin/bectl/bectl_list.c

Modified: head/sbin/bectl/bectl_list.c
==============================================================================
--- head/sbin/bectl/bectl_list.c        Tue Aug 18 22:46:46 2020        
(r364368)
+++ head/sbin/bectl/bectl_list.c        Wed Aug 19 00:09:39 2020        
(r364369)
@@ -292,19 +292,23 @@ print_headers(nvlist_t *props, struct printc *pc)
        nvpair_t *cur;
        nvlist_t *dsprops;
        char *propstr;
-       size_t be_maxcol;
+       size_t be_maxcol, mount_colsz;
 
        if (pc->show_all_datasets || pc->show_snaps)
                chosen_be_header = HEADER_BEPLUS;
        else
                chosen_be_header = HEADER_BE;
        be_maxcol = strlen(chosen_be_header);
+       mount_colsz = strlen(HEADER_MOUNT);
        for (cur = nvlist_next_nvpair(props, NULL); cur != NULL;
            cur = nvlist_next_nvpair(props, cur)) {
                be_maxcol = MAX(be_maxcol, strlen(nvpair_name(cur)));
+               nvpair_value_nvlist(cur, &dsprops);
+
+               if (nvlist_lookup_string(dsprops, "mounted", &propstr) == 0)
+                       mount_colsz = MAX(mount_colsz, strlen(propstr));
                if (!pc->show_all_datasets && !pc->show_snaps)
                        continue;
-               nvpair_value_nvlist(cur, &dsprops);
                if (nvlist_lookup_string(dsprops, "dataset", &propstr) != 0)
                        continue;
                be_maxcol = MAX(be_maxcol, strlen(propstr) + INDENT_INCREMENT);
@@ -316,10 +320,10 @@ print_headers(nvlist_t *props, struct printc *pc)
 
        pc->be_colsz = be_maxcol;
        pc->active_colsz_def = strlen(HEADER_ACTIVE);
-       pc->mount_colsz = strlen(HEADER_MOUNT);
+       pc->mount_colsz = mount_colsz;
        pc->space_colsz = strlen(HEADER_SPACE);
-       printf("%*s %s %s %s %s\n", -pc->be_colsz, chosen_be_header,
-           HEADER_ACTIVE, HEADER_MOUNT, HEADER_SPACE, HEADER_CREATED);
+       printf("%*s %s %*s %s %s\n", -pc->be_colsz, chosen_be_header,
+           HEADER_ACTIVE, -pc->mount_colsz, HEADER_MOUNT, HEADER_SPACE, 
HEADER_CREATED);
 
        /*
         * All other invocations in which we aren't using the default header
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to