From: Timo Sirainen Date: Sat, 12 Jun 2010 00:54:53 +0000 (+0100) Subject: doveadm: Use actual terminal width for table formatter if possible. X-Git-Tag: 2.0.rc1~184 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4d909e4535f1f7b9fb08047ed1bde77975fdf450;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Use actual terminal width for table formatter if possible. --HG-- branch : HEAD --- diff --git a/src/doveadm/doveadm-print-table.c b/src/doveadm/doveadm-print-table.c index 9c591bcb92..e8da9253ee 100644 --- a/src/doveadm/doveadm-print-table.c +++ b/src/doveadm/doveadm-print-table.c @@ -5,8 +5,11 @@ #include "doveadm-print-private.h" #include +#include +#include #define DEFAULT_COLUMNS 80 +#define MIN_COLUMNS 30 #define MAX_BUFFER_LINES 100 struct doveadm_print_table_header { @@ -164,6 +167,7 @@ static void doveadm_print_table_print(const char *value) static void doveadm_print_table_init(void) { pool_t pool; + struct ttysize ts; pool = pool_alloconly_create("doveadm print table", 1024); ctx = p_new(pool, struct doveadm_print_table_context, 1); @@ -171,6 +175,11 @@ static void doveadm_print_table_init(void) p_array_init(&ctx->headers, pool, 16); i_array_init(&ctx->buffered_values, 64); ctx->columns = DEFAULT_COLUMNS; + + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ts) == 0) { + ctx->columns = ts.ts_cols < MIN_COLUMNS ? + MIN_COLUMNS : ts.ts_cols; + } } static void doveadm_print_table_deinit(void)