commit 3e09c229e13bed452bd131a42ba85d3c7a84d922
parent 77f348827901f64dee592c4d06fbf1f4e1f9983d
Author: default <nobody@localhost>
Date: Wed, 23 Nov 2022 15:05:55 +0100
Moved db_upgrade() to its source file.
Diffstat:
M | Makefile | | | 3 | ++- |
M | data.c | | | 67 | ------------------------------------------------------------------- |
A | upgrade.c | | | 78 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 80 insertions(+), 68 deletions(-)
diff --git a/Makefile b/Makefile
@@ -4,7 +4,8 @@ CFLAGS=-g -Wall
all: snac
-snac: snac.o main.o data.o http.o httpd.o webfinger.o activitypub.o html.o utils.o format.o
+snac: snac.o main.o data.o http.o httpd.o webfinger.o \
+ activitypub.o html.o utils.o format.o upgrade.o
$(CC) $(CFLAGS) -L/usr/local/lib *.o -lcurl -lcrypto -pthread -o $@
.c.o:
diff --git a/data.c b/data.c
@@ -1312,70 +1312,3 @@ void purge_all(void)
}
}
}
-
-
-int db_upgrade(d_char **error)
-{
- int ret = 1;
- int changed = 0;
- double f = 0.0;
-
- for (;;) {
- char *layout = xs_dict_get(srv_config, "layout");
- double nf;
-
- f = nf = xs_number_get(layout);
-
- if (!(f < db_layout))
- break;
-
- srv_log(xs_fmt("db_upgrade %1.1lf < %1.1lf", f, db_layout));
-
- if (f < 2.0) {
- *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f);
- ret = 0;
- break;
- }
- else
- if (f < 2.1) {
- xs *dir = xs_fmt("%s/object", srv_basedir);
- mkdir(dir, 0755);
-
- nf = 2.1;
- }
-
- if (f < nf) {
- f = nf;
- xs *nv = xs_number_new(f);
- srv_config = xs_dict_set(srv_config, "layout", nv);
-
- srv_log(xs_fmt("db_upgrade converted to version %1.1lf", f));
- changed++;
- }
- else
- break;
- }
-
- if (f > db_layout) {
- *error = xs_fmt("ERROR: unknown future version %lf\n", f);
- ret = 0;
- }
-
- if (changed) {
- /* upgrade the configuration file */
- xs *fn = xs_fmt("%s/server.json", srv_basedir);
- FILE *f;
-
- if ((f = fopen(fn, "w")) != NULL) {
- xs *j = xs_json_dumps_pp(srv_config, 4);
- fwrite(j, strlen(j), 1, f);
- fclose(f);
-
- srv_log(xs_fmt("upgraded db %s after %d changes", fn, changed));
- }
- else
- ret = 0;
- }
-
- return ret;
-}
diff --git a/upgrade.c b/upgrade.c
@@ -0,0 +1,78 @@
+/* snac - A simple, minimalistic ActivityPub instance */
+/* copyright (c) 2022 grunfink - MIT license */
+
+#include "xs.h"
+#include "xs_io.h"
+#include "xs_json.h"
+#include "xs_glob.h"
+
+#include "snac.h"
+
+#include <sys/stat.h>
+
+
+int db_upgrade(d_char **error)
+{
+ int ret = 1;
+ int changed = 0;
+ double f = 0.0;
+
+ for (;;) {
+ char *layout = xs_dict_get(srv_config, "layout");
+ double nf;
+
+ f = nf = xs_number_get(layout);
+
+ if (!(f < db_layout))
+ break;
+
+ srv_log(xs_fmt("db_upgrade %1.1lf < %1.1lf", f, db_layout));
+
+ if (f < 2.0) {
+ *error = xs_fmt("ERROR: unsupported old disk layout %1.1lf\n", f);
+ ret = 0;
+ break;
+ }
+ else
+ if (f < 2.1) {
+ xs *dir = xs_fmt("%s/object", srv_basedir);
+ mkdir(dir, 0755);
+
+ nf = 2.1;
+ }
+
+ if (f < nf) {
+ f = nf;
+ xs *nv = xs_number_new(f);
+ srv_config = xs_dict_set(srv_config, "layout", nv);
+
+ srv_log(xs_fmt("db_upgrade converted to version %1.1lf", f));
+ changed++;
+ }
+ else
+ break;
+ }
+
+ if (f > db_layout) {
+ *error = xs_fmt("ERROR: unknown future version %lf\n", f);
+ ret = 0;
+ }
+
+ if (changed) {
+ /* upgrade the configuration file */
+ xs *fn = xs_fmt("%s/server.json", srv_basedir);
+ FILE *f;
+
+ if ((f = fopen(fn, "w")) != NULL) {
+ xs *j = xs_json_dumps_pp(srv_config, 4);
+ fwrite(j, strlen(j), 1, f);
+ fclose(f);
+
+ srv_log(xs_fmt("upgraded db %s after %d changes", fn, changed));
+ }
+ else
+ ret = 0;
+ }
+
+ return ret;
+}