aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2007-06-12 18:24:25 +0000
committerStefan Monnier2007-06-12 18:24:25 +0000
commit495fa7db39d8b28633d410f994d9c583f407c8d3 (patch)
tree0404684a6b5452b4209643ef850ec5f0db770bc6
parent9450aaa02b37474995c4650a515710be962c4968 (diff)
downloademacs-495fa7db39d8b28633d410f994d9c583f407c8d3.tar.gz
emacs-495fa7db39d8b28633d410f994d9c583f407c8d3.zip
(url-cookie-name, url-cookie-value, url-cookie-expires, url-cookie-localpart)
(url-cookie-domain, url-cookie-secure, url-cookie-set-name) (url-cookie-set-value, url-cookie-set-expires, url-cookie-set-localpart) (url-cookie-set-domain, url-cookie-set-secure, url-cookie-retrieve-arg) (url-cookie-create, url-cookie-p): Remove. (url-cookie): New struct. (url-cookie-store): Use setf instead of url-cookie-set-*.
-rw-r--r--lisp/url/ChangeLog11
-rw-r--r--lisp/url/url-cookie.el63
2 files changed, 27 insertions, 47 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index d9efd3a4540..8cfaa3c7954 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,14 @@
12007-06-12 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * url-cookie.el (url-cookie-name, url-cookie-value)
4 (url-cookie-expires, url-cookie-localpart, url-cookie-domain)
5 (url-cookie-secure, url-cookie-set-name, url-cookie-set-value)
6 (url-cookie-set-expires, url-cookie-set-localpart)
7 (url-cookie-set-domain, url-cookie-set-secure)
8 (url-cookie-retrieve-arg, url-cookie-create, url-cookie-p): Remove.
9 (url-cookie): New struct.
10 (url-cookie-store): Use setf instead of url-cookie-set-*.
11
12007-05-29 Chong Yidong <cyd@stupidchicken.com> 122007-05-29 Chong Yidong <cyd@stupidchicken.com>
2 13
3 * url-mailto.el (url-mailto): Insert body after 14 * url-mailto.el (url-mailto): Insert body after
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index 8d729c92369..44ef8aed779 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -33,51 +33,6 @@
33 33
34;; See http://home.netscape.com/newsref/std/cookie_spec.html for the 34;; See http://home.netscape.com/newsref/std/cookie_spec.html for the
35;; 'open standard' defining this crap. 35;; 'open standard' defining this crap.
36;;
37;; A cookie is stored internally as a vector of 7 slots
38;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
39
40(defsubst url-cookie-name (cookie) (aref cookie 1))
41(defsubst url-cookie-value (cookie) (aref cookie 2))
42(defsubst url-cookie-expires (cookie) (aref cookie 3))
43(defsubst url-cookie-localpart (cookie) (aref cookie 4))
44(defsubst url-cookie-domain (cookie) (aref cookie 5))
45(defsubst url-cookie-secure (cookie) (aref cookie 6))
46
47(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
48(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
49(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
50(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
51(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
52(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
53(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
54
55(defsubst url-cookie-create (&rest args)
56 "Create a cookie vector object from keyword-value pairs ARGS.
57The keywords allowed are
58 :name NAME
59 :value VALUE
60 :expires TIME
61 :localpart LOCALPAR
62 :domain DOMAIN
63 :secure ???
64Could someone fill in more information?"
65 (let ((retval (make-vector 7 nil)))
66 (aset retval 0 'cookie)
67 (url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
68 (url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
69 (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
70 (url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
71 (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
72 (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
73 retval))
74
75(defun url-cookie-p (obj)
76 "Return non-nil if OBJ is a cookie vector object.
77These objects represent cookies in the URL package.
78A cookie vector object is a vector of 7 slots:
79 [cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
80 (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
81 36
82(defgroup url-cookie nil 37(defgroup url-cookie nil
83 "URL cookies." 38 "URL cookies."
@@ -85,6 +40,20 @@ A cookie vector object is a vector of 7 slots:
85 :prefix "url-cookie-" 40 :prefix "url-cookie-"
86 :group 'url) 41 :group 'url)
87 42
43;; A cookie is stored internally as a vector of 7 slots
44;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
45
46(defstruct (url-cookie
47 (:constructor url-cookie-create)
48 (:copier nil)
49 ;; For compatibility with a previous version which did not use
50 ;; defstruct, and also in order to make sure that the printed
51 ;; representation does not depend on CL internals, we use an
52 ;; explicitly managed tag.
53 (:type vector))
54 (tag 'cookie :read-only t)
55 name value expires localpart domain secure)
56
88(defvar url-cookie-storage nil "Where cookies are stored.") 57(defvar url-cookie-storage nil "Where cookies are stored.")
89(defvar url-cookie-secure-storage nil "Where secure cookies are stored.") 58(defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
90(defcustom url-cookie-file nil 59(defcustom url-cookie-file nil
@@ -199,8 +168,8 @@ telling Microsoft that."
199 (if (and (equal localpart (url-cookie-localpart cur)) 168 (if (and (equal localpart (url-cookie-localpart cur))
200 (equal name (url-cookie-name cur))) 169 (equal name (url-cookie-name cur)))
201 (progn 170 (progn
202 (url-cookie-set-expires cur expires) 171 (setf (url-cookie-expires cur) expires)
203 (url-cookie-set-value cur value) 172 (setf (url-cookie-value cur) value)
204 (setq tmp t)))) 173 (setq tmp t))))
205 (if (not tmp) 174 (if (not tmp)
206 ;; New cookie 175 ;; New cookie