Commit 0f09bbfa authored by Michael Albinus's avatar Michael Albinus

* url-handlers.el (url-file-handler-load-in-progress): New defvar.

(url-file-handler): Use it, in order to avoid recursive load.
parent 472c15bf
2014-05-09 Michael Albinus <michael.albinus@gmx.de>
* url-handlers.el (url-file-handler-load-in-progress): New defvar.
(url-file-handler): Use it, in order to avoid recursive load.
2014-05-01 Glenn Morris <rgm@gnu.org>
* url-parse.el (url-generic-parse-url): Doc fix (replace `iff').
......
......@@ -137,25 +137,32 @@ like URLs \(Gnus is particularly bad at this\)."
(inhibit-file-name-operation operation))
(apply operation args)))
(defvar url-file-handler-load-in-progress nil
"Check for recursive load.")
;;;###autoload
(defun url-file-handler (operation &rest args)
"Function called from the `file-name-handler-alist' routines.
OPERATION is what needs to be done (`file-exists-p', etc). ARGS are
the arguments that would have been passed to OPERATION."
(let ((fn (get operation 'url-file-handlers))
(val nil)
(hooked nil))
(if (and (not fn) (intern-soft (format "url-%s" operation))
(fboundp (intern-soft (format "url-%s" operation))))
(error "Missing URL handler mapping for %s" operation))
(if fn
(setq hooked t
val (save-match-data (apply fn args)))
(setq hooked nil
val (url-run-real-handler operation args)))
(url-debug 'handlers "%s %S%S => %S" (if hooked "Hooked" "Real")
operation args val)
val))
;; Avoid recursive load.
(if (and load-in-progress url-file-handler-load-in-progress)
(url-run-real-handler operation args)
(let ((url-file-handler-load-in-progress load-in-progress)
(fn (get operation 'url-file-handlers))
(val nil)
(hooked nil))
(if (and (not fn) (intern-soft (format "url-%s" operation))
(fboundp (intern-soft (format "url-%s" operation))))
(error "Missing URL handler mapping for %s" operation))
(if fn
(setq hooked t
val (save-match-data (apply fn args)))
(setq hooked nil
val (url-run-real-handler operation args)))
(url-debug 'handlers "%s %S%S => %S" (if hooked "Hooked" "Real")
operation args val)
val)))
(defun url-file-handler-identity (&rest args)
;; Identity function
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment