summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-05 17:30:56 -0500
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-05 17:30:56 -0500
commitc82f3e481b03694922e9cec1c7c2eef1db4131e2 (patch)
tree2d7cb6489a84d038a10fb37490fa2da7c82e4d52
parent8905259e0ce80fa0d5fe358a4774cab0a5b75321 (diff)
downloadscreen-c82f3e481b03694922e9cec1c7c2eef1db4131e2.tar.gz
Encode before dumping.
Do the necessary encoding before dumping hardcopy/scrollback into a file.
-rw-r--r--src/fileio.c35
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)