mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-20 14:03:39 +03:00
Merge pull request #9550 from nosada/fix-9549
format-table: make all widths be set properly
This commit is contained in:
commit
460d7ac3a2
@ -36,7 +36,7 @@
|
||||
that. The first row is always the header row. If header display is turned off we simply skip outputting the first
|
||||
row. Also, when sorting rows we always leave the first row where it is, as the header shouldn't move.
|
||||
|
||||
- Note because there's no row and no column object some properties that might be approproate as row/column properties
|
||||
- Note because there's no row and no column object some properties that might be appropriate as row/column properties
|
||||
are exposed as cell properties instead. For example, the "weight" of a column (which is used to determine where to
|
||||
add/remove space preferable when expanding/compressing tables horizontally) is actually made the "weight" of a
|
||||
cell. Given that we usually need it per-column though we will calculate the average across every cell of the column
|
||||
@ -1134,14 +1134,12 @@ int table_print(Table *t, FILE *f) {
|
||||
assert(weight_sum >= column_weight[j]);
|
||||
weight_sum -= column_weight[j];
|
||||
|
||||
if (restart)
|
||||
if (restart && !finalize)
|
||||
break;
|
||||
}
|
||||
|
||||
if (finalize) {
|
||||
assert(!restart);
|
||||
if (finalize)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!restart)
|
||||
finalize = true;
|
||||
|
@ -5,6 +5,30 @@
|
||||
#include "string-util.h"
|
||||
#include "time-util.h"
|
||||
|
||||
static void test_issue_9549(void) {
|
||||
_cleanup_(table_unrefp) Table *table = NULL;
|
||||
_cleanup_free_ char *formatted = NULL;
|
||||
|
||||
assert_se(table = table_new("NAME", "TYPE", "RO", "USAGE", "CREATED", "MODIFIED"));
|
||||
assert_se(table_set_align_percent(table, TABLE_HEADER_CELL(3), 100) >= 0);
|
||||
assert_se(table_add_many(table,
|
||||
TABLE_STRING, "foooo",
|
||||
TABLE_STRING, "raw",
|
||||
TABLE_BOOLEAN, false,
|
||||
TABLE_SIZE, (uint64_t) (673.7*1024*1024),
|
||||
TABLE_STRING, "Wed 2018-07-11 00:10:33 JST",
|
||||
TABLE_STRING, "Wed 2018-07-11 00:16:00 JST") >= 0);
|
||||
|
||||
table_set_width(table, 75);
|
||||
assert_se(table_format(table, &formatted) >= 0);
|
||||
|
||||
printf("%s\n", formatted);
|
||||
assert_se(streq(formatted,
|
||||
"NAME TYPE RO USAGE CREATED MODIFIED \n"
|
||||
"foooo raw no 673.6M Wed 2018-07-11 00:10:33 J… Wed 2018-07-11 00:16:00 JST\n"
|
||||
));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
_cleanup_(table_unrefp) Table *t = NULL;
|
||||
@ -135,5 +159,7 @@ int main(int argc, char *argv[]) {
|
||||
" yes xxx yes xxx xxx \n"
|
||||
"5min 5min \n"));
|
||||
|
||||
test_issue_9549();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user