diff -up ./src/expand.c.orig ./src/expand.c --- ./src/expand.c.orig 2016-06-01 12:42:49.330373488 +0200 +++ ./src/expand.c 2016-06-07 14:35:16.011142041 +0200 @@ -173,15 +173,19 @@ expand (void) do { - do { + while (true) { mbf_getc (c, mbf); - if (mb_iseof (c)) + if ((mb_iseof (c)) && (fp = next_file (fp))) { - mbf_init (mbf, fp = next_file (fp)); + mbf_init (mbf, fp); continue; } + else + { + break; + } } - while (false); + if (convert) { diff -up ./src/unexpand.c.orig ./src/unexpand.c --- ./src/unexpand.c.orig 2016-06-07 14:26:57.380746446 +0200 +++ ./src/unexpand.c 2016-06-07 14:34:54.059256698 +0200 @@ -220,15 +220,19 @@ unexpand (void) do { - do { + while (true) { mbf_getc (c, mbf); - if (mb_iseof (c)) + if ((mb_iseof (c)) && (fp = next_file (fp))) { - mbf_init (mbf, fp = next_file (fp)); + mbf_init (mbf, fp); continue; } + else + { + break; + } } - while (false); + if (convert) { diff -up ./tests/expand/mb.sh.orig ./tests/expand/mb.sh --- ./tests/expand/mb.sh.orig 2016-05-11 14:13:53.095289000 +0200 +++ ./tests/expand/mb.sh 2016-06-07 14:38:48.259033445 +0200 @@ -44,6 +44,20 @@ EOF expand < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 +#multiple files as an input +cat <<\EOF >> exp || framework_failure_ +1234567812345678123456781 +. . . . +a b c d +. . . . +ä ö ü ß +. . . . + äöü . öüä. ä xx +EOF + +expand ./in ./in > out || fail=1 +compare exp out > /dev/null 2>&1 || fail=1 + #test characters with display widths != 1 env printf '12345678 e\t|ascii(1) diff -up ./tests/unexpand/mb.sh.orig ./tests/unexpand/mb.sh --- ./tests/unexpand/mb.sh.orig 2016-06-07 14:41:44.210106466 +0200 +++ ./tests/unexpand/mb.sh 2016-06-07 14:52:28.848639772 +0200 @@ -44,6 +44,22 @@ EOF unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 + +#multiple files as an input +cat >> exp <<\EOF +1234567812345678123456781 +. . . . +a b c d +. . . . +ä ö ü ß +. . . . + äöü . öüä. ä xx +EOF + + +unexpand -a ./in ./in > out || fail=1 +compare exp out > /dev/null 2>&1 || fail=1 + #test characters with a display width larger than 1 env printf '12345678