From e906be066ec378843e81a22ad49e92c3e412b928 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 19 Mar 2014 17:20:57 +0100 Subject: [PATCH] libsmartcols: add reduce term width functionality Signed-off-by: Karel Zak --- libsmartcols/src/libsmartcols.h.in | 1 + libsmartcols/src/smartcolsP.h | 1 + libsmartcols/src/table.c | 10 ++++++++++ libsmartcols/src/table_print.c | 1 + 4 files changed, 13 insertions(+) diff --git a/libsmartcols/src/libsmartcols.h.in b/libsmartcols/src/libsmartcols.h.in index c5875fd1c6..93b205e2f0 100644 --- a/libsmartcols/src/libsmartcols.h.in +++ b/libsmartcols/src/libsmartcols.h.in @@ -134,6 +134,7 @@ extern int scols_table_set_symbols(struct libscols_table *tb, struct libscols_sy extern int scols_table_set_stream(struct libscols_table *tb, FILE *stream); extern FILE *scols_table_get_stream(struct libscols_table *tb); +extern int scols_table_reduce_termwidth(struct libscols_table *tb, size_t reduce); /* table_print.c */ extern int scols_print_table(struct libscols_table *tb); diff --git a/libsmartcols/src/smartcolsP.h b/libsmartcols/src/smartcolsP.h index d8cf2ee56a..d7211438e6 100644 --- a/libsmartcols/src/smartcolsP.h +++ b/libsmartcols/src/smartcolsP.h @@ -104,6 +104,7 @@ struct libscols_table { size_t ncols; /* number of columns */ size_t nlines; /* number of lines */ size_t termwidth; /* terminal width */ + size_t termreduce; /* extra blank space */ int is_term; /* is a tty? */ int flags; int first_run; diff --git a/libsmartcols/src/table.c b/libsmartcols/src/table.c index 5c45aeeebf..770aaccc2f 100644 --- a/libsmartcols/src/table.c +++ b/libsmartcols/src/table.c @@ -270,6 +270,16 @@ FILE *scols_table_get_stream(struct libscols_table *tb) return tb ? tb->out: NULL; } +int scols_table_reduce_termwidth(struct libscols_table *tb, size_t reduce) +{ + assert(tb); + if (!tb) + return -EINVAL; + + tb->termreduce = reduce; + return 0; +} + /* * @tb: table * @: number of column (0..N) diff --git a/libsmartcols/src/table_print.c b/libsmartcols/src/table_print.c index 8504c2c4d2..2edd185b45 100644 --- a/libsmartcols/src/table_print.c +++ b/libsmartcols/src/table_print.c @@ -558,6 +558,7 @@ int scols_print_table(struct libscols_table *tb) tb->termwidth = get_terminal_width(); if (tb->termwidth <= 0) tb->termwidth = 80; + tb->termwidth -= tb->termreduce; } line_sz = tb->termwidth; -- 2.47.3