+B_DB *db_init(JCR *jcr, const char *db_driver, const char *db_name, const char *db_user,
+ const char *db_password, const char *db_address, int db_port,
+ const char *db_socket, int mult_db_connections)
+{
+#ifdef HAVE_DBI
+ char *p;
+ if (!db_driver) {
+ Jmsg0(jcr, M_ABORT, 0, _("Driver type not specified in Catalog resource.\n"));
+ }
+ if (strlen(db_driver) < 5 || db_driver[3] != ':' || strncasecmp(db_driver, "dbi", 3) != 0) {
+ Jmsg0(jcr, M_ABORT, 0, _("Invalid driver type, must be \"dbi:<type>\"\n"));
+ }
+ p = (char *)(db_driver + 4);
+ if (strcasecmp(p, "mysql") == 0) {
+ db_type = SQL_TYPE_MYSQL;
+ } else if (strcasecmp(p, "postgresql") == 0) {
+ db_type = SQL_TYPE_POSTGRESQL;
+ } else if (strcasecmp(p, "sqlite") == 0) {
+ db_type = SQL_TYPE_SQLITE;
+ } else {
+ Jmsg1(jcr, M_ABORT, 0, _("Unknown database type: %s\n"), p);
+ }
+#elif HAVE_MYSQL
+ db_type = SQL_TYPE_MYSQL;
+#elif HAVE_POSTGRESQL
+ db_type = SQL_TYPE_POSTGRESQL;
+#elif HAVE_SQLITE
+ db_type = SQL_TYPE_SQLITE;
+#elif HAVE_SQLITE3
+ db_type = SQL_TYPE_SQLITE;
+#endif
+
+ return db_init_database(jcr, db_name, db_user, db_password, db_address,
+ db_port, db_socket, mult_db_connections);
+}
+
+dbid_list::dbid_list()
+{
+ memset(this, 0, sizeof(dbid_list));
+ max_ids = 1000;
+ DBId = (DBId_t *)malloc(max_ids * sizeof(DBId_t));
+ num_ids = num_seen = tot_ids = 0;
+ PurgedFiles = NULL;
+}
+
+dbid_list::~dbid_list()
+{
+ free(DBId);
+}
+
+