]> git.eshelyaron.com Git - emacs.git/commitdiff
Use more recent public_suffix_list.dat where possible
authorStefan Kangas <stefankangas@gmail.com>
Fri, 17 Feb 2023 21:50:13 +0000 (22:50 +0100)
committerStefan Kangas <stefankangas@gmail.com>
Fri, 17 Feb 2023 21:50:13 +0000 (22:50 +0100)
* lisp/url/url-domsuf.el (url-domsuf--public-suffix-file): New
function to look for a more recent version of public_suffix_list.dat
on the system than the one that is shipped with Emacs.
(url-domsuf-parse-file): Use above new function.
* test/lisp/url/url-domsuf-tests.el
(url-domsuf--public-suffix-file): New test.

lisp/url/url-domsuf.el
test/lisp/url/url-domsuf-tests.el

index 74d46f1c0376f63a6102af83a27c298ac1e26ea2..671885e418f2be5516227a90ef7caf97c0921d1d 100644 (file)
 
 (defvar url-domsuf-domains nil)
 
+(defun url-domsuf--public-suffix-file ()
+  "Look for and return a  file name for a recent \"public_suffix_list.dat\".
+Emacs ships with a copy of this file, but some systems might have
+a newer version available.  Look for it in some standard
+locations, and if a newer file was found, then return that."
+  (car (sort
+        (seq-filter
+         #'file-readable-p
+         (list (expand-file-name "publicsuffix.txt.gz" data-directory)
+               (expand-file-name "publicsuffix.txt" data-directory)
+               ;; Debian and Fedora
+               "/usr/share/publicsuffix/public_suffix_list.dat"
+               ;; FreeBSD port
+               "/usr/local/share/public_suffix_list/public_suffix_list.dat"))
+        #'file-newer-than-file-p)))
+
 (defun url-domsuf-parse-file ()
   (with-temp-buffer
     (with-auto-compression-mode
-      (insert-file-contents
-       (let* ((suffixfile (expand-file-name "publicsuffix.txt" data-directory))
-             (compressed-file (concat suffixfile ".gz")))
-        (or (and (file-readable-p compressed-file) compressed-file)
-            suffixfile))))
+      (insert-file-contents (url-domsuf--public-suffix-file)))
     (let ((domains nil)
          domain exception)
       (while (not (eobp))
index 09fd6240065a1c5bf3a09fb977c48a82712c4548..8dbf65dae44ea5afda97020b31b6d46d85bbf39c 100644 (file)
 (require 'url-domsuf)
 (require 'ert)
 
+(ert-deftest url-domsuf--public-suffix-file ()
+  ;; We should always have a file, since it ships with Emacs.
+  (should (file-readable-p (url-domsuf--public-suffix-file))))
+
 (defun url-domsuf-tests--run ()
   (should-not (url-domsuf-cookie-allowed-p "com"))
   (should (url-domsuf-cookie-allowed-p "foo.bar.bd"))