Commit 651f4d9f authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

(rfc2368-unhexify-char): Deleted.

(rfc2368-unhexify-string): Use replace-regexp-in-string.
parent 1abcd088
2004-03-07 Dave Love <>
* net/browse-url.el (rfc2368-parse-mailto-url): Autoload.
(browse-url-mail): Use it.
* mail/rfc2368.el (rfc2368-unhexify-char): Deleted.
(rfc2368-unhexify-string): Use replace-regexp-in-string.
2004-03-07 Francis J. Wright <>
* woman.el (woman-man.conf-path): Doc fix.
......@@ -76,39 +76,13 @@
(defconst rfc2368-mailto-query-index 4
"Describes the portion of the url after '?'.")
;; for dealing w/ unhexifying strings, my preferred approach is to use
;; a 'string-replace-match-using-function' which can perform a
;; string-replace-match and compute the replacement text based on a
;; passed function -- however, emacs doesn't seem to have such a
;; function yet :-(
;; for the moment a rip-off of url-unhex (w3/url.el)
(defun rfc2368-unhexify-char (char)
"Unhexify CHAR -- e.g. %20 -> <SPC>."
(if (> char ?9)
(if (>= char ?a)
(+ 10 (- char ?a))
(+ 10 (- char ?A)))
(- char ?0)))
;; for the moment a rip-off of url-unhex-string (w3/url.el) (slightly modified)
(defun rfc2368-unhexify-string (string)
"Unhexify STRING -- e.g. 'hello%20there' -> 'hello there'."
(let ((case-fold-search t)
(result ""))
(while (string-match "%[0-9a-f][0-9a-f]" string)
(let* ((start (match-beginning 0))
(hex-code (+ (* 16
(rfc2368-unhexify-char (elt string (+ start 1))))
(rfc2368-unhexify-char (elt string (+ start 2))))))
(setq result (concat
result (substring string 0 start)
(char-to-string hex-code))
string (substring string (match-end 0)))))
;; it seems clearer to do things this way than to just return:
;; (concat result string)
(setq result (concat result string))
(replace-regexp-in-string "%[[:xdigit:]]\\{2\\}"
(lambda (match)
(string (string-to-number (substring match 1)
string t t))
(defun rfc2368-parse-mailto-url (mailto-url)
"Parse MAILTO-URL, and return an alist of header-name, header-value pairs.
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