unexpand: fix "a b"\n" input case

Signed-off-by: Tomas Heinrich <heinrich.tomas@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Tomas Heinrich 2010-03-26 09:46:07 +01:00 committed by Denys Vlasenko
parent 1abc07dcca
commit 968951fd0c
2 changed files with 13 additions and 7 deletions

View File

@ -81,12 +81,13 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt)
while (*ptr) { while (*ptr) {
unsigned n; unsigned n;
unsigned len; unsigned len = 0;
while (*ptr == ' ') { while (*ptr == ' ') {
column++;
ptr++; ptr++;
len++;
} }
column += len;
if (*ptr == '\t') { if (*ptr == '\t') {
column += tab_size - (column % tab_size); column += tab_size - (column % tab_size);
ptr++; ptr++;
@ -94,16 +95,18 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt)
} }
n = column / tab_size; n = column / tab_size;
column = column % tab_size; if (n) {
while (n--) len = column = column % tab_size;
putchar('\t'); while (n--)
putchar('\t');
}
if ((opt & OPT_INITIAL) && ptr != line) { if ((opt & OPT_INITIAL) && ptr != line) {
printf("%*s%s", column, "", ptr); printf("%*s%s", len, "", ptr);
break; break;
} }
n = strcspn(ptr, "\t "); n = strcspn(ptr, "\t ");
printf("%*s%.*s", column, "", n, ptr); printf("%*s%.*s", len, "", n, ptr);
# if ENABLE_FEATURE_ASSUME_UNICODE # if ENABLE_FEATURE_ASSUME_UNICODE
{ {
char c; char c;

View File

@ -27,6 +27,9 @@ testing "unexpand case 6" "unexpand" \
testing "unexpand case 7" "unexpand" \ testing "unexpand case 7" "unexpand" \
"123\t 45678\n" "" "123 \t 45678\n" \ "123\t 45678\n" "" "123 \t 45678\n" \
testing "unexpand case 8" "unexpand" \
"a b\n" "" "a b\n" \
testing "unexpand with unicode characher 0x394" "unexpand" \ testing "unexpand with unicode characher 0x394" "unexpand" \
"1ΔΔΔ5\t99999\n" "" "1ΔΔΔ5 99999\n" \ "1ΔΔΔ5\t99999\n" "" "1ΔΔΔ5 99999\n" \