GNU bug report logs -
#36244
[PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end.
Previous Next
Reported by: Robert Vollmert <rob <at> vllmrt.net>
Date: Sun, 16 Jun 2019 14:22:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Thu, 20 Jun 2019 13:59:13 +0200
with message-id <87sgs4jwmm.fsf <at> gnu.org>
and subject line Re: [bug#36244] [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end.
has caused the debbugs.gnu.org bug report #36244,
regarding [PATCH] guix: canonical-newline-port: Fix handling of carriage return at buffer end.
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
36244: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=36244
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
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)
[Message part 3 (message/rfc822, inline)]
Hi Robert,
Robert Vollmert <rob <at> 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’.
This bug report was last modified 5 years and 332 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.