[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nnimap 0.91 -> 0.92 patches



Index: nnimap/ChangeLog
diff -c nnimap/ChangeLog:1.168 nnimap/ChangeLog:1.169
*** nnimap/ChangeLog:1.168	Thu Jan  7 13:26:01 1999
--- nnimap/ChangeLog	Thu Jan  7 16:18:25 1999
***************
*** 1,3 ****
--- 1,17 ----
+ 1999-01-08  Simon Josefsson  <jas@pdc.kth.se>
+ 
+ 	* nnimap 0.92 released.
+ 
+ 	* imap.el (imap-parse-response-data-cb): Removed.
+ 	(imap-parse-response-data-*): Removed or renamed to imap-parse-*.
+ 	(imap-parse-*): Clean up.
+ 
+ 	* imap.el (imap-mailbox-create): New function.
+ 	(imap-message-copy): New function.
+ 
+ 	* imap.el (imap-error): New variable.
+ 	(imap-ok-p): Set it.
+ 
  1999-01-07 22:23:35  Simon Josefsson  <jas@pdc.kth.se>
  
  	* nnimap 0.91 released.
Index: nnimap/imap.el
diff -c nnimap/imap.el:1.105 nnimap/imap.el:1.106
*** nnimap/imap.el:1.105	Thu Jan  7 13:23:00 1999
--- nnimap/imap.el	Thu Jan  7 16:17:35 1999
***************
*** 153,158 ****
--- 153,161 ----
  (defvar imap-default-user (user-login-name)
    "Default username to use.")
  
+ (defvar imap-error nil
+   "Error codes from the last command.")
+ 
  ;; Various variables.
  
  (defvar imap-fetch-data-hook nil
***************
*** 217,241 ****
  				 imap-process
  				 imap-mailbox-data))
  
- (defconst imap-parse-response-data-cb
-   '((OK         . imap-response-data-text-code)
-     (NO         . imap-response-data-text-code)
-     (BAD        . imap-response-data-text-code)
-     (BYE        . imap-response-data-bye)
-     (EXISTS     . imap-response-data-exists)
-     (EXPUNGE    . imap-response-data-expunge)
-     (RECENT     . imap-response-data-recent)
-     (CAPABILITY . imap-response-data-capability)
-     (LIST       . imap-response-data-list)
-     (LSUB       . imap-response-data-list)
-     (FLAGS      . imap-response-data-flags)
-     (FETCH      . imap-response-data-fetch)
-     (SEARCH     . imap-response-data-search)
-     (STATUS     . imap-response-data-status)
-     (ACL        . imap-response-data-acl)
-     (NAMESPACE  . imap-response-data-namespace)))
- 
- 
  ;; Internal variables.
  
  (defvar imap-stream nil)
--- 220,225 ----
***************
*** 326,331 ****
--- 310,321 ----
  		 (autoload 'ange-ftp-read-passwd "ange-ftp"))
  	       'ange-ftp-read-passwd) prompt)))
  
+ (defsubst imap-ok-p (status)
+   (if (eq status 'OK)
+       t
+     (setq imap-error status)
+     nil))
+ 
  
  ;; Server functions; stream stuff:
  
***************
*** 656,664 ****
  (defun imap-send-command-wait (command &optional buffer)
    (imap-wait-for-tag (imap-send-command command buffer) buffer))
  
- (defun imap-ok-p (status)
-   (eq status 'OK))
- 
  
  ;; Mailbox functions:
  
--- 646,651 ----
***************
*** 726,731 ****
--- 713,724 ----
  	    imap-state 'auth)
        t)))
  
+ (defun imap-mailbox-create (mailbox &optional buffer)
+   "Create MAILBOX on server in BUFFER, if nil current buffer is assumed."
+   (with-current-buffer (or buffer (current-buffer))
+     (imap-ok-p 
+      (imap-send-command-wait (list "CREATE " mailbox)))))
+ 
  (defun imap-mailbox-lsub (&optional buffer reference)
    "Clear the mailbox data and fill it with subscribed mailboxes on
  server in BUFFER. REFERENCE is the implementation-specific string that
***************
*** 871,876 ****
--- 864,883 ----
  		  (concat "UID STORE " articles
  			  " +FLAGS" (if silent ".SILENT") " (" flags ")"))))))
  
