Make strdump(), csidump(), print to stderr

The two functions strdump(), csidump() are called to show errors and
their output is introduced by a message printed to stderr. Thus, it it
more consistent to have them print to stderr.

Moreover stderr is unbuffered (at least on Linux), making problems
immediately visible.
This commit is contained in:
pl@ninthfloor.org 2016-11-11 17:45:52 +01:00 committed by Roberto E. Vargas Caballero
parent 8c99915608
commit 902a392b90

29
st.c
View file

@ -2490,22 +2490,22 @@ csidump(void)
int i; int i;
uint c; uint c;
printf("ESC["); fprintf(stderr, "ESC[");
for (i = 0; i < csiescseq.len; i++) { for (i = 0; i < csiescseq.len; i++) {
c = csiescseq.buf[i] & 0xff; c = csiescseq.buf[i] & 0xff;
if (isprint(c)) { if (isprint(c)) {
putchar(c); putc(c, stderr);
} else if (c == '\n') { } else if (c == '\n') {
printf("(\\n)"); fprintf(stderr, "(\\n)");
} else if (c == '\r') { } else if (c == '\r') {
printf("(\\r)"); fprintf(stderr, "(\\r)");
} else if (c == 0x1b) { } else if (c == 0x1b) {
printf("(\\e)"); fprintf(stderr, "(\\e)");
} else { } else {
printf("(%02x)", c); fprintf(stderr, "(%02x)", c);
} }
} }
putchar('\n'); putc('\n', stderr);
} }
void void
@ -2594,24 +2594,25 @@ strdump(void)
int i; int i;
uint c; uint c;
printf("ESC%c", strescseq.type); fprintf(stderr, "ESC%c", strescseq.type);
for (i = 0; i < strescseq.len; i++) { for (i = 0; i < strescseq.len; i++) {
c = strescseq.buf[i] & 0xff; c = strescseq.buf[i] & 0xff;
if (c == '\0') { if (c == '\0') {
putc('\n', stderr);
return; return;
} else if (isprint(c)) { } else if (isprint(c)) {
putchar(c); putc(c, stderr);
} else if (c == '\n') { } else if (c == '\n') {
printf("(\\n)"); fprintf(stderr, "(\\n)");
} else if (c == '\r') { } else if (c == '\r') {
printf("(\\r)"); fprintf(stderr, "(\\r)");
} else if (c == 0x1b) { } else if (c == 0x1b) {
printf("(\\e)"); fprintf(stderr, "(\\e)");
} else { } else {
printf("(%02x)", c); fprintf(stderr, "(%02x)", c);
} }
} }
printf("ESC\\\n"); fprintf(stderr, "ESC\\\n");
} }
void void