db-sql.c revision 2fbc2a7c65d30e46803195ebb4547176b85c22c7
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen/* Copyright (C) 2003-2004 Timo Sirainen */
2615df45a8027948a474abe5e817b34b0499c171Timo Sirainen#define DEF(type, name) { type, #name, offsetof(struct sql_settings, name) }
9393445a6dabd17ce62ebfc12fd73545b0065824Timo Sirainen MEMBER(password_query) "SELECT password FROM users WHERE userid = '%u'",
ef50336eefcb9ba99f73c6af37420eaf8857a39bTimo Sirainen MEMBER(user_query) "SELECT home, uid, gid FROM users WHERE userid = '%u'",
a27e065f1a1f91c7fbdf7c2ea1c387441af0cbb3Timo Sirainenstatic struct sql_connection *connections = NULL;
dca6d617a23e3f93af3b8df59acb46478179fe55Timo Sirainenstatic struct sql_connection *sql_conn_find(const char *config_path)
a27e065f1a1f91c7fbdf7c2ea1c387441af0cbb3Timo Sirainen for (conn = connections; conn != NULL; conn = conn->next) {
917498e6f84969d2b93410c1e479735abe8e0ed7Timo Sirainen if (strcmp(conn->config_path, config_path) == 0)
c0a87e5f3316a57e6f915882fa1951d0fbb74a61Timo Sirainenstatic const char *parse_setting(const char *key, const char *value,
9fc97c8aa8190df87624d214bcc5d0b5362bec93Timo Sirainen return parse_setting_from_defs(conn->pool, setting_defs,
533bfba437e4120aa29dd45bca2aa87e30ee28a2Timo Sirainenstruct sql_connection *db_sql_init(const char *config_path)
dca6d617a23e3f93af3b8df59acb46478179fe55Timo Sirainen pool = pool_alloconly_create("sql_connection", 1024);
b039dabf4c53f72454e795930e7643b6e0e625f9Timo Sirainen conn->config_path = p_strdup(pool, config_path);
4ba962c3e78f140facdcfb1e093c4c46de75ae24Timo Sirainen if (!settings_read(config_path, NULL, parse_setting, NULL, conn))
a27e065f1a1f91c7fbdf7c2ea1c387441af0cbb3Timo Sirainen i_fatal("sql: driver not set in configuration file %s",
91b203fd2132510a47a4b34252c0ae0efd688a19Timo Sirainen i_fatal("sql: connect string not set in configuration file %s",