changeset 79556:239cccb702f6

(url-cookie-write-file): Use url-make-private-file and with-temp-buffer.
author Glenn Morris <rgm@gnu.org>
date Tue, 11 Dec 2007 05:49:53 +0000
parents 52d2889ab3d8
children 3d0d9d7bb356
files lisp/url/url-cookie.el
diffstat 1 files changed, 25 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/url/url-cookie.el	Tue Dec 11 03:19:09 2007 +0000
+++ b/lisp/url/url-cookie.el	Tue Dec 11 05:49:53 2007 +0000
@@ -148,34 +148,31 @@
     (set var new)))
 
 (defun url-cookie-write-file (&optional fname)
-  (setq fname (or fname url-cookie-file))
-  (unless (file-directory-p (file-name-directory fname))
-    (ignore-errors (make-directory (file-name-directory fname))))
-  (cond
-   ((not url-cookies-changed-since-last-save) nil)
-   ((not (file-writable-p fname))
-    (message "Cookies file %s (see variable `url-cookie-file') is unwritable." fname))
-   (t
-    (url-cookie-clean-up)
-    (url-cookie-clean-up t)
-    (with-current-buffer (get-buffer-create " *cookies*")
-      (erase-buffer)
-      (fundamental-mode)
-      (insert ";; Emacs-W3 HTTP cookies file\n"
-	      ";; Automatically generated file!!! DO NOT EDIT!!!\n\n"
-	      "(setq url-cookie-storage\n '")
-      (pp url-cookie-storage (current-buffer))
-      (insert ")\n(setq url-cookie-secure-storage\n '")
-      (pp url-cookie-secure-storage (current-buffer))
-      (insert ")\n")
-      (insert "\n;; Local Variables:\n"
-              ";; version-control: never\n"
-              ";; no-byte-compile: t\n"
-              ";; End:\n")
-      (set (make-local-variable 'version-control) 'never)
-      (write-file fname)
-      (setq url-cookies-changed-since-last-save nil)
-      (kill-buffer (current-buffer))))))
+  (when url-cookies-changed-since-last-save
+    (or fname (setq fname (expand-file-name url-cookie-file)))
+    (if (condition-case nil
+            (progn
+              (url-make-private-file fname)
+              nil)
+          (error t))
+        (message "Error accessing cookie file `%s'" fname)
+      (url-cookie-clean-up)
+      (url-cookie-clean-up t)
+      (with-temp-buffer
+        (insert ";; Emacs-W3 HTTP cookies file\n"
+                ";; Automatically generated file!!! DO NOT EDIT!!!\n\n"
+                "(setq url-cookie-storage\n '")
+        (pp url-cookie-storage (current-buffer))
+        (insert ")\n(setq url-cookie-secure-storage\n '")
+        (pp url-cookie-secure-storage (current-buffer))
+        (insert ")\n")
+        (insert "\n;; Local Variables:\n"
+                ";; version-control: never\n"
+                ";; no-byte-compile: t\n"
+                ";; End:\n")
+        (set (make-local-variable 'version-control) 'never)
+        (write-file fname))
+      (setq url-cookies-changed-since-last-save nil))))
 
 (defun url-cookie-store (name value &optional expires domain localpart secure)
   "Store a netscape-style cookie."