Change INTERNALDATE FETCH response to return the time as universal
authorChris Hanson <org/chris-hanson/cph>
Tue, 16 May 2000 03:58:40 +0000 (03:58 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 16 May 2000 03:58:40 +0000 (03:58 +0000)
time.

v7/src/imail/imap-response.scm
v7/src/imail/imap-response.txt

index c8bdf31bf670c587f955421544dc650140971d7b..75a3f242f4cc7a27c1b0ad48714c32073a59bc7d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;; $Id: imap-response.scm,v 1.14 2000/05/16 03:33:49 cph Exp $
+;;; $Id: imap-response.scm,v 1.15 2000/05/16 03:58:31 cph Exp $
 ;;;
 ;;; Copyright (c) 2000 Massachusetts Institute of Technology
 ;;;
                 (read-flags-response port))
                ((INTERNALDATE)
                 (discard-known-char #\space port)
-                (read-quoted port))
+                (parse-date-time (read-quoted port)))
                ((RFC822 RFC822.HEADER RFC822.TEXT)
                 (discard-known-char #\space port)
                 (read-nstring port))
   (let ((pv (parse-string imap:parse:section string)))
     (and pv
         (parser-token pv 'SECTION))))
+
+(define (parse-date-time string)
+  (decoded-time->universal-time
+   (make-decoded-time
+    (string->number (substring string 18 20))
+    (string->number (substring string 15 17))
+    (string->number (substring string 12 14))
+    (string->number (string-trim-left (substring string 0 2)))
+    (string->month (substring string 3 6))
+    (string->number (substring string 7 11))
+    (string->time-zone (string-tail string 21)))))
 \f
 (define (read-generic port)
   (let ((char (peek-char-no-eof port)))
index 78c093c33846414425bd43182e7c67ecbe90e507..914647cd6e458b3e06a37f2ab12c15ccc745befb 100644 (file)
@@ -1,4 +1,4 @@
-$Id: imap-response.txt,v 1.2 2000/05/08 13:56:40 cph Exp $
+$Id: imap-response.txt,v 1.3 2000/05/16 03:58:40 cph Exp $
 
 Notes on IMAP server responses
 
@@ -254,7 +254,7 @@ Notes on IMAP server responses
 <fetch-response>
        = (ENVELOPE <envelope>)
        | (FLAGS (<symbol>*))
-       | (INTERNALDATE <string>)
+       | (INTERNALDATE <nonnegative-exact-integer>)
        | (RFC822 <string-or-false>)
        | (RFC822.HEADER <string-or-false>)
        | (RFC822.TEXT <string-or-false>)