1 diff -ru links-0.96/cookies.c links-0.96+cookies-save/cookies.c
2 --- links-0.96/cookies.c Mon Sep 3 07:19:37 2001
3 +++ links-0.96+cookies-save/cookies.c Mon Sep 3 07:18:42 2001
6 void init_cookies(void)
8 - /* !!! FIXME: read cookies */
9 + unsigned char in_buffer[MAX_STR_LEN];
10 + unsigned char *cookfile, *p, *q;
13 + /* must be called after init_home */
14 + if (! links_home) return;
16 + cookfile = stracpy(links_home);
17 + if (! cookfile) return;
18 + add_to_strn(&cookfile, "cookies");
20 + fp = fopen(cookfile, "r");
22 + if (fp == NULL) return;
24 + while (fgets(in_buffer, MAX_STR_LEN, fp)) {
25 + struct cookie *cookie;
27 + if (!(cookie = mem_alloc(sizeof(struct cookie)))) return;
28 + memset(cookie, 0, sizeof(struct cookie));
30 + q = in_buffer; p = strchr(in_buffer, ' ');
31 + if (p == NULL) goto inv;
33 + cookie->name = stracpy(q);
35 + q = p; p = strchr(p, ' ');
36 + if (p == NULL) goto inv;
38 + cookie->value = stracpy(q);
40 + q = p; p = strchr(p, ' ');
41 + if (p == NULL) goto inv;
43 + cookie->server = stracpy(q);
45 + q = p; p = strchr(p, ' ');
46 + if (p == NULL) goto inv;
48 + cookie->path = stracpy(q);
50 + q = p; p = strchr(p, ' ');
51 + if (p == NULL) goto inv;
53 + cookie->domain = stracpy(q);
55 + q = p; p = strchr(p, ' ');
56 + if (p == NULL) goto inv;
58 + cookie->expires = atoi(q);
60 + cookie->secure = atoi(p);
62 + cookie->id = cookie_id++;
64 + accept_cookie(cookie);
69 + free_cookie(cookie);
75 void cleanup_cookies(void)
78 + unsigned char *cookfile;
82 - /* !!! FIXME: save cookies */
83 - foreach (c, cookies) free_cookie(c);
85 + cookfile = stracpy(links_home);
86 + if (! cookfile) return;
87 + add_to_strn(&cookfile, "cookies");
89 + fp = fopen(cookfile, "w");
91 + if (fp == NULL) return;
93 + foreach (c, cookies) {
94 + if (c->expires && ! cookie_expired(c))
95 + fprintf(fp, "%s %s %s %s %s %d %d\n", c->name, c->value,
96 + c->server?c->server:(unsigned char *)"", c->path?c->path:(unsigned char *)"",
97 + c->domain?c->domain:(unsigned char *)"", c->expires, c->secure);