if (c == EOF)
break;
if (! STRING_ISGRAPHIC (c))
- break;
+ {
+ if (encoding_bytes > 1)
+ {
+ /* In case of multibyte encodings rewind using magic buffer. */
+ if (magiccount == 0)
+ {
+ /* If no magic buffer exists: use memory of c. */
+ switch (encoding)
+ {
+ default:
+ break;
+ case 'b':
+ c = c & 0xff;
+ magiccount += 1;
+ break;
+ case 'l':
+ case 'L':
+ c = c >> 8;
+ magiccount += (encoding_bytes -1);
+ break;
+ case 'B':
+ c = (( c & 0xff0000) >> 16) | ( c & 0xff00)
+ | (( c & 0xff) << 16);
+ magiccount += 3;
+ break;
+ }
+ magic = (char *) &c;
+ }
+ else
+ {
+ /* If magic buffer exists: rewind. */
+ magic = magic - (encoding_bytes -1);
+ }
+ address = address - (encoding_bytes -1);
+ }
+ break;
+ }
putchar (c);
}