]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a function to delete URL cookies
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 21 Feb 2016 05:57:04 +0000 (16:57 +1100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 21 Feb 2016 05:57:04 +0000 (16:57 +1100)
* doc/misc/url.texi (Cookies): Document
url-cookie-delete-cookies.

* lisp/url/url-cookie.el (url-cookie-delete-cookies): New function.

doc/misc/url.texi
etc/NEWS
lisp/url/url-cookie.el

index c46859968a2e40bc98afa91fc5c3a62ed106e0b6..14a4c96cc47845cc2de360b96d16a62f39df3034 100644 (file)
@@ -417,6 +417,12 @@ cookies, if there are any.  You can remove a cookie using the
 @kbd{C-k} (@code{url-cookie-delete}) command.
 @end defun
 
+@defun url-cookie-delete-cookies &optional regexp
+This function takes a regular expression as its parameters and deletes
+all cookies from that domain.  If @var{regexp} is @code{nil}, delete
+all cookies.
+@end defun
+
 @defopt url-cookie-file
 The file in which cookies are stored, defaulting to @file{cookies} in
 the directory specified by @code{url-configuration-directory}.
index 9f0fb8d69419c9d1b766811290bdaa96b51ad346..bad95191884185fc82c3a3afede4783daa1c58fe 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1040,6 +1040,11 @@ we should not be queried about things like TLS certificate validity.
 plist will contain a :peer element that has the output of
 `gnutls-peer-status' (if Emacs is built with GnuTLS support).
 
++++
+*** The new function `url-cookie-delete-cookie' can be used to
+programmatically delete all cookies, or cookies from a specific
+domain.
+
 ** Tramp
 
 +++
index 4c7366adc8e53ed93bf52dfeb515636d1c676333..a4b7a58fdf3764acd644f4f8e7a5d29996eac1c7 100644 (file)
@@ -353,6 +353,19 @@ to run the `url-cookie-setup-save-timer' function manually."
                                          url-cookie-save-interval
                                          #'url-cookie-write-file))))
 
+(defun url-cookie-delete-cookies (&optional regexp)
+  "Delete all cookies from the cookie store where the domain matches REGEXP.
+If REGEXP is nil, all cookies are deleted."
+  (dolist (variable '(url-cookie-secure-storage url-cookie-storage))
+    (let ((cookies (symbol-value variable)))
+      (dolist (elem cookies)
+        (when (or (null regexp)
+                  (string-match regexp (car elem)))
+          (setq cookies (delq elem cookies))))
+      (set variable cookies)))
+  (setq url-cookies-changed-since-last-save t)
+  (url-cookie-write-file))
+
 ;;; Mode for listing and editing cookies.
 
 (defun url-cookie-list ()