]> git.eshelyaron.com Git - emacs.git/commitdiff
(url-make-private-file): New function.
authorGlenn Morris <rgm@gnu.org>
Tue, 11 Dec 2007 05:50:37 +0000 (05:50 +0000)
committerGlenn Morris <rgm@gnu.org>
Tue, 11 Dec 2007 05:50:37 +0000 (05:50 +0000)
lisp/url/ChangeLog
lisp/url/url-util.el

index 7016382f71e784c87c79a3d524852dc9219b1ef9..aadd79ccc02a6d17b515a1ab6be8a435b66fe518 100644 (file)
@@ -1,3 +1,10 @@
+2007-12-11  Glenn Morris  <rgm@gnu.org>
+
+       * url-util.el (url-make-private-file): New function.
+       * url-cookie.el (url-cookie-write-file):
+       * url-history.el (url-history-save-history):
+       Use url-make-private-file and with-temp-buffer.
+
 2007-12-02  Glenn Morris  <rgm@gnu.org>
 
        * url-news.el (nntp-open-tls-stream, nntp-open-ssl-stream):
index d7d8e2b4a4b636476e068fc8585ddc6c26c16ad9..4f5b4b8cd17d427df5b063fe0b41786947a17874 100644 (file)
@@ -523,6 +523,28 @@ Has a preference for looking backward when not directly on a symbol."
       (set (make-local-variable 'url-current-mime-headers)
           (mail-header-extract)))))
 
+(defun url-make-private-file (file)
+  "Make FILE only readable and writable by the current user.
+Creates FILE and its parent directories if they do not exist."
+  (let ((dir (file-name-directory file)))
+    (when dir
+      ;; For historical reasons.
+      (make-directory dir t)))
+  ;; Based on doc-view-make-safe-dir.
+  (condition-case nil
+      (let ((umask (default-file-modes)))
+        (unwind-protect
+            (progn
+              (set-default-file-modes #o0600)
+              (with-temp-buffer
+                (write-region (point-min) (point-max)
+                              file nil 'silent nil 'excl)))
+          (set-default-file-modes umask)))
+    (file-already-exists
+     (if (file-symlink-p file)
+         (error "Danger: `%s' is a symbolic link" file))
+     (set-file-modes file #o0600))))
+
 (provide 'url-util)
 
 ;; arch-tag: 24352abc-5a5a-412e-90cd-313b26bed5c9