mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-09-30 01:11:40 +00:00
107 lines
2.3 KiB
Diff
107 lines
2.3 KiB
Diff
diff -ru links-0.96/cookies.c links-0.96+cookies-save/cookies.c
|
|
--- links-0.96/cookies.c Mon Sep 3 07:19:37 2001
|
|
+++ links-0.96+cookies-save/cookies.c Mon Sep 3 07:18:42 2001
|
|
@@ -276,15 +276,99 @@
|
|
|
|
void init_cookies(void)
|
|
{
|
|
- /* !!! FIXME: read cookies */
|
|
+ unsigned char in_buffer[MAX_STR_LEN];
|
|
+ unsigned char *cookfile, *p, *q;
|
|
+ FILE *fp;
|
|
+
|
|
+ /* must be called after init_home */
|
|
+ if (! links_home) return;
|
|
+
|
|
+ cookfile = stracpy(links_home);
|
|
+ if (! cookfile) return;
|
|
+ add_to_strn(&cookfile, "cookies");
|
|
+
|
|
+ fp = fopen(cookfile, "r");
|
|
+ mem_free(cookfile);
|
|
+ if (fp == NULL) return;
|
|
+
|
|
+ while (fgets(in_buffer, MAX_STR_LEN, fp)) {
|
|
+ struct cookie *cookie;
|
|
+
|
|
+ if (!(cookie = mem_alloc(sizeof(struct cookie)))) return;
|
|
+ memset(cookie, 0, sizeof(struct cookie));
|
|
+
|
|
+ q = in_buffer; p = strchr(in_buffer, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->name = stracpy(q);
|
|
+
|
|
+ q = p; p = strchr(p, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->value = stracpy(q);
|
|
+
|
|
+ q = p; p = strchr(p, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->server = stracpy(q);
|
|
+
|
|
+ q = p; p = strchr(p, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->path = stracpy(q);
|
|
+
|
|
+ q = p; p = strchr(p, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->domain = stracpy(q);
|
|
+
|
|
+ q = p; p = strchr(p, ' ');
|
|
+ if (p == NULL) goto inv;
|
|
+ *p++ = '\0';
|
|
+ cookie->expires = atoi(q);
|
|
+
|
|
+ cookie->secure = atoi(p);
|
|
+
|
|
+ cookie->id = cookie_id++;
|
|
+
|
|
+ accept_cookie(cookie);
|
|
+
|
|
+ continue;
|
|
+
|
|
+inv:
|
|
+ free_cookie(cookie);
|
|
+ free(cookie);
|
|
+ }
|
|
+ fclose(fp);
|
|
}
|
|
|
|
void cleanup_cookies(void)
|
|
{
|
|
struct cookie *c;
|
|
+ unsigned char *cookfile;
|
|
+ FILE *fp;
|
|
+
|
|
free_list(c_domains);
|
|
- /* !!! FIXME: save cookies */
|
|
- foreach (c, cookies) free_cookie(c);
|
|
+
|
|
+ cookfile = stracpy(links_home);
|
|
+ if (! cookfile) return;
|
|
+ add_to_strn(&cookfile, "cookies");
|
|
+
|
|
+ fp = fopen(cookfile, "w");
|
|
+ mem_free(cookfile);
|
|
+ if (fp == NULL) return;
|
|
+
|
|
+ foreach (c, cookies) {
|
|
+ if (c->expires && ! cookie_expired(c))
|
|
+ fprintf(fp, "%s %s %s %s %s %d %d\n", c->name, c->value,
|
|
+ c->server?c->server:(unsigned char *)"", c->path?c->path:(unsigned char *)"",
|
|
+ c->domain?c->domain:(unsigned char *)"", c->expires, c->secure);
|
|
+
|
|
+ free_cookie(c);
|
|
+ }
|
|
+
|
|
+ fclose(fp);
|
|
+
|
|
free_list(cookies);
|
|
}
|
|
|