From 968951fd0ced7d0d4b81c0ee4466eada93ae4128 Mon Sep 17 00:00:00 2001 From: Tomas Heinrich Date: Fri, 26 Mar 2010 09:46:07 +0100 Subject: unexpand: fix "a b"\n" input case Signed-off-by: Tomas Heinrich Signed-off-by: Denys Vlasenko --- coreutils/expand.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'coreutils') diff --git a/coreutils/expand.c b/coreutils/expand.c index 60ac9f568..cfb1e25d9 100644 --- a/coreutils/expand.c +++ b/coreutils/expand.c @@ -81,12 +81,13 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt) while (*ptr) { unsigned n; - unsigned len; + unsigned len = 0; while (*ptr == ' ') { - column++; ptr++; + len++; } + column += len; if (*ptr == '\t') { column += tab_size - (column % tab_size); ptr++; @@ -94,16 +95,18 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt) } n = column / tab_size; - column = column % tab_size; - while (n--) - putchar('\t'); + if (n) { + len = column = column % tab_size; + while (n--) + putchar('\t'); + } if ((opt & OPT_INITIAL) && ptr != line) { - printf("%*s%s", column, "", ptr); + printf("%*s%s", len, "", ptr); break; } n = strcspn(ptr, "\t "); - printf("%*s%.*s", column, "", n, ptr); + printf("%*s%.*s", len, "", n, ptr); # if ENABLE_FEATURE_ASSUME_UNICODE { char c; -- cgit v1.2.3