]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/bdb.c
Bring 1.36.0 up to current 1.37 level
[bacula/bacula] / bacula / src / cats / bdb.c
index d35bc53dac495c30992b49aa380480dc7aca6ccd..1cf8c3a05b37d5f0f056f22e674e0b3343287548 100644 (file)
@@ -14,7 +14,7 @@
 
 
 /*
-   Copyright (C) 2000-2003 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};
@@ -79,7 +81,7 @@ static POOLMEM *make_filename(B_DB *mdb, char *name)
    } 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;
 }
 
@@ -100,7 +102,9 @@ int bdb_write_control_file(B_DB *mdb)
  * never have errors, or it is really fatal.
  */
 B_DB *
-db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
+db_init_database(JCR *jcr, char const *db_name, char const *db_user, char const *db_password,
+                char const *db_address, int db_port, char const *db_socket, 
+                int mult_db_connections)
 {
    B_DB *mdb;
    P(mutex);                         /* lock DB queue */
@@ -128,8 +132,9 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
    Dmsg0(200, "Done db_open_database()\n");
    mdb->cfd = -1;
    V(mutex);
-   Jmsg(jcr, M_WARNING, 0, _("WARNING!!!! The Internal Database is for TESTING ONLY!\n"));
-   Jmsg(jcr, M_WARNING, 0, _("You should use either SQLite or MySQL\n"));
+   Jmsg(jcr, M_WARNING, 0, _("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"));
+   Jmsg(jcr, M_WARNING, 0, _("WARNING!!!! The Internal Database is NOT OPERATIONAL!\n"));
+   Jmsg(jcr, M_WARNING, 0, _("You should use SQLite, PostgreSQL, or MySQL\n"));
 
    return mdb;
 }
@@ -139,7 +144,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
  * which are returned in the errmsg
  */
 int
-db_open_database(void *jcr, B_DB *mdb)
+db_open_database(JCR *jcr, B_DB *mdb)
 {
    char *dbf;
    int fd, badctl;
@@ -225,6 +230,7 @@ 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;
@@ -233,7 +239,7 @@ Please reinitialize the working directory.\n"),
    return 1;
 }
 
-void db_close_database(void *jcr, B_DB *mdb)           
+void db_close_database(JCR *jcr, B_DB *mdb)           
 {
    P(mutex);
    mdb->ref_count--;
@@ -262,7 +268,6 @@ void db_close_database(void *jcr, B_DB *mdb)
       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);
@@ -275,7 +280,8 @@ void db_close_database(void *jcr, B_DB *mdb)
 
 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)
@@ -283,7 +289,7 @@ char *db_strerror(B_DB *mdb)
    return mdb->errmsg;
 }
 
-int db_sql_query(B_DB *mdb, char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+int db_sql_query(B_DB *mdb, char const *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
    return 1;
 }
@@ -424,7 +430,7 @@ int bdb_open_media_file(B_DB *mdb)
 }
 
 
-void _db_lock(char *file, int line, B_DB *mdb)
+void _db_lock(const char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writelock(&mdb->lock)) != 0) {
@@ -433,7 +439,7 @@ void _db_lock(char *file, int line, B_DB *mdb)
    }
 }    
 
-void _db_unlock(char *file, int line, B_DB *mdb)
+void _db_unlock(const char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&mdb->lock)) != 0) {
@@ -447,11 +453,11 @@ void _db_unlock(char *file, int line, B_DB *mdb)
  *  much more efficient. Usually started when inserting 
  *  file attributes.
  */
-void db_start_transaction(void *jcr, B_DB *mdb)
+void db_start_transaction(JCR *jcr, B_DB *mdb)
 {
 }
 
-void db_end_transaction(void *jcr, B_DB *mdb)
+void db_end_transaction(JCR *jcr, B_DB *mdb)
 {
 }