summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c17
-rw-r--r--upgrade.c22
-rw-r--r--utils.c3
3 files changed, 39 insertions, 3 deletions
diff --git a/data.c b/data.c
index 76ff51e..7f81202 100644
--- a/data.c
+++ b/data.c
@@ -14,7 +14,7 @@
14#include <sys/file.h> 14#include <sys/file.h>
15#include <fcntl.h> 15#include <fcntl.h>
16 16
17double db_layout = 2.3; 17double db_layout = 2.4;
18 18
19 19
20int db_upgrade(d_char **error); 20int db_upgrade(d_char **error);
@@ -901,12 +901,25 @@ void timeline_object_add(snac *snac, const char *id, char *msg)
901{ 901{
902 object_add(id, msg); 902 object_add(id, msg);
903 903
904 /* add to the private index */
904 xs *idx = xs_fmt("%s/private.idx", snac->basedir); 905 xs *idx = xs_fmt("%s/private.idx", snac->basedir);
905 index_add(idx, id); 906 index_add(idx, id);
906 907
908 /* build the name for the linked copy in the private cache */
909 xs *ofn = _object_fn(id);
910 xs *l = xs_split(ofn, "/");
911 xs *cfn = xs_fmt("%s/private/%s", snac->basedir, xs_list_get(l, -1));
912
913 link(ofn, cfn);
914
907 if (xs_startswith(id, snac->actor)) { 915 if (xs_startswith(id, snac->actor)) {
908 idx = xs_replace_i(idx, "private.", "public."); 916 /* add to the public index */
917 idx = xs_replace_i(idx, "private", "public");
909 index_add(idx, id); 918 index_add(idx, id);
919
920 /* add to the public cache */
921 cfn = xs_replace_i(cfn, "private", "public");
922 link(ofn, cfn);
910 } 923 }
911} 924}
912 925
diff --git a/upgrade.c b/upgrade.c
index 13f3fa1..786e0f9 100644
--- a/upgrade.c
+++ b/upgrade.c
@@ -106,6 +106,28 @@ int db_upgrade(d_char **error)
106 106
107 nf = 2.3; 107 nf = 2.3;
108 } 108 }
109 else
110 if (f < 2.4) {
111 xs *users = user_list();
112 char *p, *v;
113
114 p = users;
115 while (xs_list_iter(&p, &v)) {
116 snac snac;
117
118 if (user_open(&snac, v)) {
119 xs *dir = xs_fmt("%s/public", snac.basedir);
120 mkdir(dir, 0755);
121
122 dir = xs_replace_i(dir, "public", "private");
123 mkdir(dir, 0755);
124
125 user_free(&snac);
126 }
127 }
128
129 nf = 2.4;
130 }
109 131
110 if (f < nf) { 132 if (f < nf) {
111 f = nf; 133 f = nf;
diff --git a/utils.c b/utils.c
index bf457b2..84b367f 100644
--- a/utils.c
+++ b/utils.c
@@ -238,7 +238,8 @@ int adduser(char *uid)
238 238
239 const char *dirs[] = { 239 const char *dirs[] = {
240 "followers", "following", "local", "muted", "hidden", 240 "followers", "following", "local", "muted", "hidden",
241 "queue", "static", "timeline", "history", NULL }; 241 "public", "private", "queue", "history",
242 "static", "timeline", NULL };
242 int n; 243 int n;
243 244
244 for (n = 0; dirs[n]; n++) { 245 for (n = 0; dirs[n]; n++) {