From: Lars Ingebrigtsen Date: Sun, 21 Feb 2016 05:57:04 +0000 (+1100) Subject: Add a function to delete URL cookies X-Git-Tag: emacs-26.0.90~2524 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3e67708d7239cde24b0988d4d1288bc75585cfea;p=emacs.git Add a function to delete URL cookies * doc/misc/url.texi (Cookies): Document url-cookie-delete-cookies. * lisp/url/url-cookie.el (url-cookie-delete-cookies): New function. --- diff --git a/doc/misc/url.texi b/doc/misc/url.texi index c46859968a2..14a4c96cc47 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -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}. diff --git a/etc/NEWS b/etc/NEWS index 9f0fb8d6941..bad95191884 100644 --- 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 +++ diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el index 4c7366adc8e..a4b7a58fdf3 100644 --- a/lisp/url/url-cookie.el +++ b/lisp/url/url-cookie.el @@ -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 ()