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