]>
Commit | Line | Data |
---|---|---|
e8da1929 SS |
1 | From ff424639fe863cbd6963add1a79b97290c1606c6 Mon Sep 17 00:00:00 2001 |
2 | From: rpm-build <rpm-build> | |
3 | Date: Fri, 3 Feb 2017 12:26:53 +0100 | |
4 | Subject: [PATCH] fold.c: preserve new-lines in mutlibyte text | |
5 | ||
6 | --- | |
7 | src/fold.c | 49 ++++++++++++++++++++++++------------------------- | |
8 | 1 file changed, 24 insertions(+), 25 deletions(-) | |
9 | ||
10 | diff --git a/src/fold.c b/src/fold.c | |
11 | index d23edd5..8c232a7 100644 | |
12 | --- a/src/fold.c | |
13 | +++ b/src/fold.c | |
14 | @@ -342,39 +342,38 @@ fold_multibyte_text (FILE *istream, size_t width, int *saved_errno) | |
15 | } | |
16 | ||
17 | rescan: | |
18 | - if (operating_mode == byte_mode) /* byte mode */ | |
19 | + if (convfail) | |
20 | + increment = 1; | |
21 | + else if (wc == L'\n') | |
22 | + { | |
23 | + /* preserve newline */ | |
24 | + fwrite (line_out, sizeof(char), offset_out, stdout); | |
25 | + START_NEW_LINE; | |
26 | + continue; | |
27 | + } | |
28 | + else if (operating_mode == byte_mode) /* byte mode */ | |
29 | increment = mblength; | |
30 | else if (operating_mode == character_mode) /* character mode */ | |
31 | increment = 1; | |
32 | - else /* column mode */ | |
33 | + else /* column mode */ | |
34 | { | |
35 | - if (convfail) | |
36 | - increment = 1; | |
37 | - else | |
38 | + switch (wc) | |
39 | { | |
40 | - switch (wc) | |
41 | - { | |
42 | - case L'\n': | |
43 | - fwrite (line_out, sizeof(char), offset_out, stdout); | |
44 | - START_NEW_LINE; | |
45 | - continue; | |
46 | + case L'\b': | |
47 | + increment = (column > 0) ? -1 : 0; | |
48 | + break; | |
49 | ||
50 | - case L'\b': | |
51 | - increment = (column > 0) ? -1 : 0; | |
52 | - break; | |
53 | + case L'\r': | |
54 | + increment = -1 * column; | |
55 | + break; | |
56 | ||
57 | - case L'\r': | |
58 | - increment = -1 * column; | |
59 | - break; | |
60 | + case L'\t': | |
61 | + increment = 8 - column % 8; | |
62 | + break; | |
63 | ||
64 | - case L'\t': | |
65 | - increment = 8 - column % 8; | |
66 | - break; | |
67 | - | |
68 | - default: | |
69 | - increment = wcwidth (wc); | |
70 | - increment = (increment < 0) ? 0 : increment; | |
71 | - } | |
72 | + default: | |
73 | + increment = wcwidth (wc); | |
74 | + increment = (increment < 0) ? 0 : increment; | |
75 | } | |
76 | } | |
77 | ||
78 | -- | |
79 | 2.7.4 | |
80 |