/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ Copyright (C) 2001-2003 Kern Sibbald and John Walker
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
#ifdef HAVE_BACULA_DB
+uint32_t bacula_db_version = 0;
+
/* Forward referenced functions */
-extern char *working_directory;
+extern const char *working_directory;
/* List of open databases */
static BQUEUE db_list = {&db_list, &db_list};
} else {
sep = '/';
}
- Mmsg(&dbf, "%s%c%s-%s", working_directory, sep, mdb->db_name, name);
+ Mmsg(dbf, "%s%c%s-%s", working_directory, sep, mdb->db_name, name);
return dbf;
}
* never have errors, or it is really fatal.
*/
B_DB *
-db_init_database(char *db_name, char *db_user, char *db_password)
+db_init_database(JCR *jcr, char *db_name, char *db_user, char *db_password,
+ char *db_address, int db_port, char *db_socket,
+ int mult_db_connections)
{
B_DB *mdb;
P(mutex); /* lock DB queue */
}
}
Dmsg0(200, "db_open first time\n");
- mdb = (B_DB *) malloc(sizeof(B_DB));
+ mdb = (B_DB *)malloc(sizeof(B_DB));
memset(mdb, 0, sizeof(B_DB));
Dmsg0(200, "DB struct init\n");
mdb->db_name = bstrdup(db_name);
Dmsg0(200, "Done db_open_database()\n");
mdb->cfd = -1;
V(mutex);
+ Jmsg(jcr, M_WARNING, 0, _("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"));
+ Jmsg(jcr, M_WARNING, 0, _("WARNING!!!! The Internal Database is for TESTING ONLY!\n"));
+ Jmsg(jcr, M_WARNING, 0, _("You should use SQLite, PostgreSQL, or MySQL\n"));
+
return mdb;
}
* which are returned in the errmsg
*/
int
-db_open_database(B_DB *mdb)
+db_open_database(JCR *jcr, B_DB *mdb)
{
char *dbf;
int fd, badctl;
- int errstat;
off_t filend;
+ int errstat;
Dmsg1(200, "db_open_database() %s\n", mdb->db_name);
P(mutex);
-#ifdef needed
- if ((errstat = pthread_mutex_init(&(mdb->mutex), NULL)) != 0) {
- Mmsg1(&mdb->errmsg, "Unable to initialize DB mutex. ERR=%s\n", strerror(errstat));
- V(mutex);
- return 0;
- }
- db_lock(mdb); /* test it once */
- db_unlock(mdb);
-#endif
- if (rwl_init(&mdb->lock) != 0) {
- Mmsg1(&mdb->errmsg, "Unable to initialize DB lock. ERR=%s\n", strerror(errno));
+ if ((errstat=rwl_init(&mdb->lock)) != 0) {
+ Mmsg1(&mdb->errmsg, _("Unable to initialize DB lock. ERR=%s\n"), strerror(errstat));
V(mutex);
return 0;
}
mdb->cfd = open(dbf, O_CREAT|O_RDWR, 0600);
free_memory(dbf);
if (mdb->cfd < 0) {
- Mmsg2(&mdb->errmsg, "Unable to open Catalog DB control file %s: ERR=%s\n",
+ Mmsg2(&mdb->errmsg, _("Unable to open Catalog DB control file %s: ERR=%s\n"),
dbf, strerror(errno));
V(mutex);
return 0;
badctl = 0;
lseek(mdb->cfd, 0, SEEK_SET); /* seek to begining of control file */
if (read(mdb->cfd, &mdb->control, sizeof(mdb->control)) != sizeof(mdb->control)) {
- Mmsg1(&mdb->errmsg, "Error reading catalog DB control file. ERR=%s\n", strerror(errno));
+ Mmsg1(&mdb->errmsg, _("Error reading catalog DB control file. ERR=%s\n"), strerror(errno));
badctl = 1;
} else if (mdb->control.bdb_version != BDB_VERSION) {
- Mmsg2(&mdb->errmsg, "Error, catalog DB control file wrong version. \
+ Mmsg2(&mdb->errmsg, _("Error, catalog DB control file wrong version. \
Wanted %d, got %d\n\
-Please reinitialize the working directory.\n",
+Please reinitialize the working directory.\n"),
BDB_VERSION, mdb->control.bdb_version);
badctl = 1;
}
+ bacula_db_version = mdb->control.bdb_version;
if (badctl) {
V(mutex);
return 0;
return 1;
}
-void db_close_database(B_DB *mdb)
+void db_close_database(JCR *jcr, B_DB *mdb)
{
P(mutex);
mdb->ref_count--;
if (mdb->filesetfd) {
fclose(mdb->filesetfd);
}
-/* pthread_mutex_destroy(&mdb->mutex); */
rwl_destroy(&mdb->lock);
free_pool_memory(mdb->errmsg);
free_pool_memory(mdb->cmd);
void db_escape_string(char *snew, char *old, int len)
{
- strcpy(snew, old);
+ memset(snew, 0, len);
+ bstrncpy(snew, old, len);
}
char *db_strerror(B_DB *mdb)
}
}
+/*
+ * Start a transaction. This groups inserts and makes things
+ * much more efficient. Usually started when inserting
+ * file attributes.
+ */
+void db_start_transaction(JCR *jcr, B_DB *mdb)
+{
+}
+
+void db_end_transaction(JCR *jcr, B_DB *mdb)
+{
+}
+
+
#endif /* HAVE_BACULA_DB */