summaryrefslogtreecommitdiff
path: root/libsmartcols
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2014-03-19 17:20:57 +0100
committerKarel Zak <kzak@redhat.com>2014-04-03 12:29:16 +0200
commite906be066ec378843e81a22ad49e92c3e412b928 (patch)
treebb7c2384daf5bbc82c6cc58dd178b0e2fdb46a4e /libsmartcols
parent62d2e2e5389daf4120c945300e89705a91d93ff5 (diff)
downloadutil-linux-e906be066ec378843e81a22ad49e92c3e412b928.tar.gz
libsmartcols: add reduce term width functionality
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libsmartcols')
-rw-r--r--libsmartcols/src/libsmartcols.h.in1
-rw-r--r--libsmartcols/src/smartcolsP.h1
-rw-r--r--libsmartcols/src/table.c10
-rw-r--r--libsmartcols/src/table_print.c1
4 files changed, 13 insertions, 0 deletions
diff --git a/libsmartcols/src/libsmartcols.h.in b/libsmartcols/src/libsmartcols.h.in
index c5875fd1c..93b205e2f 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 d8cf2ee56..d7211438e 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 5c45aeeeb..770aaccc2 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 8504c2c4d..2edd185b4 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;