Merge chao-gnus-6_12_5.
[elisp/gnus.git-] / lisp / pop3-fma.el
index 293efe6..e95c147 100644 (file)
@@ -3,7 +3,7 @@
 ;;                                                           Yasuo Okabe
 ;; Author: Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
 ;;         Yasuo OKABE <okabe@kuis.kyoto-u.ac.jp>
-;; Version: 1.16
+;; Version: 1.11
 ;; Keywords: mail , gnus , pop3
 ;;
 ;; SPECIAL THANKS
     (` (defvar (, symbol) (, value) (, doc))))
   )
 
+(unless (and (fboundp 'pop3-fma-encode-string)
+            (fboundp 'pop3-fma-decode-string))
+  (require 'mel-b)
+  (fset 'pop3-fma-encode-string 'base64-encode-string)
+  (fset 'pop3-fma-decode-string 'base64-decode-string))
+
 (defgroup pop3-fma nil
   "Multile POP3 account utility for Gnus."
   :prefix "pop3-fma-"
   :group 'mail
   :group 'news)
 
-(defconst pop3-fma-version-number "1.16")
+(defconst pop3-fma-version-number "1.11")
 (defconst pop3-fma-codename
+;;  "Feel the wind"            ; 0.10
+;;  "My home town"             ; 0.11
+;;  "On the road"              ; 0.12
+;;  "Rock'n Roll city"         ; 0.13
+;;  "Money"                    ; 0.20
+;;  "Still 19"                 ; 0.21
 ;;  "J boy"                    ; 1.00
 ;;  "Blood line"               ; 1.10
-;;  "Star ring"                        ; 1.11
-;;  "Goodbye Game"             ; 1.12
-;;  "Love is Gamble"           ; 1.13
-;;  "Lonely"                   ; 1.14
-  "Feel the wind"              ; 1.16
+  "Star ring"                  ; 0.xx
+;;  "Goodbye Game"             ; 0.xx
   )
 (defconst pop3-fma-version (format "Multiple POP3 account utiliy for Gnus v%s - \"%s\""
                                       pop3-fma-version-number
@@ -128,57 +137,21 @@ Lisp means `nnmail-movemail-program' is lisp function.
   :group 'pop3-fma
   :type '(repeat (string :tag "Argument")))
 
-(defcustom pop3-fma-save-password-information nil
-  "*If non nil , save POP Server's password information.
-============== Important notice =====================
-Please take care of your password information.
-If set to t , your pop3 password is saved in pop3-fma-password in raw text.
-So , Anybody can see this information by describe-variable.
-If there is any problem , please set this variable to nil(default).
-============== Important notice ====================="
-  :group 'pop3-fma
-  :type 'boolean)
-
 ;;; Internal variables.
 (defvar pop3-fma-password nil
   "*POP3 password , user , mailhost information for Gnus.")
 
-(defvar pop3-fma-movemail-program
-  (if (eq system-type 'windows-nt)
-      "movemail.exe"
-    "movemail")
-  "*External program name your movemail.")
-
+(defvar pop3-fma-movemail-program "movemail.exe"
+  "*External program name your movemail.
+Please do not set this valiable non-nil if you do not use Meadow.")
 
 ;; Temporary variable
 (defvar hdr nil)
 (defvar passwd nil)
 (defvar str nil)
+(defvar pop3-fma-movemail-options pop3-fma-movemail-arguments)
 (defvar spool nil)
 (defvar movemail-output-buffer " *movemail-out*")
-(defvar pop3-fma-commandline-arguments nil)
-
-;;; To silence byte compiler
-(and
- (fboundp 'eval-when-compile)
- (eval-when-compile
-   (save-excursion
-     (beginning-of-defun)
-     (eval-region (point-min) (point)))
-   (let (case-fold-search)
-     (mapcar
-      (function
-       (lambda (symbol)
-        (unless (boundp symbol)
-          (make-local-variable symbol)
-          (eval (list 'setq symbol nil)))))
-      '(:group
-       :prefix :type
-       pop3-maildrop
-       pop3-mailhost
-       ))
-     (make-local-variable 'byte-compile-warnings)
-     (setq byte-compile-warnings nil))))
 
 (defun pop3-fma-init-message-hook ()
   (add-hook 'message-send-hook 'pop3-fma-message-add-header))
@@ -204,12 +177,7 @@ If there is any problem , please set this variable to nil(default).
              (pop3-mailhost
               (substring inbox (match-end (string-match "^.*@" inbox))))
              (pop3-password
-              (if pop3-fma-save-password-information
-                  (pop3-fma-read-passwd (substring inbox (match-end (string-match "^.*@" inbox))))
-                (pop3-fma-input-password
-                 (substring inbox (match-end (string-match "^.*@" inbox)))
-                 (substring inbox (match-end (string-match "^po:" inbox))
-                            (- (match-end (string-match "^.*@" inbox)) 1)))))
+              (pop3-fma-read-passwd (substring inbox (match-end (string-match "^.*@" inbox)))))
              (pop3-authentication-scheme
               (nth 1 (assoc inbox pop3-fma-spool-file-alist)))
              (pop3-fma-movemail-type (pop3-fma-get-movemail-type inbox)))
@@ -220,12 +188,12 @@ If there is any problem , please set this variable to nil(default).
                   (eq pop3-fma-movemail-type 'exe))
              (progn
                (setenv "MAILHOST" pop3-mailhost)
-               (if (and (not (memq pop3-password pop3-fma-commandline-arguments))
-                        (not (memq (concat "po:" pop3-maildrop) pop3-fma-commandline-arguments)))
+               (if (and (not (memq pop3-password pop3-fma-movemail-arguments))
+                        (not (memq (concat "po:" pop3-maildrop) pop3-fma-movemail-arguments)))
                    (progn
-                     (setq pop3-fma-commandline-arguments
-                           (append
-                            pop3-fma-movemail-arguments
+                     (setq pop3-fma-movemail-arguments nil)
+                     (setq pop3-fma-movemail-arguments
+                           (append pop3-fma-movemail-options
                                    (list
                                     (concat "po:" pop3-maildrop)
                                     crashbox
@@ -238,7 +206,7 @@ If there is any problem , please set this variable to nil(default).
                                      exec-directory
                                      pop3-fma-movemail-program)
                       nil movemail-output-buffer nil
-                      pop3-fma-commandline-arguments)
+                      pop3-fma-movemail-arguments)
                (let ((string (buffer-string)))
                  (if (> (length string) 0)
                      (progn
@@ -261,14 +229,9 @@ If there is any problem , please set this variable to nil(default).
 ;;
 (defun pop3-fma-read-passwd (mailhost)
   (setq passwd (nth 2 (assoc mailhost pop3-fma-password)))
-  passwd)
+  (pop3-fma-decode-string passwd))
 
-(defun pop3-fma-input-password (mailhost maildrop)
-  (pop3-fma-read-noecho
-   (format "POP Password for %s at %s: " maildrop mailhost) t))
-
-(setq pop3-read-passwd 'pop3-fma-read-passwd
-      nnmail-read-passwd 'pop3-fma-read-passwd)
+(setq pop3-read-passwd 'pop3-fma-read-passwd)
 ;;
 ;; Set multiple pop3 server's password
 (defun pop3-fma-store-password (passwd)
@@ -282,26 +245,24 @@ If there is any problem , please set this variable to nil(default).
                     (list
                      pop3-mailhost
                      pop3-maildrop
-                     passwd)))))
+                     (pop3-fma-encode-string passwd)))))                     
     (setcar (cdr (cdr (assoc pop3-mailhost pop3-fma-password)))
-           passwd)
-    (message "POP password registered.")
-    passwd)
+           (pop3-fma-encode-string passwd)))
+  (message "POP password registered.")
+  (pop3-fma-encode-string passwd))
 ;;
 ;;;###autoload
 (defun pop3-fma-set-pop3-password()
   (interactive)
-  (if pop3-fma-save-password-information
-      (progn
-       (mapcar
-        (lambda (x)
-          (let ((pop3-maildrop
-                 (substring (car x) (match-end (string-match "^po:" (car x)))
-                            (- (match-end (string-match "^.*@" (car x))) 1)))
-                (pop3-mailhost
-                 (substring (car x) (match-end (string-match "^.*@" (car x))))))
-            (call-interactively 'pop3-fma-store-password)))
-        pop3-fma-spool-file-alist)))
+  (mapcar
+   (lambda (x)
+     (let ((pop3-maildrop
+           (substring (car x) (match-end (string-match "^po:" (car x)))
+                      (- (match-end (string-match "^.*@" (car x))) 1)))
+          (pop3-mailhost
+           (substring (car x) (match-end (string-match "^.*@" (car x))))))
+       (call-interactively 'pop3-fma-store-password)))
+   pop3-fma-spool-file-alist)
   (setq nnmail-movemail-program 'pop3-fma-movemail)
 ;;  (setq nnmail-spool-file pop3-fma-spool-file-alist))
   (setq nnmail-spool-file (append
@@ -311,22 +272,6 @@ If there is any problem , please set this variable to nil(default).
                              (car spool))
                            pop3-fma-spool-file-alist))))
 ;;
-(defmacro pop3-fma-read-char-exclusive ()
-  (cond ((featurep 'xemacs)
-        '(let ((table (quote ((backspace . ?\C-h) (delete . ?\C-?)
-                              (left . ?\C-h))))
-               event key)
-           (while (not
-                   (and
-                    (key-press-event-p (setq event (next-command-event)))
-                    (setq key (or (event-to-character event)
-                                  (cdr (assq (event-key event) table)))))))
-           key))
-       ((fboundp 'read-char-exclusive)
-        '(read-char-exclusive))
-       (t
-        '(read-char))))
-;;
 (defun pop3-fma-read-noecho (prompt &optional stars)
   "Read a single line of text from user without echoing, and return it.
 Argument PROMPT ."
@@ -345,15 +290,15 @@ Argument PROMPT ."
        (and (> truncate 0)
             (setq msg (concat "$" (substring msg (1+ truncate))))))
       (message msg)
-      (setq c (pop3-fma-read-char-exclusive))
-      (cond ((eq ?\C-g c)
+      (setq c (read-char-exclusive))
+      (cond ((= c ?\C-g)
             (setq quit-flag t
                   done t))
-           ((memq c '(?\r ?\n ?\e))
+           ((or (= c ?\r) (= c ?\n) (= c ?\e))
             (setq done t))
-           ((eq ?\C-u c)
+           ((= c ?\C-u)
             (setq ans ""))
-           ((and (/= ?\b c) (/= ?\177 c))
+           ((and (/= c ?\b) (/= c ?\177))
             (setq ans (concat ans (char-to-string c))))
            ((> (length ans) 0)
             (setq ans (substring ans 0 -1)))))
@@ -399,4 +344,3 @@ Argument PROMPT ."
 ;;
 ;; pop3-fma.el ends here.
 
-