dovecot-2.0: lib-sql: Fail if trying to register a duplicate sql...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Aug 12 19:59:06 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/11538925cbbb
changeset: 11991:11538925cbbb
user: Timo Sirainen <tss at iki.fi>
date: Thu Aug 12 17:59:03 2010 +0100
description:
lib-sql: Fail if trying to register a duplicate sql driver.
diffstat:
src/lib-sql/sql-api.c | 32 ++++++++++++++++++--------------
1 files changed, 18 insertions(+), 14 deletions(-)
diffs (58 lines):
diff -r 4d8ae218af73 -r 11538925cbbb src/lib-sql/sql-api.c
--- a/src/lib-sql/sql-api.c Thu Aug 12 17:31:46 2010 +0100
+++ b/src/lib-sql/sql-api.c Thu Aug 12 17:59:03 2010 +0100
@@ -21,8 +21,25 @@
array_free(&sql_drivers);
}
+static const struct sql_db *sql_driver_lookup(const char *name)
+{
+ const struct sql_db *const *drivers;
+ unsigned int i, count;
+
+ drivers = array_get(&sql_drivers, &count);
+ for (i = 0; i < count; i++) {
+ if (strcmp(drivers[i]->name, name) == 0)
+ return drivers[i];
+ }
+ return NULL;
+}
+
void sql_driver_register(const struct sql_db *driver)
{
+ if (sql_driver_lookup(driver->name) != NULL) {
+ i_fatal("sql_driver_register(%s): Already registered",
+ driver->name);
+ }
array_append(&sql_drivers, &driver, 1);
}
@@ -40,19 +57,6 @@
}
}
-static const struct sql_db *sql_find_driver(const char *name)
-{
- const struct sql_db *const *drivers;
- unsigned int i, count;
-
- drivers = array_get(&sql_drivers, &count);
- for (i = 0; i < count; i++) {
- if (strcmp(drivers[i]->name, name) == 0)
- return drivers[i];
- }
- return NULL;
-}
-
struct sql_db *sql_init(const char *db_driver, const char *connect_string)
{
const struct sql_db *driver;
@@ -60,7 +64,7 @@
i_assert(connect_string != NULL);
- driver = sql_find_driver(db_driver);
+ driver = sql_driver_lookup(db_driver);
if (driver == NULL)
i_fatal("Unknown database driver '%s'", db_driver);
More information about the dovecot-cvs
mailing list