summaryrefslogtreecommitdiff
path: root/liblangtag/liblangtag-0.2-datadir.patch
blob: 55b2a3a3d06b4c7af49c274721cae40937d94f4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
--- misc/liblangtag-0.2/liblangtag/lt-database.c	2012-01-31 11:27:16.000000000 +0100
+++ misc/build/liblangtag-0.2/liblangtag/lt-database.c	2012-06-12 01:32:57.354123185 +0200
@@ -26,6 +26,7 @@
 #include "lt-mem.h"
 #include "lt-ext-module.h"
 #include "lt-database.h"
+#include <string.h>
 
 
 /**
@@ -44,10 +45,41 @@
 static lt_grandfathered_db_t *__db_grandfathered = NULL;
 static lt_redundant_db_t     *__db_redundant = NULL;
 
+/* this is a hack and might need some proper runtime de/allocation, but ... */
+#define DATADIR_MAX_PATH_LEN 512
+static char lt_db_datadir[DATADIR_MAX_PATH_LEN] = { 0 };
+
 
 /*< private >*/
 
 /*< public >*/
+
+/**
+ * lt_db_set_datadir:
+ *
+ * Set the directory where database files are installed.
+ * This overrides the default prefix= location if called before 
+ * lt_db_initialize().
+ */
+void
+lt_db_set_datadir(const char* path)
+{
+    strncpy( lt_db_datadir, path, DATADIR_MAX_PATH_LEN-1);
+    lt_db_datadir[DATADIR_MAX_PATH_LEN-1] = 0;
+}
+
+/**
+ * lt_db_get_datadir:
+ *
+ * Obtain the directory where database files are installed.
+ * Only if set with lt_db_set_datadir().
+ */
+const char*
+lt_db_get_datadir(void)
+{
+    return lt_db_datadir;
+}
+
 /**
  * lt_db_initialize:
  *
--- misc/liblangtag-0.2/liblangtag/lt-database.h	2012-01-31 11:27:04.000000000 +0100
+++ misc/build/liblangtag-0.2/liblangtag/lt-database.h	2012-06-12 00:23:04.345618028 +0200
@@ -37,6 +37,8 @@
 
 G_BEGIN_DECLS
 
+void                   lt_db_set_datadir      (const char*);
+const char*            lt_db_get_datadir      (void);
 void                   lt_db_initialize       (void);
 void                   lt_db_finalize         (void);
 lt_lang_db_t          *lt_db_get_lang         (void);
--- misc/liblangtag-0.2/liblangtag/lt-xml.c	2012-02-02 09:54:51.000000000 +0100
+++ misc/build/liblangtag-0.2/liblangtag/lt-xml.c	2012-06-12 00:23:04.477618565 +0200
@@ -45,7 +45,20 @@
 
 G_LOCK_DEFINE_STATIC (lt_xml);
 
+
+/* defined in lt-database.c */
+extern const char* lt_db_get_datadir(void);
+
 /*< private >*/
+static const char*
+lt_xml_get_datadir()
+{
+    const char* datadir = lt_db_get_datadir();
+    if (datadir && *datadir)
+        return datadir;
+    return REGDATADIR;
+}
+
 static gboolean
 lt_xml_read_subtag_registry(lt_xml_t  *xml,
 			    GError   **error)
@@ -62,7 +75,7 @@
 	if (!g_file_test(regfile, G_FILE_TEST_EXISTS)) {
 		g_free(regfile);
 #endif
-	regfile = g_build_filename(REGDATADIR, "language-subtag-registry.xml", NULL);
+	regfile = g_build_filename(lt_xml_get_datadir(), "language-subtag-registry.xml", NULL);
 #ifdef GNOME_ENABLE_DEBUG
 	}
 #endif
@@ -120,7 +133,7 @@
 	if (!g_file_test(regfile, G_FILE_TEST_EXISTS)) {
 		g_free(regfile);
 #endif
-	regfile = g_build_filename(REGDATADIR, "common", "bcp47", filename, NULL);
+	regfile = g_build_filename(lt_xml_get_datadir(), "common", "bcp47", filename, NULL);
 #ifdef GNOME_ENABLE_DEBUG
 	}
 #endif