1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-02 08:42:48 +00:00

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:	vermaden@interia.pl
Reviewed by:    kevans (mentor)
Approved by:    kevans (mentor)
MFC after:      1 week
Differential Revision:	https://reviews.freebsd.org/D26048
This commit is contained in:
Robert Wing 2020-08-19 00:09:39 +00:00
parent eeed0c98a1
commit deaff65313
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=364369

View File

@ -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