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;
|
||||
|
||||
c = '\n';
|
||||
while (slen--) {
|
||||
fputc((c = *s++), fp);
|
||||
++col;
|
||||
if (!(col %= WRAPCOL))
|
||||
fputc((c = '\n'), fp);
|
||||
if (col) {
|
||||
if (slen >= WRAPCOL-col) {
|
||||
fwrite(s, sizeof(*s), WRAPCOL-col, fp);
|
||||
s += WRAPCOL-col;
|
||||
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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue