unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#36244] [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end.
@ 2019-06-16 14:18 Robert Vollmert
  2019-06-20 11:59 ` bug#36244: " Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Robert Vollmert @ 2019-06-16 14:18 UTC (permalink / raw)
  To: 36244; +Cc: Robert Vollmert

Prior to this change the added test fails for me locally at byte
1024. It might depend on some default buffer sizes.

Fixes https://debbugs.gnu.org/cgi/bugreport.cgi?bug=35863

* tests/utils.scm ("canonical-newline-port-1024"): Add test.
* guix/utils.scm (canonical-newline-port): Correct comments on CR/LF.
Remove CR even when they're at the end of the buffer.
---
 guix/utils.scm  | 6 +++---
 tests/utils.scm | 6 ++++++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/guix/utils.scm b/guix/utils.scm
index 709cdf9353..f480c3291f 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -718,7 +718,7 @@ environment variable name like \"XDG_CONFIG_HOME\"; SUFFIX is a suffix like
 
 (define (canonical-newline-port port)
   "Return an input port that wraps PORT such that all newlines consist
-  of a single carriage return."
+  of a single linefeed."
   (define (get-position)
     (if (port-has-port-position? port) (port-position port) #f))
   (define (set-position! position)
@@ -730,11 +730,11 @@ environment variable name like \"XDG_CONFIG_HOME\"; SUFFIX is a suffix like
     (let loop ((count 0)
                (byte (get-u8 port)))
       (cond ((eof-object? byte) count)
+            ;; XXX: consume all CRs even if not followed by LF.
+            ((eqv? byte (char->integer #\return)) (loop count (get-u8 port)))
             ((= count (- n 1))
              (bytevector-u8-set! bv (+ start count) byte)
              n)
-            ;; XXX: consume all LFs even if not followed by CR.
-            ((eqv? byte (char->integer #\return)) (loop count (get-u8 port)))
             (else
              (bytevector-u8-set! bv (+ start count) byte)
              (loop (+ count 1) (get-u8 port))))))
diff --git a/tests/utils.scm b/tests/utils.scm
index 44861384ab..f78ec356bd 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -230,6 +230,12 @@ skip these tests."
                "This is a journey\r\nInto the sound\r\nA journey ...\n")))
     (get-string-all (canonical-newline-port port))))
 
+(test-equal "canonical-newline-port-1024"
+  (string-concatenate (make-list 100 "0123456789abcde\n"))
+  (let ((port (open-string-input-port
+               (string-concatenate
+                (make-list 100 "0123456789abcde\r\n")))))
+    (get-string-all (canonical-newline-port port))))
 
 (test-equal "edit-expression"
   "(display \"GNU Guix\")\n(newline)\n"
-- 
2.20.1 (Apple Git-117)

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#36244: [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end.
  2019-06-16 14:18 [bug#36244] [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end Robert Vollmert
@ 2019-06-20 11:59 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2019-06-20 11:59 UTC (permalink / raw)
  To: Robert Vollmert; +Cc: 36244-done

Hi Robert,

Robert Vollmert <rob@vllmrt.net> skribis:

> Prior to this change the added test fails for me locally at byte
> 1024. It might depend on some default buffer sizes.
>
> Fixes https://debbugs.gnu.org/cgi/bugreport.cgi?bug=35863
>
> * tests/utils.scm ("canonical-newline-port-1024"): Add test.
> * guix/utils.scm (canonical-newline-port): Correct comments on CR/LF.
> Remove CR even when they're at the end of the buffer.

Good catch.  I tweaked the commit log and applied it.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-06-20 12:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-16 14:18 [bug#36244] [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end Robert Vollmert
2019-06-20 11:59 ` bug#36244: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).