about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--NEWS5
-rw-r--r--README.org2
-rw-r--r--email/email.scm25
-rw-r--r--website/releases/guile-email-0.4.0.tar.lzbin0 -> 36297 bytes
-rw-r--r--website/releases/guile-email-0.4.0.tar.lz.asc11
-rw-r--r--website/releases/guile-email-0.4.1.tar.lzbin0 -> 36375 bytes
-rw-r--r--website/releases/guile-email-0.4.1.tar.lz.asc11
7 files changed, 41 insertions, 13 deletions
diff --git a/NEWS b/NEWS
index 74a0f2c..8820848 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,11 @@ Copyright © 2019, 2023, 2025 Arun Isaac <arunisaac@systemreboot.net>
 
 Please send guile-email bug reports to guile-email@systemreboot.net
 
+* Changes in 0.4.1 (since 0.4.0)
+** Noteworthy bug fixes
+*** Return ~#f~ from ~email-date~ on invalid Date fields
+Previously, the empty list was returned.
+
 * Changes in 0.4.0 (since 0.3.2)
 ** Add accessors for common header fields
 Add accessors email-from, email-to, email-cc, email-bcc,
diff --git a/README.org b/README.org
index c03d3fa..f48ef63 100644
--- a/README.org
+++ b/README.org
@@ -30,6 +30,8 @@ guile-email is used by
 
 Download release tarballs.
 
+- 2025-03-16 [[./releases/guile-email-0.4.1.tar.lz][guile-email-0.4.1.tar.lz]] [[./releases/guile-email-0.4.1.tar.lz.asc][GPG Signature]]
+- 2025-03-13 [[./releases/guile-email-0.4.0.tar.lz][guile-email-0.4.0.tar.lz]] [[./releases/guile-email-0.4.0.tar.lz.asc][GPG Signature]]
 - 2025-02-12 [[./releases/guile-email-0.3.2.tar.lz][guile-email-0.3.2.tar.lz]] [[./releases/guile-email-0.3.2.tar.lz.asc][GPG Signature]]
 - 2023-09-04 [[./releases/guile-email-0.3.1.tar.lz][guile-email-0.3.1.tar.lz]] [[./releases/guile-email-0.3.1.tar.lz.asc][GPG Signature]]
 - 2023-01-06 [[./releases/guile-email-0.3.0.tar.lz][guile-email-0.3.0.tar.lz]] [[./releases/guile-email-0.3.0.tar.lz.asc][GPG Signature]]
diff --git a/email/email.scm b/email/email.scm
index 5e1ef9d..d37b2a9 100644
--- a/email/email.scm
+++ b/email/email.scm
@@ -79,35 +79,34 @@
   (headers mime-entity-headers)
   (body mime-entity-body))
 
-(define (sanitize-field email field)
-  "Sanitize @var{field} value in @var{email} and return a new sanitized
-value."
+(define (validate-field email field)
+  "Validate @var{field} value in @var{email}. Return @code{#f} if value
+is invalid. Else, return the value unchanged."
   (let ((field-value (assq-ref (email-headers email)
                                field)))
-    (if (string? field-value)
-        ;; Invalid fields show up as strings in the parse tree.
-        ;; Discard them and return an empty list.
-        (list)
-        field-value)))
+    ;; Invalid fields show up as strings in the parse tree. Discard
+    ;; them and return #f.
+    (and (not (string? field-value))
+         field-value)))
 
 (define (email-from email)
   "Return list of From addresses in @var{email}."
-  (or (sanitize-field email 'from)
+  (or (validate-field email 'from)
       (list)))
 
 (define (email-to email)
   "Return list of To addresses in @var{email}."
-  (or (sanitize-field email 'to)
+  (or (validate-field email 'to)
       (list)))
 
 (define (email-cc email)
   "Return list of Cc addresses in @var{email}."
-  (or (sanitize-field email 'cc)
+  (or (validate-field email 'cc)
       (list)))
 
 (define (email-bcc email)
   "Return list of Bcc addresses in @var{email}."
-  (or (sanitize-field email 'bcc)
+  (or (validate-field email 'bcc)
       (list)))
 
 (define (email-subject email)
@@ -117,7 +116,7 @@ value."
 
 (define (email-date email)
   "Return Date of @var{email}."
-  (sanitize-field email 'date))
+  (validate-field email 'date))
 
 (define (email-message-id email)
   "Return Message-ID of @var{email}."
diff --git a/website/releases/guile-email-0.4.0.tar.lz b/website/releases/guile-email-0.4.0.tar.lz
new file mode 100644
index 0000000..91dee73
--- /dev/null
+++ b/website/releases/guile-email-0.4.0.tar.lz
Binary files differdiff --git a/website/releases/guile-email-0.4.0.tar.lz.asc b/website/releases/guile-email-0.4.0.tar.lz.asc
new file mode 100644
index 0000000..e7882d3
--- /dev/null
+++ b/website/releases/guile-email-0.4.0.tar.lz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAABCAAdFiEEf3MDQ/Lwnzx3v3nTLiXui2GAK7MFAmfSQCMACgkQLiXui2GA
+K7O/AAf/XzBbgHArq6CR/znZBs0LAXmR8hgFrqgD97So8gzGRG+/OvIFXWPbm+mZ
+QsZBddIyYNoUN1KCWZ6wF73bCcE3bNNyzskXOu04MbKIa/2pg6Ocb7ZZtIEcONKg
+FWnwleA7d7EKcxYhQIhIMZEak+dxylzpvHLpp0IIleWLqu5rkCtGt24hxY0xiMgS
+HXlTqF4onxpo/wtnmFPnrw5YWn3+hXPgMqvcl/uW/APi1D1S/x6u+zzHsq7FPZ87
+uWey2Xxpf/2621y53kSniEhSuDNUnF3un4MMJBZwhTdKK+tRkWQzBTh8NXvsUbXZ
+YnFuqBkr6REbtxQeNg6JSY2x0CDAew==
+=X/Ey
+-----END PGP SIGNATURE-----
diff --git a/website/releases/guile-email-0.4.1.tar.lz b/website/releases/guile-email-0.4.1.tar.lz
new file mode 100644
index 0000000..cfeda4d
--- /dev/null
+++ b/website/releases/guile-email-0.4.1.tar.lz
Binary files differdiff --git a/website/releases/guile-email-0.4.1.tar.lz.asc b/website/releases/guile-email-0.4.1.tar.lz.asc
new file mode 100644
index 0000000..3b13b2e
--- /dev/null
+++ b/website/releases/guile-email-0.4.1.tar.lz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAABCAAdFiEEf3MDQ/Lwnzx3v3nTLiXui2GAK7MFAmfWYgkACgkQLiXui2GA
+K7MkswgAlsxeCkP6jjh2MI6Dhnm/6jCEo130t32SCom87WbA/1swFa3qGQLxT+JO
+6I7ZAZtFxLolgf5YGVF60h10cPOQ/feYCz8qwPL04mY3vxiJf0lYltY/Qh2NNQny
+MODKYLMK484L6MPOnkuxM0U4967Sre4hONS5ZoL5N9bsEu5ceTeIBZXGviBR0OsF
+GED1ma5FrAKcx/GG8D81Kk5RtMT8aJ83WF/eT+S2vjH37/sFm1ddwd/cEXXQ82/k
+XHZznYhHDwd1TjPGNBV2FAlsa4uXtfFbImqBil0J/jDOoZnv91uHBR9W+cJ5fD8M
+u8OWicXbALe0TyxIRae+T/5hesYsbw==
+=yQiT
+-----END PGP SIGNATURE-----