|
|
d3767b |
From ff424639fe863cbd6963add1a79b97290c1606c6 Mon Sep 17 00:00:00 2001
|
|
|
d3767b |
From: rpm-build <rpm-build>
|
|
|
d3767b |
Date: Fri, 3 Feb 2017 12:26:53 +0100
|
|
|
d3767b |
Subject: [PATCH] fold.c: preserve new-lines in mutlibyte text
|
|
|
d3767b |
|
|
|
d3767b |
---
|
|
|
d3767b |
src/fold.c | 49 ++++++++++++++++++++++++-------------------------
|
|
|
d3767b |
1 file changed, 24 insertions(+), 25 deletions(-)
|
|
|
d3767b |
|
|
|
d3767b |
diff --git a/src/fold.c b/src/fold.c
|
|
|
d3767b |
index d23edd5..8c232a7 100644
|
|
|
d3767b |
--- a/src/fold.c
|
|
|
d3767b |
+++ b/src/fold.c
|
|
|
d3767b |
@@ -342,39 +342,38 @@ fold_multibyte_text (FILE *istream, size_t width, int *saved_errno)
|
|
|
d3767b |
}
|
|
|
d3767b |
|
|
|
d3767b |
rescan:
|
|
|
d3767b |
- if (operating_mode == byte_mode) /* byte mode */
|
|
|
d3767b |
+ if (convfail)
|
|
|
d3767b |
+ increment = 1;
|
|
|
d3767b |
+ else if (wc == L'\n')
|
|
|
d3767b |
+ {
|
|
|
d3767b |
+ /* preserve newline */
|
|
|
d3767b |
+ fwrite (line_out, sizeof(char), offset_out, stdout);
|
|
|
d3767b |
+ START_NEW_LINE;
|
|
|
d3767b |
+ continue;
|
|
|
d3767b |
+ }
|
|
|
d3767b |
+ else if (operating_mode == byte_mode) /* byte mode */
|
|
|
d3767b |
increment = mblength;
|
|
|
d3767b |
else if (operating_mode == character_mode) /* character mode */
|
|
|
d3767b |
increment = 1;
|
|
|
d3767b |
- else /* column mode */
|
|
|
d3767b |
+ else /* column mode */
|
|
|
d3767b |
{
|
|
|
d3767b |
- if (convfail)
|
|
|
d3767b |
- increment = 1;
|
|
|
d3767b |
- else
|
|
|
d3767b |
+ switch (wc)
|
|
|
d3767b |
{
|
|
|
d3767b |
- switch (wc)
|
|
|
d3767b |
- {
|
|
|
d3767b |
- case L'\n':
|
|
|
d3767b |
- fwrite (line_out, sizeof(char), offset_out, stdout);
|
|
|
d3767b |
- START_NEW_LINE;
|
|
|
d3767b |
- continue;
|
|
|
d3767b |
+ case L'\b':
|
|
|
d3767b |
+ increment = (column > 0) ? -1 : 0;
|
|
|
d3767b |
+ break;
|
|
|
d3767b |
|
|
|
d3767b |
- case L'\b':
|
|
|
d3767b |
- increment = (column > 0) ? -1 : 0;
|
|
|
d3767b |
- break;
|
|
|
d3767b |
+ case L'\r':
|
|
|
d3767b |
+ increment = -1 * column;
|
|
|
d3767b |
+ break;
|
|
|
d3767b |
|
|
|
d3767b |
- case L'\r':
|
|
|
d3767b |
- increment = -1 * column;
|
|
|
d3767b |
- break;
|
|
|
d3767b |
+ case L'\t':
|
|
|
d3767b |
+ increment = 8 - column % 8;
|
|
|
d3767b |
+ break;
|
|
|
d3767b |
|
|
|
d3767b |
- case L'\t':
|
|
|
d3767b |
- increment = 8 - column % 8;
|
|
|
d3767b |
- break;
|
|
|
d3767b |
-
|
|
|
d3767b |
- default:
|
|
|
d3767b |
- increment = wcwidth (wc);
|
|
|
d3767b |
- increment = (increment < 0) ? 0 : increment;
|
|
|
d3767b |
- }
|
|
|
d3767b |
+ default:
|
|
|
d3767b |
+ increment = wcwidth (wc);
|
|
|
d3767b |
+ increment = (increment < 0) ? 0 : increment;
|
|
|
d3767b |
}
|
|
|
d3767b |
}
|
|
|
d3767b |
|
|
|
d3767b |
--
|
|
|
d3767b |
2.7.4
|
|
|
d3767b |
|