diff options
author | default <nobody@localhost> | 2022-11-23 16:46:18 +0100 |
---|---|---|
committer | default <nobody@localhost> | 2022-11-23 16:46:18 +0100 |
commit | 5c05e60bcecedc2ffbffb33132823b7347659608 (patch) | |
tree | 2abd4d69cfcfb7d8592f2e97bccd9b7f22ab7139 | |
parent | 01a62669f6f6deb974cd16ee824700ba07618c1f (diff) |
New db_layout 2.2.
-rw-r--r-- | data.c | 4 | ||||
-rw-r--r-- | upgrade.c | 34 |
2 files changed, 36 insertions, 2 deletions
@@ -14,7 +14,7 @@ #include <sys/file.h> #include <fcntl.h> -double db_layout = 2.1; +double db_layout = 2.2; int db_upgrade(d_char **error); @@ -195,7 +195,7 @@ double mtime(char *fn) d_char *_object_fn_by_md5(const char *md5) { - xs *bfn = xs_fmt("%s/object/%c%c/", srv_basedir, md5[0], md5[1]); + xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]); mkdir(bfn, 0755); @@ -40,6 +40,40 @@ int db_upgrade(d_char **error) nf = 2.1; } + else + if (f < 2.2) { + xs *users = user_list(); + char *p, *v; + + p = users; + while (xs_list_iter(&p, &v)) { + snac snac; + + if (user_open(&snac, v)) { + xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir); + xs *list = xs_glob(spec, 0, 0); + char *g, *fn; + + g = list; + while (xs_list_iter(&g, &fn)) { + xs *l = xs_split(fn, "/"); + char *b = xs_list_get(l, -1); + xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]); + xs *nfn = xs_fmt("%s/%s", dir, b); + + mkdir(dir, 0755); + rename(fn, nfn); + } + + xs *odir = xs_fmt("%s/actors", snac.basedir); + rmdir(odir); + + user_free(&snac); + } + } + + nf = 2.2; + } if (f < nf) { f = nf; |