Old implementation used tabs "\t", and tried to work around problems by guessing amount of tabs needed (e.g. "\t\t" after top level", with buggy output as soon as empty uuids are printed). This will never work correctly, as tab width is a user-defined setting in the terminal.
Keep it simple and don't reimplement the wheel, for nice tabular output we have the "column" command from util-linux: btrfs subvolume list -t <path> | column -t Signed-off-by: Axel Burri <a...@tty0.ch> --- btrfs-list.c | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/btrfs-list.c b/btrfs-list.c index f8396e7..c09257a 100644 --- a/btrfs-list.c +++ b/btrfs-list.c @@ -45,12 +45,12 @@ struct root_lookup { }; static struct { - char *name; + char *name; /* machine-readable column identifier: [a-z_]+ */ char *column_name; int need_print; } btrfs_list_columns[] = { { - .name = "ID", + .name = "id", .column_name = "ID", .need_print = 0, }, @@ -70,7 +70,7 @@ static struct { .need_print = 0, }, { - .name = "top level", + .name = "top_level", .column_name = "Top Level", .need_print = 0, }, @@ -1465,13 +1465,10 @@ static void print_single_volume_info_table(struct root_info *subv) if (!btrfs_list_columns[i].need_print) continue; - print_subvolume_column(subv, i); - - if (i != BTRFS_LIST_PATH) - printf("\t"); + if (i != 0) + printf(" "); - if (i == BTRFS_LIST_TOP_LEVEL) - printf("\t"); + print_subvolume_column(subv, i); } printf("\n"); } @@ -1496,30 +1493,17 @@ static void print_single_volume_info_default(struct root_info *subv) static void print_all_volume_info_tab_head(void) { int i; - int len; - char barrier[20]; - - for (i = 0; i < BTRFS_LIST_ALL; i++) { - if (btrfs_list_columns[i].need_print) - printf("%s\t", btrfs_list_columns[i].name); - - if (i == BTRFS_LIST_ALL-1) - printf("\n"); - } for (i = 0; i < BTRFS_LIST_ALL; i++) { - memset(barrier, 0, sizeof(barrier)); + if (!btrfs_list_columns[i].need_print) + continue; - if (btrfs_list_columns[i].need_print) { - len = strlen(btrfs_list_columns[i].name); - while (len--) - strcat(barrier, "-"); + if (i != 0) + printf(" "); - printf("%s\t", barrier); - } - if (i == BTRFS_LIST_ALL-1) - printf("\n"); + printf(btrfs_list_columns[i].name); } + printf("\n"); } static void print_all_volume_info(struct root_lookup *sorted_tree, -- 2.4.9 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html