summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar shtrophic2025-02-17 20:54:36 +0100
committerGravatar shtrophic2025-02-17 20:54:36 +0100
commit7eb2556f26baf8ff79fcb7388712d8b714efc4f6 (patch)
tree0d11017b6431c514bd6afd16138a06851cd2f09e /data.c
parentMerge tag '2.72' into curl-smtp (diff)
parentMerge pull request 'doc/snac8: elaborate regex blocking' (#305) from Menelmac... (diff)
downloadpenes-snac2-7eb2556f26baf8ff79fcb7388712d8b714efc4f6.tar.gz
penes-snac2-7eb2556f26baf8ff79fcb7388712d8b714efc4f6.tar.xz
penes-snac2-7eb2556f26baf8ff79fcb7388712d8b714efc4f6.zip
Merge remote-tracking branch 'upstream/master' into curl-smtp
Diffstat (limited to 'data.c')
-rw-r--r--data.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/data.c b/data.c
index 6995611..ae85aaf 100644
--- a/data.c
+++ b/data.c
@@ -13,6 +13,7 @@
13#include "xs_match.h" 13#include "xs_match.h"
14#include "xs_unicode.h" 14#include "xs_unicode.h"
15#include "xs_random.h" 15#include "xs_random.h"
16#include "xs_po.h"
16 17
17#include "snac.h" 18#include "snac.h"
18 19
@@ -98,6 +99,9 @@ int srv_open(const char *basedir, int auto_upgrade)
98 if (error != NULL) 99 if (error != NULL)
99 srv_log(error); 100 srv_log(error);
100 101
102 if (!ret)
103 return ret;
104
101 /* create the queue/ subdir, just in case */ 105 /* create the queue/ subdir, just in case */
102 xs *qdir = xs_fmt("%s/queue", srv_basedir); 106 xs *qdir = xs_fmt("%s/queue", srv_basedir);
103 mkdirx(qdir); 107 mkdirx(qdir);
@@ -148,6 +152,29 @@ int srv_open(const char *basedir, int auto_upgrade)
148 mkdirx(expdir); 152 mkdirx(expdir);
149 } 153 }
150 154
155 /* languages */
156 srv_langs = xs_dict_new();
157 srv_langs = xs_dict_set(srv_langs, "en", xs_stock(XSTYPE_NULL));
158
159 xs *l_dir = xs_fmt("%s/lang/", srv_basedir);
160 mkdirx(l_dir);
161
162 l_dir = xs_str_cat(l_dir, "*.po");
163 xs *pos = xs_glob(l_dir, 0, 0);
164 const char *po;
165
166 xs_list_foreach(pos, po) {
167 xs *d = xs_po_to_dict(po);
168
169 if (xs_is_dict(d)) {
170 xs *l = xs_split(po, "/");
171 xs *id = xs_dup(xs_list_get(l, -1));
172 id = xs_replace_i(id, ".po", "");
173
174 srv_langs = xs_dict_set(srv_langs, id, d);
175 }
176 }
177
151 return ret; 178 return ret;
152} 179}
153 180
@@ -4064,3 +4091,21 @@ void badlogin_inc(const char *user, const char *addr)
4064 pthread_mutex_unlock(&data_mutex); 4091 pthread_mutex_unlock(&data_mutex);
4065 } 4092 }
4066} 4093}
4094
4095
4096/** language strings **/
4097
4098const char *lang_str(const char *str, const snac *user)
4099/* returns a translated string */
4100{
4101 const char *n_str = str;
4102
4103 if (user && xs_is_dict(user->lang) && xs_is_string(str)) {
4104 n_str = xs_dict_get(user->lang, str);
4105
4106 if (xs_is_null(n_str) || *n_str == '\0')
4107 n_str = str;
4108 }
4109
4110 return n_str;
4111}