summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'data.c')
-rw-r--r--data.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/data.c b/data.c
index 8746545..457219c 100644
--- a/data.c
+++ b/data.c
@@ -1312,70 +1312,3 @@ void purge_all(void)
1312 } 1312 }
1313 } 1313 }
1314} 1314}
1315
1316
1317int db_upgrade(d_char **error)
1318{
1319 int ret = 1;
1320 int changed = 0;
1321 double f = 0.0;
1322
1323 for (;;) {
1324 char *layout = xs_dict_get(srv_config, "layout");
1325 double nf;
1326
1327 f = nf = xs_number_get(layout);
1328
1329 if (!(f < db_layout))
1330 break;
1331
1332 srv_log(xs_fmt("db_upgrade %1.1lf < %1.1lf", f, db_layout));
1333
1334 if (f < 2.0) {
1335 *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f);
1336 ret = 0;
1337 break;
1338 }
1339 else
1340 if (f < 2.1) {
1341 xs *dir = xs_fmt("%s/object", srv_basedir);
1342 mkdir(dir, 0755);
1343
1344 nf = 2.1;
1345 }
1346
1347 if (f < nf) {
1348 f = nf;
1349 xs *nv = xs_number_new(f);
1350 srv_config = xs_dict_set(srv_config, "layout", nv);
1351
1352 srv_log(xs_fmt("db_upgrade converted to version %1.1lf", f));
1353 changed++;
1354 }
1355 else
1356 break;
1357 }
1358
1359 if (f > db_layout) {
1360 *error = xs_fmt("ERROR: unknown future version %lf\n", f);
1361 ret = 0;
1362 }
1363
1364 if (changed) {
1365 /* upgrade the configuration file */
1366 xs *fn = xs_fmt("%s/server.json", srv_basedir);
1367 FILE *f;
1368
1369 if ((f = fopen(fn, "w")) != NULL) {
1370 xs *j = xs_json_dumps_pp(srv_config, 4);
1371 fwrite(j, strlen(j), 1, f);
1372 fclose(f);
1373
1374 srv_log(xs_fmt("upgraded db %s after %d changes", fn, changed));
1375 }
1376 else
1377 ret = 0;
1378 }
1379
1380 return ret;
1381}