diff options
| -rw-r--r-- | emms-player-mpd.el | 2 | ||||
| -rw-r--r-- | emms-url.el | 25 | 
2 files changed, 26 insertions, 1 deletions
diff --git a/emms-player-mpd.el b/emms-player-mpd.el index 16d035d..c31c48b 100644 --- a/emms-player-mpd.el +++ b/emms-player-mpd.el @@ -758,7 +758,7 @@ Execute CALLBACK with CLOSURE as its first argument when done."        (progn          (require 'emms-url)          (with-temp-buffer -          (url-insert-file-contents (emms-url-quote url)) +          (url-insert-file-contents (emms-url-quote-entire url))            (emms-http-decode-buffer (current-buffer))            (emms-player-mpd-add-buffer-contents (current-buffer)                                                 closure callback))) diff --git a/emms-url.el b/emms-url.el index aee894d..24ae903 100644 --- a/emms-url.el +++ b/emms-url.el @@ -28,6 +28,31 @@  (require 'url)  (require 'emms-compat) +(defvar emms-url-specials-entire +  '((?\  . "%20") +    (?\n . "%0D%0A")) +  "*An alist of characters which must be represented specially in URLs. +The transformation is the key of the pair. + +This is used by `emms-url-quote-entire'.") + +(defun emms-url-quote-entire (url) +  "Escape specials conservatively in an entire URL. + +The specials to escape are specified by the `emms-url-specials-entire' +variable. + +If you want to escape parts of URLs thoroughly, then use +`emms-url-quote' instead." +  (apply (function concat) +         (mapcar +          (lambda (ch) +            (let ((repl (assoc ch emms-url-specials-entire))) +              (if (null repl) +                  (char-to-string ch) +                (cdr repl)))) +          (append url nil)))) +  (defun emms-url-quote (s &optional safe)    "Replace special characters in S using the `%xx' escape.  This is useful for escaping parts of URLs, but not entire URLs.  | 
