1 --- links-2.12/cookies.c.orig 2016-01-09 16:48:22.619433626 +0100
2 +++ links-2.12/cookies.c 2016-01-09 16:52:06.066090917 +0100
4 void free_cookies(void)
7 + unsigned char *cookfile;
11 - /* !!! FIXME: save cookies */
12 - foreach (c, all_cookies) free_cookie(c);
14 + cookfile = stracpy(links_home);
15 + if (! cookfile) return;
16 + add_to_strn(&cookfile, "cookies");
18 + fp = fopen(cookfile, "w");
20 + if (fp == NULL) return;
22 + foreach (c, all_cookies) {
23 + if (c->expires && ! cookie_expired(c))
24 + fprintf(fp, "%s %s %s %s %s %d %d\n", c->name, c->value,
25 + c->server?c->server:(unsigned char *)"", c->path?c->path:(unsigned char *)"",
26 + c->domain?c->domain:(unsigned char *)"", (int)c->expires, c->secure);
33 free_list(all_cookies);
36 void init_cookies(void)
38 - /* !!! FIXME: read cookies */
39 + unsigned char in_buffer[MAX_STR_LEN];
40 + unsigned char *cookfile, *p, *q;
43 + /* must be called after init_home */
44 + if (! links_home) return;
46 + cookfile = stracpy(links_home);
47 + if (! cookfile) return;
48 + add_to_strn(&cookfile, "cookies");
50 + fp = fopen(cookfile, "r");
52 + if (fp == NULL) return;
54 + while (fgets(in_buffer, MAX_STR_LEN, fp)) {
55 + struct cookie *cookie;
57 + if (!(cookie = mem_alloc(sizeof(struct cookie)))) return;
58 + memset(cookie, 0, sizeof(struct cookie));
60 + q = in_buffer; p = strchr(in_buffer, ' ');
61 + if (p == NULL) goto inv;
63 + cookie->name = stracpy(q);
65 + q = p; p = strchr(p, ' ');
66 + if (p == NULL) goto inv;
68 + cookie->value = stracpy(q);
70 + q = p; p = strchr(p, ' ');
71 + if (p == NULL) goto inv;
73 + cookie->server = stracpy(q);
75 + q = p; p = strchr(p, ' ');
76 + if (p == NULL) goto inv;
78 + cookie->path = stracpy(q);
80 + q = p; p = strchr(p, ' ');
81 + if (p == NULL) goto inv;
83 + cookie->domain = stracpy(q);
85 + q = p; p = strchr(p, ' ');
86 + if (p == NULL) goto inv;
88 + cookie->expires = atoi(q);
90 + cookie->secure = atoi(p);
92 + /*cookie->id = cookie_id++;*/
94 + accept_cookie(cookie);
99 + free_cookie(cookie);
105 void cleanup_cookies(void)