+ (defun imap-message-copy (articles mailbox &optional buffer dont-create)
+   "Copy ARTICLES to MAILBOX on server in BUFFER, creating mailbox if
+ it doesn't exist. If dont-create is non-nil, it will not create a
+ mailbox."
+   (when articles
+     (with-current-buffer (or buffer (current-buffer))
+       (let ((cmd (list "UID COPY " articles " " mailbox))
+ 	    (imap-current-target-mailbox mailbox))
+ 	(if (imap-ok-p (imap-send-command-wait cmd))
+ 	    t
+ 	  (when (and (not dont-create) (imap-mailbox-get 'trycreate mailbox))
+ 	    (imap-mailbox-create mailbox)
+ 	    (imap-ok-p (imap-send-command-wait cmd))))))))
+ 
  (defun imap-message-append (mailbox article &optional buffer flags date-time)
    "Append ARTICLE buffer to MAILBOX on server in BUFFER. FLAGS and
  DATE-TIME is currently not used."
***************
*** 993,999 ****
  ;;
  ;;   TEXT-CHAR       = <any CHAR except CR and LF>
  
- 
  (defsubst imap-parse-string ()
    (cond ((eq (char-after) ?\")
  	 (read (current-buffer)))
--- 1000,1005 ----
***************
*** 1073,1126 ****
  ;;                       ; Server closes connection immediately
  ;;
  ;;   response-tagged = tag SP resp-cond-state CRLF
  
  (defun imap-parse-response ()
    "Parse a IMAP command response."
!   (let ((token (read (current-buffer))))
!     (cond ((eq token '*)
! 	   (let* ((response (read (current-buffer)))
! 		  (func (cdr (assq response imap-parse-response-data-cb))))
! 	     (goto-char (1+ (point)))
! 	     (when (integerp response)
! 	       (setq func (cdr (assq (read (current-buffer))
! 				     imap-parse-response-data-cb)))
! 	       (goto-char (1+ (point))))
! 	     (if func
! 		 (funcall func response)
! 	       (message "Unknown untagged response: %s" response))))
! 	  ((integerp token)
! 	   (let ((status (read (current-buffer))))
! 	     (cond ((eq status 'OK)
! 		    (setq imap-reached-tag (max imap-reached-tag token)))
! 		   ((eq status 'NO)
! 		    (setq imap-reached-tag (max imap-reached-tag token))
! 		    (let (code text)
! 		      (forward-char)
! 		      (when (eq (char-after) ?\[)
! 			(setq code (buffer-substring (point)
! 						     (search-forward "]")))
! 			(forward-char))
! 		      (setq text (buffer-substring (point) (point-max)))
! 		      (push (list token status code text) imap-failed-tags)))
! 		   ((eq status 'BAD)
! 		    (setq imap-reached-tag (max imap-reached-tag token))
! 		    (let (code text)
! 		      (forward-char)
! 		      (when (eq (char-after) ?\[)
! 			(setq code (buffer-substring (point)
! 						     (search-forward "]")))
! 			(forward-char))
! 		      (setq text (buffer-substring (point) (point-max)))
! 		      (push (list token status code text) imap-failed-tags)
! 		      (message "Internal error, tag %s status %s code %s text %s"
! 			       token status code text)))
! 		   (t
! 		    (message "Garbage after tag: %s" (buffer-string))))))
! 	  ((eq token '+)
! 	   (imap-parse-continue-req))
! 	  (t
! 	   (message "Garbage: %s" (buffer-string))))))
  
  ;;   resp-text-code  = "ALERT" /
  ;;                     "BADCHARSET [SP "(" astring *(SP astring) ")" ] /
  ;;                     "NEWNAME" SP string SP string / 
--- 1079,1175 ----
  ;;                       ; Server closes connection immediately
  ;;
  ;;   response-tagged = tag SP resp-cond-state CRLF
+ ;;
+ ;;   resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text
+ ;;                       ; Status condition
+ ;;
+ ;;   resp-cond-bye   = "BYE" SP resp-text
+ ;;
+ ;;   mailbox-data    =  "FLAGS" SP flag-list /
+ ;;  		        "LIST" SP mailbox-list /
+ ;;                      "LSUB" SP mailbox-list /
+ ;;		        "SEARCH" *(SP nz-number) /
+ ;;                      "STATUS" SP mailbox SP "("
+ ;;	                      [status-att SP number *(SP status-att SP number)] ")" /
+ ;;                      number SP "EXISTS" /
+ ;;		        number SP "RECENT"
+ ;;
+ ;;   message-data    = nz-number SP ("EXPUNGE" / ("FETCH" SP msg-att))
+ ;;
+ ;;   capability-data = "CAPABILITY" *(SP capability) SP "IMAP4rev1"
+ ;;                     *(SP capability)
+ ;;                       ; IMAP4rev1 servers which offer RFC 1730
+ ;;                       ; compatibility MUST list "IMAP4" as the first
+ ;;                       ; capability.
  
  (defun imap-parse-response ()
    "Parse a IMAP command response."
!   (let (token)
!     (case (setq token (read (current-buffer)))
!       (+ (imap-parse-continue-req))
!       (* (case (prog1 (setq token (read (current-buffer)))
! 		 (or (eobp) (forward-char)))
! 	   (OK         (imap-parse-resp-text))
! 	   (NO         (imap-parse-resp-text))
! 	   (BAD        (imap-parse-resp-text))
! 	   (BYE        (imap-parse-resp-text))
! 	   (FLAGS      (imap-mailbox-put 'flags (imap-parse-flag-list)))
! 	   (LIST       (imap-parse-data-list 'list))
! 	   (LSUB       (imap-parse-data-list 'lsub))
! 	   (SEARCH     (imap-mailbox-put 
! 			'search 
! 			(read (concat "(" (buffer-substring (point) (point-max)) ")"))))
! 	   (STATUS     (imap-parse-status))
! 	   (CAPABILITY (setq imap-capability 
! 			     (read (concat "(" (buffer-substring (point) (point-max))
! 					   ")"))))
! 	   (ACL        (imap-parse-acl))
! 	   (t       (case (prog1 (read (current-buffer))
! 			    (or (eobp) (forward-char)))
! 		      (EXISTS  (imap-mailbox-put 'exists token))
! 		      (RECENT  (imap-mailbox-put 'recent token))
! 		      (EXPUNGE t)
! 		      (FETCH   (imap-parse-fetch token))
! 		      (t       (message "Garbage: %s" (buffer-string)))))))
!       (t (let (status)
! 	   (case (prog1 (setq status (read (current-buffer)))
! 		   (or (eobp) (forward-char)))
! 	   (OK  (progn
! 		  (setq imap-reached-tag (max imap-reached-tag token))
! 		  (imap-parse-resp-text)))
! 	   (NO  (progn
! 		  (setq imap-reached-tag (max imap-reached-tag token))
! 		  (save-excursion
! 		    (imap-parse-resp-text))
! 		  (let (code text)
! 		    (when (eq (char-after) ?\[)
! 		      (setq code (buffer-substring (point) (search-forward "]")))
! 		      (or (eobp) (forward-char)))
! 		    (setq text (buffer-substring (point) (point-max)))
! 		    (push (list token status code text) imap-failed-tags))))
! 	   (BAD (progn
! 		  (setq imap-reached-tag (max imap-reached-tag token))
! 		  (save-excursion
! 		    (imap-parse-resp-text))
! 		  (let (code text)
! 		    (when (eq (char-after) ?\[)
! 		      (setq code (buffer-substring (point) (search-forward "]")))
! 		      (or (eobp) (forward-char)))
! 		    (setq text (buffer-substring (point) (point-max)))
! 		    (push (list token status code text) imap-failed-tags)
! 		    (message "Internal error, tag %s status %s code %s text %s"
! 			     token status code text))))
! 	   (t   (message "Garbage after tag: %s" (buffer-string)))))))))
! 
! ;;   resp-text       = ["[" resp-text-code "]" SP] text
! ;;
! ;;   text            = 1*TEXT-CHAR
! ;;
! ;;   TEXT-CHAR       = <any CHAR except CR and LF>
  
+ (defun imap-parse-resp-text ()
+   (imap-parse-resp-text-code))
+ 
  ;;   resp-text-code  = "ALERT" /
  ;;                     "BADCHARSET [SP "(" astring *(SP astring) ")" ] /
  ;;                     "NEWNAME" SP string SP string / 
***************
*** 1155,1163 ****
  ;;
  ;;   resp-text-atom  = 1*<any ATOM-CHAR except "]">
  
! (defun imap-response-data-text-code (response)
    (when (eq (char-after) ?\[)
!     (forward-char)
      (cond ((search-forward "PERMANENTFLAGS " nil t)
  	   (imap-mailbox-put 'permanentflags (imap-parse-flag-list)))
  	  ((search-forward "UIDNEXT " nil t)
--- 1204,1212 ----
  ;;
  ;;   resp-text-atom  = 1*<any ATOM-CHAR except "]">
  
! (defun imap-parse-resp-text-code ()
    (when (eq (char-after) ?\[)
!     (or (eobp) (forward-char))
      (cond ((search-forward "PERMANENTFLAGS " nil t)
  	   (imap-mailbox-put 'permanentflags (imap-parse-flag-list)))
  	  ((search-forward "UIDNEXT " nil t)
***************
*** 1173,1183 ****
  	  ((search-forward "NEWNAME " nil t)
  	   (let (oldname newname)
  	     (setq oldname (imap-parse-string))
! 	     (forward-char)
  	     (setq newname (imap-parse-string))
  	     (imap-mailbox-put 'newname newname oldname)))
  	  ((search-forward "TRYCREATE" nil t)
! 	   (imap-mailbox-put 'trycreate t))
  	  ((looking-at "APPENDUID \\([0-9]+\\) \\([0-9]+\\)")
  	   (imap-mailbox-put 'appenduid 
  			     (list (match-string 1)
--- 1222,1232 ----
  	  ((search-forward "NEWNAME " nil t)
  	   (let (oldname newname)
  	     (setq oldname (imap-parse-string))
! 	     (or (eobp) (forward-char))
  	     (setq newname (imap-parse-string))
  	     (imap-mailbox-put 'newname newname oldname)))
  	  ((search-forward "TRYCREATE" nil t)
! 	   (imap-mailbox-put 'trycreate t imap-current-target-mailbox))
  	  ((looking-at "APPENDUID \\([0-9]+\\) \\([0-9]+\\)")
  	   (imap-mailbox-put 'appenduid 
  			     (list (match-string 1)
***************
*** 1187,1244 ****
  	   (message "Imap server %s information: %s" imap-server
  		    (buffer-substring (point) (point-max)))))))
  
- ;;   response-data   = "*" SP (resp-cond-state / resp-cond-bye /
- ;;                     mailbox-data / message-data / capability-data) CRLF
- ;;
- ;;   resp-cond-bye   = "BYE" SP resp-text
- 
- (defun imap-response-data-bye (response)
-   t)
- 
- ;;   response-data   = "*" SP (resp-cond-state / resp-cond-bye /
- ;;                     mailbox-data / message-data / capability-data) CRLF
- ;;
- ;;   resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text
- ;;                       ; Status condition
- ;;
- ;;   resp-cond-bye   = "BYE" SP resp-text
- ;;
- ;;   mailbox-data    =  "FLAGS" SP flag-list /
- ;;		        "LIST" SP mailbox-list /
- ;;                      "LSUB" SP mailbox-list /
- ;;		        "SEARCH" *(SP nz-number) /
- ;;                      "STATUS" SP mailbox SP "("
- ;;	                      [status-att SP number 
- ;;                            *(SP status-att SP number)] ")" /
- ;;                      number SP "EXISTS" /
- ;;		        number SP "RECENT"
- ;;
- ;;   message-data    = nz-number SP ("EXPUNGE" / ("FETCH" SP msg-att))
- ;;
- ;;   capability      = "AUTH=" auth-type / atom
- ;;                       ; New capabilities MUST begin with "X" or be
- ;;                       ; registered with IANA as standard or
- ;;                       ; standards-track
- ;;
- ;;   capability-data = "CAPABILITY" *(SP capability) SP "IMAP4rev1"
- ;;                     *(SP capability)
- ;;                       ; IMAP4rev1 servers which offer RFC 1730
- ;;                       ; compatibility MUST list "IMAP4" as the first
- ;;                       ; capability.
- 
- (defun imap-response-data-exists (response)
-   (imap-mailbox-put 'exists response))
- 
- (defun imap-response-data-expunge (response)
-   t)
- 
- (defun imap-response-data-recent (response)
-   (imap-mailbox-put 'recent response))
- 
- (defun imap-response-data-capability (response)
-   (setq imap-capability 
- 	(read (concat "(" (buffer-substring (point) (point-max)) ")"))))
- 
  ;;   mailbox-list    = "(" [mbx-list-flags] ")" SP
  ;;                      (DQUOTE QUOTED-CHAR DQUOTE / nil) SP mailbox
  ;;
--- 1236,1241 ----
***************
*** 1257,1263 ****
  ;;
  ;;   quoted-specials = DQUOTE / "\"
  
! (defun imap-response-data-list (type)
    (let (flags delimiter mailbox)
      (setq flags (imap-parse-flag-list))
      (when (looking-at " NIL\\| \"\\(.\\)\"")
--- 1254,1260 ----
  ;;
  ;;   quoted-specials = DQUOTE / "\"
  
! (defun imap-parse-data-list (type)
    (let (flags delimiter mailbox)
      (setq flags (imap-parse-flag-list))
      (when (looking-at " NIL\\| \"\\(.\\)\"")
***************
*** 1268,1276 ****
  	(imap-mailbox-put 'list-flags flags mailbox)
  	(imap-mailbox-put 'delimiter delimiter mailbox)))))
  
- (defun imap-response-data-flags (response)
-   (imap-mailbox-put 'flags (imap-parse-flag-list)))
- 
  ;;   msg-att         = "(" (msg-att-dynamic / msg-att-static)
  ;;                      *(SP (msg-att-dynamic / msg-att-static)) ")"
  ;;
--- 1265,1270 ----
***************
*** 1321,1378 ****
  ;;
  ;;   uniqueid        = nz-number
  ;;                       ; Strictly ascending
- 
- (defun imap-response-data-fetch (response)
-   (let (uid flags envelope internaldate rfc822 rfc822header rfc822text 
- 	    rfc822size body bodystructure)
-     (assert (eq (char-after) ?\())
-     (while (not (eq (char-after) ?\)))
-       (forward-char)
-       (let ((token (read (current-buffer))))
- 	(forward-char)
- 	(cond ((eq token 'UID)
- 	       (setq uid (read (current-buffer))))
- 	      ((eq token 'FLAGS)
- 	       (setq flags (imap-parse-flag-list)))
- 	      ((eq token 'ENVELOPE)
- 	       (setq envelope (imap-parse-envelope)))
- 	      ((eq token 'INTERNALDATE)
- 	       (setq internaldate (imap-parse-string)))
- 	      ((eq token 'RFC822)
- 	       (setq rfc822 (imap-parse-nstring)))
- 	      ((eq token 'RFC822.HEADER)
- 	       (setq rfc822header (imap-parse-nstring)))
- 	      ((eq token 'RFC822.TEXT)
- 	       (setq rfc822text (imap-parse-nstring)))
- 	      ((eq token 'RFC822.SIZE)
- 	       (setq rfc822size (read (current-buffer))))
- 	      ((eq token 'BODY)
- 	       (setq body (imap-parse-body)))
- 	      ((eq token 'BODYSTRUCTURE)
- 	       (setq bodystructure (imap-parse-body))))))
-     (if (not uid)
- 	(message "Skipping UID-less fetch response (broken server?)...")
-       (setq imap-current-message uid)
-       (imap-message-put uid 'UID uid)
-       (and flags (imap-message-put uid 'FLAGS flags))
-       (and envelope (imap-message-put uid 'ENVELOPE envelope))
-       (and internaldate (imap-message-put uid 'INTERNALDATE internaldate))
-       (and rfc822 (imap-message-put uid 'RFC822 rfc822))
-       (and rfc822header (imap-message-put uid 'RFC822.HEADER rfc822header))
-       (and rfc822text (imap-message-put uid 'RFC822.TEXT rfc822text))
-       (and rfc822size (imap-message-put uid 'RFC822.SIZE rfc822size))
-       (and body (imap-message-put uid 'BODY body))
-       (and bodystructure (imap-message-put uid 'BODYSTRUCTURE bodystructure))
-       (run-hooks 'imap-fetch-data-hook))))
- 
- ;;   mailbox-data    =  ...
- ;;		        "SEARCH" *(SP nz-number) /
- ;;                      ...
  
! (defun imap-response-data-search (response)
!   (imap-mailbox-put 
!    'search 
!    (read (concat "(" (buffer-substring (point) (point-max)) ")"))))
  
  ;;   mailbox-data    =  ...
  ;;                      "STATUS" SP mailbox SP "("
--- 1315,1363 ----
  ;;
  ;;   uniqueid        = nz-number
  ;;                       ; Strictly ascending
  
! (defun imap-parse-fetch (response)
!   (when (eq (char-after) ?\()
!     (let (uid flags envelope internaldate rfc822 rfc822header rfc822text 
! 	      rfc822size body bodystructure)
!       (while (not (eq (char-after) ?\)))
! 	(or (eobp) (forward-char))
! 	(let ((token (read (current-buffer))))
! 	  (or (eobp) (forward-char))
! 	  (cond ((eq token 'UID)
! 		 (setq uid (read (current-buffer))))
! 		((eq token 'FLAGS)
! 		 (setq flags (imap-parse-flag-list)))
! 		((eq token 'ENVELOPE)
! 		 (setq envelope (imap-parse-envelope)))
! 		((eq token 'INTERNALDATE)
! 		 (setq internaldate (imap-parse-string)))
! 		((eq token 'RFC822)
! 		 (setq rfc822 (imap-parse-nstring)))
! 		((eq token 'RFC822.HEADER)
! 		 (setq rfc822header (imap-parse-nstring)))
! 		((eq token 'RFC822.TEXT)
! 		 (setq rfc822text (imap-parse-nstring)))
! 		((eq token 'RFC822.SIZE)
! 		 (setq rfc822size (read (current-buffer))))
! 		((eq token 'BODY)
! 		 (setq body (imap-parse-body)))
! 		((eq token 'BODYSTRUCTURE)
! 		 (setq bodystructure (imap-parse-body))))))
!       (if (not uid)
! 	  (message "Skipping UID-less fetch response (broken server?)...")
! 	(setq imap-current-message uid)
! 	(imap-message-put uid 'UID uid)
! 	(and flags (imap-message-put uid 'FLAGS flags))
! 	(and envelope (imap-message-put uid 'ENVELOPE envelope))
! 	(and internaldate (imap-message-put uid 'INTERNALDATE internaldate))
! 	(and rfc822 (imap-message-put uid 'RFC822 rfc822))
! 	(and rfc822header (imap-message-put uid 'RFC822.HEADER rfc822header))
! 	(and rfc822text (imap-message-put uid 'RFC822.TEXT rfc822text))
! 	(and rfc822size (imap-message-put uid 'RFC822.SIZE rfc822size))
! 	(and body (imap-message-put uid 'BODY body))
! 	(and bodystructure (imap-message-put uid 'BODYSTRUCTURE bodystructure))
! 	(run-hooks 'imap-fetch-data-hook)))))
  
  ;;   mailbox-data    =  ...
  ;;                      "STATUS" SP mailbox SP "("
***************
*** 1383,1389 ****
  ;;   status-att      = "MESSAGES" / "RECENT" / "UIDNEXT" / "UIDVALIDITY" /
  ;;                     "UNSEEN"
  
! (defun imap-response-data-status (response)
    (let ((mailbox (imap-parse-mailbox)))
      (when (and mailbox (search-forward "(" nil t))
        (while (not (eq (char-after) ?\)))
--- 1368,1374 ----
  ;;   status-att      = "MESSAGES" / "RECENT" / "UIDNEXT" / "UIDVALIDITY" /
  ;;                     "UNSEEN"
  
! (defun imap-parse-status ()
    (let ((mailbox (imap-parse-mailbox)))
      (when (and mailbox (search-forward "(" nil t))
        (while (not (eq (char-after) ?\)))
***************
*** 1411,1417 ****
  ;;
  ;;   rights          ::= astring
  
! (defun imap-response-data-acl (response)
    (let ((mailbox (imap-parse-mailbox)))
      (when (eq (char-after) ?\ )
        (let (acl)
--- 1396,1402 ----
  ;;
  ;;   rights          ::= astring
  
! (defun imap-parse-acl ()
    (let ((mailbox (imap-parse-mailbox)))
      (when (eq (char-after) ?\ )
        (let (acl)
***************
*** 1548,1553 ****
--- 1533,1540 ----
    (buffer-disable-undo (get-buffer-create imap-debug))
    (mapc (lambda (f) (trace-function-background f imap-debug)) 
          '(
+ imap-encode-string
+ imap-read-passwd
  imap-kerberos4s-p
  imap-kerberos4-open
  imap-ssl-p
***************
*** 1572,1595 ****
  imap-capability
  imap-namespace
  imap-send-command-wait
- imap-ok-p
  imap-mailbox-put
  imap-mailbox-get
  imap-mailbox-map
  imap-mailbox-select
  imap-mailbox-unselect
  imap-mailbox-close
  imap-mailbox-lsub
  imap-mailbox-list
  imap-mailbox-subscribe
  imap-mailbox-unsubscribe
  imap-message-put
  imap-message-get
  imap-message-map
! imap-message-search
  imap-message-flags-set
  imap-message-flags-del
  imap-message-flags-add
  imap-send-command
  imap-wait-for-tag
  imap-sentinel
--- 1559,1588 ----
  imap-capability
  imap-namespace
  imap-send-command-wait
  imap-mailbox-put
  imap-mailbox-get
  imap-mailbox-map
  imap-mailbox-select
  imap-mailbox-unselect
  imap-mailbox-close
+ imap-mailbox-create
  imap-mailbox-lsub
  imap-mailbox-list
  imap-mailbox-subscribe
  imap-mailbox-unsubscribe
+ imap-mailbox-status
+ imap-mailbox-acl-get
+ imap-mailbox-acl-set
+ imap-mailbox-acl-delete
  imap-message-put
  imap-message-get
  imap-message-map
! imap-search
  imap-message-flags-set
  imap-message-flags-del
  imap-message-flags-add
+ imap-message-copy
+ imap-message-append
  imap-send-command
  imap-wait-for-tag
  imap-sentinel
***************
*** 1597,1621 ****
  imap-arrival-filter
  imap-parse-greeting
  imap-parse-response
! imap-response-data-text-code
! imap-response-data-bye
! imap-response-data-exists
! imap-response-data-expunge
! imap-response-data-recent
! imap-response-data-capability
! imap-response-data-list
! imap-response-data-flags
! imap-response-data-fetch
! imap-response-data-search
! imap-response-data-status
  imap-parse-flag-list
  imap-parse-envelope
  imap-parse-body
- imap-parse-astring
- imap-parse-nstring
- imap-parse-string
- imap-parse-literal
- imap-read-passwd
  	  )))
  	
  (provide 'imap)
--- 1590,1604 ----
  imap-arrival-filter
  imap-parse-greeting
  imap-parse-response
! imap-parse-resp-text
! imap-parse-resp-text-code
! imap-parse-data-list
! imap-parse-fetch
! imap-parse-status
! imap-parse-acl
  imap-parse-flag-list
  imap-parse-envelope
  imap-parse-body
  	  )))
  	
  (provide 'imap)
Index: nnimap/nnimap.el
diff -c nnimap/nnimap.el:1.124 nnimap/nnimap.el:1.125
*** nnimap/nnimap.el:1.124	Thu Jan  7 13:26:12 1999
--- nnimap/nnimap.el	Thu Jan  7 16:18:01 1999
***************
*** 100,106 ****
  
  (nnoo-declare nnimap) ; we derive from no one
  
! (defconst nnimap-version "nnimap 0.91")
  
  ;; Various server variables.
  
--- 100,106 ----
  
  (nnoo-declare nnimap) ; we derive from no one
  
! (defconst nnimap-version "nnimap 0.92")
  
  ;; Various server variables.