;; Keywords: crypto
;; Created: 2000-04-15
-;; $Id: gpg.el,v 1.5 2000/12/01 04:13:45 zsh Exp $
+;; $Id: gpg.el,v 1.10 2001/01/14 04:44:54 zsh Exp $
;; This file is NOT (yet?) part of GNU Emacs.
(eval-when-compile
(require 'cl))
-(defalias 'gpg-point-at-eol
- (if (fboundp 'point-at-eol)
- 'point-at-eol
- 'line-end-position))
+(eval-and-compile
+ (defalias 'gpg-point-at-eol
+ (if (fboundp 'point-at-eol)
+ 'point-at-eol
+ 'line-end-position)))
;;;; Customization:
;;; Customization: Widgets:
-(define-widget 'gpg-command-alist 'alist
- "An association list for GnuPG command names."
- :key-type '(symbol :tag "Abbreviation")
- :value-type '(string :tag "Program name")
- :convert-widget 'widget-alist-convert-widget
- :tag "Alist")
+(if (get 'alist 'widget-type)
+ (define-widget 'gpg-command-alist 'alist
+ "An association list for GnuPG command names."
+ :key-type '(symbol :tag "Abbreviation")
+ :value-type '(string :tag "Program name")
+ :convert-widget 'widget-alist-convert-widget
+ :tag "Alist")
+ (define-widget 'gpg-command-alist 'repeat
+ "An association list for GnuPG command names."
+ :args '((cons :format "%v"
+ (symbol :tag "Abbreviation")
+ (string :tag "Program name")))
+ :tag "Alist"))
(define-widget 'gpg-command-program 'choice
"Widget for entering the name of a program (mostly the GnuPG binary)."
:type 'gpg-command-alist
:group 'gpg-options)
+(defcustom gpg-command-all-arglist
+ nil
+ "List of arguments to add to all GPG commands."
+ :tag "All command args"
+ :group 'gpg-options)
+
(defcustom gpg-command-flag-textmode "--textmode"
"The flag to indicate canonical text mode to GnuPG."
:tag "Text mode flag"
SUBSTITIONS is a list of (SYMBOL . SEXP) pairs, where SEXP is either a
string (which is inserted literally), a list of strings (which are
inserted as well), or nil, which means to insert nothing."
- (let (arglist)
+ (let ((arglist (copy-sequence gpg-command-all-arglist)))
(while template
(let* ((templ (pop template))
(repl (assoc templ substitutions))
;; make-temp-name doesn't create the file, and an ordinary
;; write-file operation is prone to nasty symlink attacks if the
;; temporary file resides in a world-writable directory.
- (unless (eq (file-modes gpg-temp-directory) 448) ; mode 0700
- (error "Directory for temporary files must have mode 0700."))
+ (unless (or (memq system-type '(windows-nt cygwin32 win32 w32 mswindows))
+ (eq (file-modes gpg-temp-directory) 448)) ; mode 0700
+ (error "Directory for temporary files (%s) must have mode 0700." gpg-temp-directory))
(setq name (make-temp-name name))
(let ((mode (default-file-modes)))
(unwind-protect