From: Karel Zak Date: Fri, 22 Nov 2013 13:06:44 +0000 (+0100) Subject: lib/tt: add reduce term width functionality X-Git-Tag: v2.25-rc1~534 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=735822963753884202a3a020121c9289752b8306;p=thirdparty%2Futil-linux.git lib/tt: add reduce term width functionality Signed-off-by: Karel Zak --- diff --git a/include/tt.h b/include/tt.h index b1fbf927e5..781b953aeb 100644 --- a/include/tt.h +++ b/include/tt.h @@ -37,6 +37,7 @@ struct tt { FILE *out; /* output stream */ size_t ncols; /* number of columns */ size_t termwidth; /* terminal width */ + size_t termreduce; /* reduce the original termwidth */ int is_term; /* is a tty? */ int flags; int first_run; @@ -80,6 +81,7 @@ struct tt_line { extern struct tt *tt_new_table(int flags); extern int tt_get_flags(struct tt *tb); extern void tt_set_flags(struct tt *tb, int flags); +extern void tt_set_termreduce(struct tt *tb, size_t re); extern void tt_free_table(struct tt *tb); extern void tt_remove_lines(struct tt *tb); extern int tt_print_table(struct tt *tb); diff --git a/lib/tt.c b/lib/tt.c index b5beb7ad73..3cca4817f6 100644 --- a/lib/tt.c +++ b/lib/tt.c @@ -239,6 +239,17 @@ void tt_set_stream(struct tt *tb, FILE *out) tb->out = out; } +/* + * Reduce terminal size, the final table size will be + * termwidth - termreduce. + */ +void tt_set_termreduce(struct tt *tb, size_t re) +{ + if (!tb) + return; + tb->termreduce = re; +} + size_t tb_get_nlines(struct tt *tb) { struct list_head *p; @@ -943,6 +954,8 @@ int tt_print_table(struct tt *tb) tb->termwidth = get_terminal_width(); if (tb->termwidth <= 0) tb->termwidth = 80; + + tb->termwidth -= tb->termreduce; } line_sz = tb->termwidth;