aboutsummaryrefslogtreecommitdiff
path: root/namazu/patches/NAMAZU_LANG_TRANS.patch
diff options
context:
space:
mode:
Diffstat (limited to 'namazu/patches/NAMAZU_LANG_TRANS.patch')
-rw-r--r--namazu/patches/NAMAZU_LANG_TRANS.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/namazu/patches/NAMAZU_LANG_TRANS.patch b/namazu/patches/NAMAZU_LANG_TRANS.patch
new file mode 100644
index 0000000..411de6c
--- /dev/null
+++ b/namazu/patches/NAMAZU_LANG_TRANS.patch
@@ -0,0 +1,37 @@
+diff -pur namazu-2.0.20/src/cgi.c /usr/local/src/namazu/namazu-2.0.20/src/cgi.c
+--- namazu-2.0.20/src/cgi.c 2008-07-15 18:02:25.000000000 +0300
++++ /usr/local/src/namazu/namazu-2.0.20/src/cgi.c 2010-02-28 11:44:02.000000000 +0200
+@@ -476,6 +476,33 @@ process_cgi_var_whence(char *value, stru
+ static void
+ process_cgi_var_lang(char *value, struct cgiarg *ca)
+ {
++ char *p = getenv("NAMAZU_LANG_TRANS");
++ if (p) {
++ size_t vlen = strlen(value);
++ while (*p) {
++ size_t plen, tlen;
++ char *trans;
++
++ plen = strcspn(p, "=");
++ trans = p + plen;
++ if (!*trans)
++ break;
++ tlen = strcspn(++trans, ":");
++ if (vlen == plen && memcmp(p, value, plen) == 0) {
++ char *nval = malloc(tlen + 1);
++ if (nval) {
++ memcpy(nval, trans, tlen);
++ nval[tlen] = 0;
++ value = nval;
++ }
++ break;
++ }
++ p = trans + tlen;
++ if (*p)
++ p++;
++ }
++ }
++
+ nmz_set_lang(value);
+ }
+

Return to:

Send suggestions and report system problems to the System administrator.