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