From 4d909e4535f1f7b9fb08047ed1bde77975fdf450 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 12 Jun 2010 01:54:53 +0100 Subject: [PATCH] doveadm: Use actual terminal width for table formatter if possible. --HG-- branch : HEAD --- src/doveadm/doveadm-print-table.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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) -- 2.47.3