diff options
author | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2010-03-05 17:30:56 -0500 |
---|---|---|
committer | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2010-03-05 17:30:56 -0500 |
commit | c82f3e481b03694922e9cec1c7c2eef1db4131e2 (patch) | |
tree | 2d7cb6489a84d038a10fb37490fa2da7c82e4d52 | |
parent | 8905259e0ce80fa0d5fe358a4774cab0a5b75321 (diff) | |
download | screen-c82f3e481b03694922e9cec1c7c2eef1db4131e2.tar.gz |
Encode before dumping.
Do the necessary encoding before dumping hardcopy/scrollback into a
file.
-rw-r--r-- | src/fileio.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/fileio.c b/src/fileio.c index 0fe68d3..3e63477 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -529,27 +529,30 @@ int dump; } if (dump == DUMP_SCROLLBACK) { +#define DUMP_LINE(line) do \ + { \ + pi = (line)->image; \ + for (k = fore->w_width - 1; k >= 0 && pi[k] == ' '; k--) \ + ; \ + for (j = 0; j <= k; j++) \ + { \ + unsigned char str[16]; \ + int l = EncodeChar(str, pi[j], fore->w_encoding, 0), ll; \ + for (ll = 0; ll < l; ll++) \ + putc(str[ll], f); \ + if (dw_left((line), j, fore->w_encoding)) \ + j++; \ + } \ + putc('\n', f); \ + } while (0) + #ifdef COPY_PASTE for (i = 0; i < fore->w_histheight; i++) - { - pi = (WIN(i)->image); - for (k = fore->w_width - 1; k >= 0 && pi[k] == ' '; k--) - ; - for (j = 0; j <= k; j++) - putc(pi[j], f); - putc('\n', f); - } + DUMP_LINE(WIN(i)); #endif } for (i = 0; i < fore->w_height; i++) - { - pi = fore->w_mlines[i].image; - for (k = fore->w_width - 1; k >= 0 && pi[k] == ' '; k--) - ; - for (j = 0; j <= k; j++) - putc(pi[j], f); - putc('\n', f); - } + DUMP_LINE(fore->w_mlines + i); break; case DUMP_TERMCAP: if ((p = index(MakeTermcap(fore->w_aflag), '=')) != NULL) |