improve printw to write faster
Now all encoding options are faster.
This commit is contained in:
parent
f0577d8ea0
commit
0a4a98390d
1 changed files with 23 additions and 5 deletions
28
output.c
28
output.c
|
@ -9,11 +9,29 @@ printw(FILE *fp, unsigned char *s, int slen)
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
c = '\n';
|
c = '\n';
|
||||||
while (slen--) {
|
if (col) {
|
||||||
fputc((c = *s++), fp);
|
if (slen >= WRAPCOL-col) {
|
||||||
++col;
|
fwrite(s, sizeof(*s), WRAPCOL-col, fp);
|
||||||
if (!(col %= WRAPCOL))
|
s += WRAPCOL-col;
|
||||||
fputc((c = '\n'), fp);
|
slen -= WRAPCOL-col;
|
||||||
|
col = 0;
|
||||||
|
fputc('\n', fp);
|
||||||
|
} else {
|
||||||
|
fwrite(s, sizeof(*s), slen, fp);
|
||||||
|
s += slen;
|
||||||
|
col += slen;
|
||||||
|
slen -= slen;
|
||||||
|
c = *(s+slen-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; slen >= WRAPCOL; slen -= WRAPCOL, s += WRAPCOL) {
|
||||||
|
fwrite(s, sizeof(*s), WRAPCOL, fp);
|
||||||
|
fputc('\n', fp);
|
||||||
|
}
|
||||||
|
if (slen > 0) {
|
||||||
|
fwrite(s, sizeof(*s), slen, fp);
|
||||||
|
col += slen;
|
||||||
|
c = *(s+slen-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue