* epa-file.el (epa-file-insert-file-contents): Support partial read.
authorueno <ueno>
Thu, 1 Jun 2006 06:17:21 +0000 (06:17 +0000)
committerueno <ueno>
Thu, 1 Jun 2006 06:17:21 +0000 (06:17 +0000)
ChangeLog
epa-file.el

index 1b360b6..c91f0ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-06-01  Daiki Ueno  <ueno@unixuser.org>
+
+       * epa-file.el (epa-file-insert-file-contents): Support partial read.
+
 2006-05-30  Hiroya Murata  <lapis-lazuli@pop06.odn.ne.jp>
 
        * epa-file.el (epa-file-write-region): Encode the plain text with
index 2c123c3..3ebf50b 100644 (file)
@@ -73,8 +73,8 @@
 (defvar last-coding-system-used)
 (defun epa-file-insert-file-contents (file &optional visit beg end replace)
   (barf-if-buffer-read-only)
-  (if (or beg end)
-      (error "Can't read the file partially."))
+  (if (and visit (or beg end))
+      (error "Attempt to visit less than an entire file"))
   (setq file (expand-file-name file))
   (let ((local-copy (epa-file-run-real-handler #'file-local-copy (list file)))
        (context (epg-make-context))
          (if replace
              (goto-char (point-min)))
          (condition-case error
-             (setq string (decode-coding-string
-                           (epg-decrypt-file context file nil)
-                           (or coding-system-for-read 'undecided)))
+             (setq string (epg-decrypt-file context file nil))
            (error
             (if (setq entry (assoc file epa-file-passphrase-alist))
                 (setcdr entry nil))
             (signal 'file-error
                     (cons "Opening input file" (cdr error)))))
+         (if (or beg end)
+             (setq string (substring string (or beg 0) end)))
+         (setq string
+               (decode-coding-string string
+                                     (or coding-system-for-read 'undecided)))
          (if (boundp 'last-coding-system-used)
              (set-buffer-file-coding-system last-coding-system-used)
            (set-buffer-file-coding-system default-buffer-file-coding-system))