diff options
-rw-r--r-- | doc/ex-meta1.texi | 10 | ||||
-rw-r--r-- | modules/mysql/mysql.c | 37 | ||||
-rw-r--r-- | modules/postgres/postgres.c | 32 |
3 files changed, 32 insertions, 47 deletions
diff --git a/doc/ex-meta1.texi b/doc/ex-meta1.texi index d74b49c..a62b4be 100644 --- a/doc/ex-meta1.texi +++ b/doc/ex-meta1.texi | |||
@@ -16,13 +16,12 @@ shared between the two smap databases. Thus, the module | |||
16 | initialization in @file{smapd.conf} looks like: | 16 | initialization in @file{smapd.conf} looks like: |
17 | 17 | ||
18 | @example | 18 | @example |
19 | module mysql mysql open config-group=smap | 19 | module mysql mysql config-group=smap |
20 | @end example | 20 | @end example |
21 | 21 | ||
22 | The @samp{open} parameter instructs the module to open the requested | 22 | The @samp{config-group} parameter refers to a group name in the |
23 | databases. The @samp{config-group} parameter refers to a group | 23 | default @file{/etc/my.cnf} file that contains information about the |
24 | name in the default @file{/etc/my.cnf} file that contains information | 24 | @acronym{MySQL} database and credentials for accessing it. |
25 | about the @acronym{MySQL} database and credentials for accessing it. | ||
26 | The following is a sample snippet from @file{/etc/my.cnf}: | 25 | The following is a sample snippet from @file{/etc/my.cnf}: |
27 | 26 | ||
28 | @example | 27 | @example |
@@ -61,7 +60,6 @@ The smap database is defined as follows: | |||
61 | @example | 60 | @example |
62 | @group | 61 | @group |
63 | database userdb mysql \ | 62 | database userdb mysql \ |
64 | defaultdb | ||
65 | query="SELECT user FROM userdb WHERE user='$key'" | 63 | query="SELECT user FROM userdb WHERE user='$key'" |
66 | positive-reply=OK | 64 | positive-reply=OK |
67 | @end group | 65 | @end group |
diff --git a/modules/mysql/mysql.c b/modules/mysql/mysql.c index 3d24542..315dd8b 100644 --- a/modules/mysql/mysql.c +++ b/modules/mysql/mysql.c | |||
@@ -31,9 +31,8 @@ | |||
31 | #include <smap/stream.h> | 31 | #include <smap/stream.h> |
32 | #include <smap/wordsplit.h> | 32 | #include <smap/wordsplit.h> |
33 | 33 | ||
34 | #define MDB_INIT 0x01 | 34 | #define MDB_OPEN 0x01 |
35 | #define MDB_OPEN 0x02 | 35 | #define MDB_DEFDB 0x02 |
36 | #define MDB_DEFDB 0x04 | ||
37 | 36 | ||
38 | struct mod_mysql_db { | 37 | struct mod_mysql_db { |
39 | int flags; | 38 | int flags; |
@@ -90,12 +89,6 @@ opendb(struct mod_mysql_db *db) | |||
90 | return 0; | 89 | return 0; |
91 | } | 90 | } |
92 | 91 | ||
93 | if (!(db->flags & MDB_INIT)) { | ||
94 | smap_error("%s: module settings do not include opendb flag", | ||
95 | db->name); | ||
96 | return 1; | ||
97 | } | ||
98 | |||
99 | if (!mysql_init(&db->mysql)) { | 92 | if (!mysql_init(&db->mysql)) { |
100 | smap_error("%s: not enough memory", db->name); | 93 | smap_error("%s: not enough memory", db->name); |
101 | return 1; | 94 | return 1; |
@@ -156,15 +149,27 @@ freedb(struct mod_mysql_db *db) | |||
156 | } | 149 | } |
157 | 150 | ||
158 | static int | 151 | static int |
152 | dbdeclared(struct mod_mysql_db *db) | ||
153 | { | ||
154 | return db->config_file || | ||
155 | db->config_group || | ||
156 | db->ssl_ca || | ||
157 | db->host || | ||
158 | db->user || | ||
159 | db->password || | ||
160 | db->database || | ||
161 | db->port || | ||
162 | db->socket; | ||
163 | } | ||
164 | |||
165 | |||
166 | static int | ||
159 | mod_init(int argc, char **argv) | 167 | mod_init(int argc, char **argv) |
160 | { | 168 | { |
161 | int rc; | 169 | int rc; |
162 | int opendb = 0; | ||
163 | 170 | ||
164 | dbgid = smap_debug_alloc("mysql"); | 171 | dbgid = smap_debug_alloc("mysql"); |
165 | struct smap_option init_option[] = { | 172 | struct smap_option init_option[] = { |
166 | { SMAP_OPTSTR(open), smap_opt_bool, | ||
167 | &opendb }, | ||
168 | { SMAP_OPTSTR(config-file), smap_opt_string, | 173 | { SMAP_OPTSTR(config-file), smap_opt_string, |
169 | &def_db.config_file }, | 174 | &def_db.config_file }, |
170 | { SMAP_OPTSTR(config-group), smap_opt_string, | 175 | { SMAP_OPTSTR(config-group), smap_opt_string, |
@@ -197,8 +202,7 @@ mod_init(int argc, char **argv) | |||
197 | rc = smap_parseopt(init_option, argc, argv, 0, NULL); | 202 | rc = smap_parseopt(init_option, argc, argv, 0, NULL); |
198 | if (rc) | 203 | if (rc) |
199 | return rc; | 204 | return rc; |
200 | if (opendb) | 205 | def_db.flags = 0; |
201 | def_db.flags = MDB_INIT; | ||
202 | return 0; | 206 | return 0; |
203 | } | 207 | } |
204 | 208 | ||
@@ -262,7 +266,7 @@ mod_init_db(const char *dbid, int argc, char **argv) | |||
262 | return NULL; | 266 | return NULL; |
263 | } | 267 | } |
264 | 268 | ||
265 | db->flags = MDB_INIT | flags; | 269 | db->flags = flags; |
266 | db->name = dbid; | 270 | db->name = dbid; |
267 | db->config_file = config_file; | 271 | db->config_file = config_file; |
268 | db->config_group = config_group; | 272 | db->config_group = config_group; |
@@ -278,6 +282,9 @@ mod_init_db(const char *dbid, int argc, char **argv) | |||
278 | db->negative_reply = negative_reply; | 282 | db->negative_reply = negative_reply; |
279 | db->onerror_reply = onerror_reply; | 283 | db->onerror_reply = onerror_reply; |
280 | 284 | ||
285 | if (!dbdeclared(db)) | ||
286 | db->flags |= MDB_DEFDB; | ||
287 | |||
281 | return (smap_database_t) db; | 288 | return (smap_database_t) db; |
282 | } | 289 | } |
283 | 290 | ||
diff --git a/modules/postgres/postgres.c b/modules/postgres/postgres.c index 3e696ca..1218564 100644 --- a/modules/postgres/postgres.c +++ b/modules/postgres/postgres.c | |||
@@ -32,9 +32,8 @@ | |||
32 | #include <smap/stream.h> | 32 | #include <smap/stream.h> |
33 | #include <smap/wordsplit.h> | 33 | #include <smap/wordsplit.h> |
34 | 34 | ||
35 | #define MDB_INIT 0x01 | 35 | #define MDB_OPEN 0x01 |
36 | #define MDB_OPEN 0x02 | 36 | #define MDB_DEFDB 0x02 |
37 | #define MDB_DEFDB 0x04 | ||
38 | 37 | ||
39 | struct modpg_db { | 38 | struct modpg_db { |
40 | int flags; | 39 | int flags; |
@@ -83,12 +82,6 @@ opendb(struct modpg_db *db) | |||
83 | return 0; | 82 | return 0; |
84 | } | 83 | } |
85 | 84 | ||
86 | if (!(db->flags & MDB_INIT)) { | ||
87 | smap_error("%s: module settings do not include opendb flag", | ||
88 | db->name); | ||
89 | return 1; | ||
90 | } | ||
91 | |||
92 | db->pgconn = PQconnectdb(db->conninfo); | 85 | db->pgconn = PQconnectdb(db->conninfo); |
93 | if (!db->pgconn) { | 86 | if (!db->pgconn) { |
94 | smap_error("%s: out of memory", db->name); | 87 | smap_error("%s: out of memory", db->name); |
@@ -202,12 +195,9 @@ modpg_init(int argc, char **argv) | |||
202 | { | 195 | { |
203 | int i; | 196 | int i; |
204 | int rc; | 197 | int rc; |
205 | int opendb = 0; | ||
206 | 198 | ||
207 | dbgid = smap_debug_alloc("postgres"); | 199 | dbgid = smap_debug_alloc("postgres"); |
208 | struct smap_option init_option[] = { | 200 | struct smap_option init_option[] = { |
209 | { SMAP_OPTSTR(open), smap_opt_bool, | ||
210 | &opendb }, | ||
211 | { SMAP_OPTSTR(query), smap_opt_string, | 201 | { SMAP_OPTSTR(query), smap_opt_string, |
212 | &def_db.template }, | 202 | &def_db.template }, |
213 | { SMAP_OPTSTR(positive-reply), smap_opt_string, | 203 | { SMAP_OPTSTR(positive-reply), smap_opt_string, |
@@ -227,13 +217,7 @@ modpg_init(int argc, char **argv) | |||
227 | smap_error("out of memory"); | 217 | smap_error("out of memory"); |
228 | return 1; | 218 | return 1; |
229 | } | 219 | } |
230 | } | 220 | def_db.flags = 0; |
231 | if (opendb) { | ||
232 | if (!def_db.conninfo) { | ||
233 | smap_error("no connection info given"); | ||
234 | return 1; | ||
235 | } | ||
236 | def_db.flags = MDB_INIT; | ||
237 | def_db.name = "postgres"; | 221 | def_db.name = "postgres"; |
238 | } | 222 | } |
239 | return 0; | 223 | return 0; |
@@ -251,8 +235,6 @@ modpg_init_db(const char *dbid, int argc, char **argv) | |||
251 | int i; | 235 | int i; |
252 | 236 | ||
253 | struct smap_option init_option[] = { | 237 | struct smap_option init_option[] = { |
254 | { SMAP_OPTSTR(defaultdb), smap_opt_bitmask, | ||
255 | &flags, { MDB_DEFDB } }, | ||
256 | { SMAP_OPTSTR(query), smap_opt_string, | 238 | { SMAP_OPTSTR(query), smap_opt_string, |
257 | &query }, | 239 | &query }, |
258 | { SMAP_OPTSTR(positive-reply), smap_opt_string, | 240 | { SMAP_OPTSTR(positive-reply), smap_opt_string, |
@@ -279,12 +261,10 @@ modpg_init_db(const char *dbid, int argc, char **argv) | |||
279 | free(db); | 261 | free(db); |
280 | return NULL; | 262 | return NULL; |
281 | } | 263 | } |
282 | } else if (!(flags & MDB_DEFDB)) { | 264 | } else |
283 | smap_error("%s: no connection info given", dbid); | 265 | flags |= MDB_DEFDB; |
284 | return NULL; | ||
285 | } | ||
286 | 266 | ||
287 | db->flags = MDB_INIT | flags; | 267 | db->flags = flags; |
288 | db->name = dbid; | 268 | db->name = dbid; |
289 | db->template = query; | 269 | db->template = query; |
290 | db->positive_reply = positive_reply; | 270 | db->positive_reply = positive_reply; |