Forward compatible Cookie file loading/saving

Reduce amount of magic numbers

svn path=/trunk/netsurf/; revision=3944
This commit is contained in:
John Mark Bell 2008-03-13 18:14:05 +00:00
parent 6906f6b861
commit 2dadb5fac8

View File

@ -301,7 +301,10 @@ static struct search_node *search_trees[NUM_SEARCH_TREES] = {
&empty, &empty, &empty, &empty &empty, &empty, &empty, &empty
}; };
#define MIN_COOKIE_FILE_VERSION 100
#define COOKIE_FILE_VERSION 101 #define COOKIE_FILE_VERSION 101
static int loaded_cookie_file_version;
#define MIN_URL_FILE_VERSION 105
#define URL_FILE_VERSION 106 #define URL_FILE_VERSION 106
/** /**
@ -334,7 +337,7 @@ void urldb_load(const char *filename)
if (!fgets(s, MAXIMUM_URL_LENGTH, fp)) if (!fgets(s, MAXIMUM_URL_LENGTH, fp))
return; return;
version = atoi(s); version = atoi(s);
if (version < 105) { if (version < MIN_URL_FILE_VERSION) {
LOG(("Unsupported URL file version.")); LOG(("Unsupported URL file version."));
return; return;
} }
@ -3497,7 +3500,6 @@ void urldb_load_cookies(const char *filename)
{ {
FILE *fp; FILE *fp;
char s[16*1024]; char s[16*1024];
int file_version = 0;
assert(filename); assert(filename);
@ -3543,16 +3545,16 @@ void urldb_load_cookies(const char *filename)
* (all input is ignored until this is read) * (all input is ignored until this is read)
*/ */
if (strncasecmp(s, "Version:", 8) == 0) { if (strncasecmp(s, "Version:", 8) == 0) {
FIND_T; SKIP_T; file_version = atoi(p); FIND_T; SKIP_T; loaded_cookie_file_version = atoi(p);
if (file_version < 100 && if (loaded_cookie_file_version <
file_version > COOKIE_FILE_VERSION) { MIN_COOKIE_FILE_VERSION) {
LOG(("Unknown Cookie file version")); LOG(("Unsupported Cookie file version"));
break; break;
} }
continue; continue;
} else if (file_version == 0) { } else if (loaded_cookie_file_version == 0) {
/* Haven't yet seen version; skip this input */ /* Haven't yet seen version; skip this input */
continue; continue;
} }
@ -3571,7 +3573,8 @@ void urldb_load_cookies(const char *filename)
SKIP_T; no_destroy = atoi(p); FIND_T; SKIP_T; no_destroy = atoi(p); FIND_T;
SKIP_T; name = p; FIND_T; SKIP_T; name = p; FIND_T;
SKIP_T; value = p; FIND_T; SKIP_T; value = p; FIND_T;
if (file_version > 100) { if (loaded_cookie_file_version > 100) {
/* Introduced in version 1.01 */
SKIP_T; value_quoted = atoi(p); FIND_T; SKIP_T; value_quoted = atoi(p); FIND_T;
} else { } else {
value_quoted = 0; value_quoted = 0;
@ -3687,6 +3690,8 @@ void urldb_delete_cookie_paths(const char *domain, const char *path,
void urldb_save_cookies(const char *filename) void urldb_save_cookies(const char *filename)
{ {
FILE *fp; FILE *fp;
int cookie_file_version = max(loaded_cookie_file_version,
COOKIE_FILE_VERSION);
assert(filename); assert(filename);
@ -3706,8 +3711,8 @@ void urldb_save_cookies(const char *filename)
"Path from Set-Cookie\tSecure\tExpires\tLast used\t" "Path from Set-Cookie\tSecure\tExpires\tLast used\t"
"No destroy\tName\tValue\tValue was quoted\tScheme\t" "No destroy\tName\tValue\tValue was quoted\tScheme\t"
"URL\tComment\n", "URL\tComment\n",
COOKIE_FILE_VERSION); cookie_file_version);
fprintf(fp, "Version:\t%d\n", COOKIE_FILE_VERSION); fprintf(fp, "Version:\t%d\n", cookie_file_version);
urldb_save_cookie_hosts(fp, &db_root); urldb_save_cookie_hosts(fp, &db_root);