Better checks for EOF

This commit is contained in:
Jaidyn Ann 2024-02-13 17:59:20 -06:00
parent 1bf429571f
commit 076fe6f24b

View File

@ -253,7 +253,7 @@
(and first-element?
(string-contains line "BEGIN")
(string-contains line "VCARD")))
(parse-vcard-line (read-folded-line))]
(parse-vcard-line line)]
;; If were still making sure the file is vCard, and the first non-blank
;; line *isnt* a BEGIN:VCARD line, then the file probably isnt a vCard.
[#t
@ -268,10 +268,12 @@
;; Reader-thunk. Read a “logical” folded-line, where a line beginning with a
;; space is a continuation of the previous line — like with vcards.
(define (read-folded-line #!optional limit)
(let [(line (read-line (current-input-port) limit))]
(if (or (eq? (peek-char) #\space)
(eq? (peek-char) #\tab))
(string-concatenate
(list line
(string-drop (read-folded-line) 1)))
line))))
(if (not (eof-object? (peek-char)))
(let [(line (read-line (current-input-port) limit))]
(if (or (eq? (peek-char) #\space)
(eq? (peek-char) #\tab))
(string-concatenate
(list line
(string-drop (read-folded-line) 1)))
line))
"")))