]> git.sur5r.net Git - bacula/bacula/commitdiff
Add jcr to DB arguments
authorKern Sibbald <kern@sibbald.com>
Fri, 17 Jan 2003 09:29:48 +0000 (09:29 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 17 Jan 2003 09:29:48 +0000 (09:29 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@300 91ce42f0-d328-0410-95d8-f526ca767f89

40 files changed:
bacula/kernstodo
bacula/src/cats/bdb.c
bacula/src/cats/cats.h
bacula/src/cats/mysql.c
bacula/src/cats/protos.h
bacula/src/cats/sql.c
bacula/src/cats/sql_create.c
bacula/src/cats/sql_delete.c
bacula/src/cats/sql_find.c
bacula/src/cats/sql_get.c
bacula/src/cats/sql_list.c
bacula/src/cats/sql_update.c
bacula/src/cats/sqlite.c
bacula/src/dird/autoprune.c
bacula/src/dird/backup.c
bacula/src/dird/catreq.c
bacula/src/dird/dird.c
bacula/src/dird/fd_cmds.c
bacula/src/dird/job.c
bacula/src/dird/msgchan.c
bacula/src/dird/newvol.c
bacula/src/dird/protos.h
bacula/src/dird/recycle.c
bacula/src/dird/restore.c
bacula/src/dird/scheduler.c
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_output.c
bacula/src/dird/ua_prune.c
bacula/src/dird/ua_purge.c
bacula/src/dird/ua_restore.c
bacula/src/dird/ua_select.c
bacula/src/dird/verify.c
bacula/src/findlib/find_one.c
bacula/src/lib/mem_pool.c
bacula/src/lib/message.c
bacula/src/lib/smartall.c
bacula/src/stored/append.c
bacula/src/stored/bscan.c
bacula/src/stored/record.c
bacula/src/tools/dbcheck.c

index ff03c1d4cba6aefa23c12b901db1d0f036605d13..3f36b9c2ad358945be3f3534e07fcf4a45109c2f 100644 (file)
@@ -16,6 +16,7 @@ Testing to do: (painful)
 - blocksize recognition code.
 
 For 1.29 release:
+- Zap sd_auth_key after use
 - Priority job to go to top of list.
 - Add Bar code reading capabilities (new mtx-changer)
 - Add include list to end of chain in findlib
index c19fdc5b79ce840b4bdad5bc88438ed71ea46a76..7ed4282616ab7f8b0aeb2a818be570fc0a952ecd 100644 (file)
@@ -14,7 +14,7 @@
 
 
 /*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2000-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
@@ -114,7 +114,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
       }
    }
    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);
@@ -127,7 +127,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
    qinsert(&db_list, &mdb->bq);       /* put db in list */
    Dmsg0(200, "Done db_open_database()\n");
    mdb->cfd = -1;
-   mdb->jcr = jcr;
    V(mutex);
    return mdb;
 }
@@ -137,7 +136,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(B_DB *mdb)
+db_open_database(void *jcr, B_DB *mdb)
 {
    char *dbf;
    int fd, badctl;
@@ -231,7 +230,7 @@ Please reinitialize the working directory.\n"),
    return 1;
 }
 
-void db_close_database(B_DB *mdb)           
+void db_close_database(void *jcr, B_DB *mdb)           
 {
    P(mutex);
    mdb->ref_count--;
@@ -445,11 +444,11 @@ void _db_unlock(char *file, int line, B_DB *mdb)
  *  much more efficient. Usually started when inserting 
  *  file attributes.
  */
-void db_start_transaction(B_DB *mdb)
+void db_start_transaction(void *jcr, B_DB *mdb)
 {
 }
 
-void db_end_transaction(B_DB *mdb)
+void db_end_transaction(void *jcr, B_DB *mdb)
 {
 }
 
index 3ae8a38b2f0772f0b88feb662fe85799d1954183..c65ca3362f406816ec1105d8698a4071171db7b9 100644 (file)
@@ -100,7 +100,6 @@ typedef struct s_db {
    uint32_t cached_path_id;           /* cached path id */
    int transaction;                   /* transaction started */
    int changes;                       /* changes during transaction */
-   void *jcr;                         /* JCR or NULL */
    POOLMEM *fname;                    /* Filename only */
    POOLMEM *path;                     /* Path only */
    POOLMEM *esc_name;                 /* Escaped file/path name */
@@ -170,7 +169,6 @@ typedef struct s_db {
    int cached_path_len;               /* length of cached path */
    uint32_t cached_path_id;
    int changes;                       /* changes made to db */
-   void *jcr;                         /* JCR or NULL */
    POOLMEM *fname;                    /* Filename only */
    POOLMEM *path;                     /* Path only */
    POOLMEM *esc_name;                 /* Escaped file/path name */
@@ -239,17 +237,16 @@ typedef struct s_db {
    POOLMEM *cached_path;
    int cached_path_len;               /* length of cached path */
    uint32_t cached_path_id;
-   void *jcr;                         /* JCR or NULL */
 } B_DB;
 
 #endif /* HAVE_MYSQL */
 #endif /* HAVE_SQLITE */
 
 /* Use for better error location printing */
-#define UPDATE_DB(db, cmd) UpdateDB(__FILE__, __LINE__, db, cmd)
-#define INSERT_DB(db, cmd) InsertDB(__FILE__, __LINE__, db, cmd)
-#define QUERY_DB(db, cmd) QueryDB(__FILE__, __LINE__, db, cmd)
-#define DELETE_DB(db, cmd) DeleteDB(__FILE__, __LINE__, db, cmd)
+#define UPDATE_DB(jcr, db, cmd) UpdateDB(__FILE__, __LINE__, jcr, db, cmd)
+#define INSERT_DB(jcr, db, cmd) InsertDB(__FILE__, __LINE__, jcr, db, cmd)
+#define QUERY_DB(jcr, db, cmd) QueryDB(__FILE__, __LINE__, jcr, db, cmd)
+#define DELETE_DB(jcr, db, cmd) DeleteDB(__FILE__, __LINE__, jcr, db, cmd)
 
 
 #else    /* not __SQL_C */
index 6afe546e1c49ae9c56e541e29a11739cacf04aa6..e89fa92ebec021fedbf2bc0232532babab93f34c 100644 (file)
@@ -87,7 +87,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
    mdb->path = get_pool_memory(PM_FNAME);
    mdb->esc_name = get_pool_memory(PM_FNAME);
    qinsert(&db_list, &mdb->bq);           /* put db in list */
-   mdb->jcr = jcr;
    V(mutex);
    return mdb;
 }
@@ -97,7 +96,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(B_DB *mdb)
+db_open_database(void *jcr, B_DB *mdb)
 {
    int errstat;
 
@@ -157,7 +156,7 @@ It is probably not running or your password is incorrect.\n"),
       return 0;
    }
 
-   if (!check_tables_version(mdb)) {
+   if (!check_tables_version(jcr, mdb)) {
       V(mutex);
       return 0;
    }
@@ -168,7 +167,7 @@ It is probably not running or your password is incorrect.\n"),
 }
 
 void
-db_close_database(B_DB *mdb)
+db_close_database(void *jcr, B_DB *mdb)
 {
    P(mutex);
    mdb->ref_count--;
@@ -209,7 +208,7 @@ db_close_database(B_DB *mdb)
  * For MySQL, NULL causes the auto-increment value
  *  to be updated.
  */
-int db_next_index(B_DB *mdb, char *table, char *index)
+int db_next_index(void *jcr, B_DB *mdb, char *table, char *index)
 {
    strcpy(index, "NULL");
    return 1;
index 0d38ed6563ac8e6539f815092ab16dfafdd08f7b..c1c4111dc87116641f566589e569d8840c0fca1a 100644 (file)
 
 /* sql.c */
 B_DB *db_init_database(void *jcr, char *db_name, char *db_user, char *db_password);
-int db_open_database(B_DB *db);
-void db_close_database(B_DB *db);
+int db_open_database(void *jcr, B_DB *db);
+void db_close_database(void *jcr, B_DB *db);
 void db_escape_string(char *snew, char *old, int len);
 char *db_strerror(B_DB *mdb);
-int get_sql_record_max(B_DB *mdb);
-int db_next_index(B_DB *mdb, char *table, char *index);
+int get_sql_record_max(void *jcr, B_DB *mdb);
+int db_next_index(void *jcr, B_DB *mdb, char *table, char *index);
 int db_sql_query(B_DB *mdb, char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx);
-int check_tables_version(B_DB *mdb);
+int check_tables_version(void *jcr, B_DB *mdb);
 void _db_unlock(char *file, int line, B_DB *mdb);
 void _db_lock(char *file, int line, B_DB *mdb);
-void db_start_transaction(B_DB *mdb);
-void db_end_transaction(B_DB *mdb);
+void db_start_transaction(void *jcr, B_DB *mdb);
+void db_end_transaction(void *jcr, B_DB *mdb);
 
 /* create.c */
-int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar);
-int db_create_job_record(B_DB *db, JOB_DBR *jr);
-int db_create_media_record(B_DB *db, MEDIA_DBR *media_dbr);
-int db_create_client_record(B_DB *db, CLIENT_DBR *cr);
-int db_create_fileset_record(B_DB *db, FILESET_DBR *fsr);
-int db_create_pool_record(B_DB *db, POOL_DBR *pool_dbr);
-int db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jr);
+int db_create_file_attributes_record(void *jcr, B_DB *mdb, ATTR_DBR *ar);
+int db_create_job_record(void *jcr, B_DB *db, JOB_DBR *jr);
+int db_create_media_record(void *jcr, B_DB *db, MEDIA_DBR *media_dbr);
+int db_create_client_record(void *jcr, B_DB *db, CLIENT_DBR *cr);
+int db_create_fileset_record(void *jcr, B_DB *db, FILESET_DBR *fsr);
+int db_create_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr);
+int db_create_jobmedia_record(void *jcr, B_DB *mdb, JOBMEDIA_DBR *jr);
 
 /* delete.c */
-int db_delete_pool_record(B_DB *db, POOL_DBR *pool_dbr);
-int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr);
+int db_delete_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr);
+int db_delete_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr);
 
 /* find.c */
-int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime);
-int db_find_last_jobid(B_DB *mdb, JOB_DBR *jr);
-int db_find_next_volume(B_DB *mdb, int index, MEDIA_DBR *mr);
+int db_find_job_start_time(void *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime);
+int db_find_last_jobid(void *jcr, B_DB *mdb, JOB_DBR *jr);
+int db_find_next_volume(void *jcr, B_DB *mdb, int index, MEDIA_DBR *mr);
 
 /* get.c */
-int db_get_pool_record(B_DB *db, POOL_DBR *pdbr);
-int db_get_client_record(B_DB *mdb, CLIENT_DBR *cr);
-int db_get_job_record(B_DB *mdb, JOB_DBR *jr);
-int db_get_job_volume_names(B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames);
-int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr);
-int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr);
-int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr);
-int db_get_num_media_records(B_DB *mdb);
-int db_get_num_pool_records(B_DB *mdb);
-int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t **ids);
-int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t **ids);
-int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t **ids);
-int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams);
-int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr);
+int db_get_pool_record(void *jcr, B_DB *db, POOL_DBR *pdbr);
+int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr);
+int db_get_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr);
+int db_get_job_volume_names(void *jcr, B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames);
+int db_get_file_attributes_record(void *jcr, B_DB *mdb, char *fname, FILE_DBR *fdbr);
+int db_get_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr);
+int db_get_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr);
+int db_get_num_media_records(void *jcr, B_DB *mdb);
+int db_get_num_pool_records(void *jcr, B_DB *mdb);
+int db_get_pool_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids);
+int db_get_client_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids);
+int db_get_media_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids);
+int db_get_job_volume_parameters(void *jcr, B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams);
+int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cdbr);
 
 
 /* list.c */
-void db_list_pool_records(B_DB *db, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_job_records(B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_job_totals(B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_files_for_job(B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx);
-void db_list_media_records(B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx);
-void db_list_jobmedia_records(B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx);
-int  db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose);
-void db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx);
+void db_list_pool_records(void *jcr, B_DB *db, DB_LIST_HANDLER sendit, void *ctx);
+void db_list_job_records(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
+void db_list_job_totals(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx);
+void db_list_files_for_job(void *jcr, B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx);
+void db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx);
+void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx);
+int  db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose);
+void db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx);
 
 /* update.c */
-int  db_update_job_start_record(B_DB *db, JOB_DBR *jr);
-int  db_update_job_end_record(B_DB *db, JOB_DBR *jr);
-int  db_update_pool_record(B_DB *db, POOL_DBR *pr);
-int  db_update_media_record(B_DB *db, MEDIA_DBR *mr);
-int  db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5); 
-int  db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId);
+int  db_update_job_start_record(void *jcr, B_DB *db, JOB_DBR *jr);
+int  db_update_job_end_record(void *jcr, B_DB *db, JOB_DBR *jr);
+int  db_update_pool_record(void *jcr, B_DB *db, POOL_DBR *pr);
+int  db_update_media_record(void *jcr, B_DB *db, MEDIA_DBR *mr);
+int  db_add_MD5_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *MD5);  
+int  db_mark_file_record(void *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId);
 
 #endif /* __SQL_PROTOS_H */
index 7862f436f1d686720374e8cf62d03c8b24b790c7..408a3f6900a64dafae7ff1a55a895dbea969c13e 100644 (file)
@@ -64,8 +64,8 @@ static int int_handler(void *ctx, int num_fields, char **row)
  *  calling subroutine sets and clears the mutex
  */
 
-/* Check that the tables conrrespond to the version we want */
-int check_tables_version(B_DB *mdb)
+/* Check that the tables correspond to the version we want */
+int check_tables_version(void *jcr, B_DB *mdb)
 {
    uint32_t version;
    char *query = "SELECT VersionId FROM Version";
@@ -75,7 +75,7 @@ int check_tables_version(B_DB *mdb)
    if (version != BDB_VERSION) {
       Mmsg(&mdb->errmsg, "Version error for database \"%s\". Wanted %d, got %d\n",
         mdb->db_name, BDB_VERSION, version);
-      Jmsg(mdb->jcr, M_FATAL, 0, mdb->errmsg);
+      Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
       return 0;
    }
    return 1;
@@ -83,11 +83,11 @@ int check_tables_version(B_DB *mdb)
 
 /* Utility routine for queries */
 int
-QueryDB(char *file, int line, B_DB *mdb, char *cmd)
+QueryDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
 {
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("query %s failed:\n%s\n"), cmd, sql_strerror(mdb));
-      j_msg(file, line, mdb->jcr, M_FATAL, 0, mdb->errmsg);
+      j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg);
       return 0;
    }
    mdb->result = sql_store_result(mdb);
@@ -101,11 +101,11 @@ QueryDB(char *file, int line, B_DB *mdb, char *cmd)
  *         1 on success
  */
 int
-InsertDB(char *file, int line, B_DB *mdb, char *cmd)
+InsertDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
 {
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg,  _("insert %s failed:\n%s\n"), cmd, sql_strerror(mdb));
-      j_msg(file, line, mdb->jcr, M_FATAL, 0, mdb->errmsg);
+      j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg);
       return 0;
    }
    if (mdb->have_insert_id) {
@@ -128,13 +128,13 @@ InsertDB(char *file, int line, B_DB *mdb, char *cmd)
  *          1 on success  
  */
 int
-UpdateDB(char *file, int line, B_DB *mdb, char *cmd)
+UpdateDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
 {
 
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("update %s failed:\n%s\n"), cmd, sql_strerror(mdb));
-      j_msg(file, line, mdb->jcr, M_ERROR, 0, mdb->errmsg);
-      j_msg(file, line, mdb->jcr, M_ERROR, 0, "%s\n", cmd);
+      j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      j_msg(file, line, jcr, M_ERROR, 0, "%s\n", cmd);
       return 0;
    }
    mdb->num_rows = sql_affected_rows(mdb);
@@ -154,12 +154,12 @@ UpdateDB(char *file, int line, B_DB *mdb, char *cmd)
  *          n number of rows affected
  */
 int
-DeleteDB(char *file, int line, B_DB *mdb, char *cmd)
+DeleteDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
 {
 
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("delete %s failed:\n%s\n"), cmd, sql_strerror(mdb));
-      j_msg(file, line, mdb->jcr, M_ERROR, 0, mdb->errmsg);
+      j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
       return -1;
    }
    mdb->changes++;
@@ -174,12 +174,12 @@ DeleteDB(char *file, int line, B_DB *mdb, char *cmd)
  * Returns: -1 on failure
  *         count on success
  */
-int get_sql_record_max(B_DB *mdb)
+int get_sql_record_max(void *jcr, B_DB *mdb)
 {
    SQL_ROW row;
    int stat = 0;
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       if ((row = sql_fetch_row(mdb)) == NULL) {
          Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb));
         stat = -1;
@@ -203,7 +203,7 @@ void _db_lock(char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writelock(&mdb->lock)) != 0) {
-      j_msg(file, line, mdb->jcr, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n",
+      e_msg(file, line, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n",
           strerror(errstat));
    }
 }    
@@ -212,7 +212,7 @@ void _db_unlock(char *file, int line, B_DB *mdb)
 {
    int errstat;
    if ((errstat=rwl_writeunlock(&mdb->lock)) != 0) {
-      j_msg(file, line, mdb->jcr, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",
+      e_msg(file, line, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",
           strerror(errstat));
    }
 }    
@@ -222,13 +222,13 @@ void _db_unlock(char *file, int line, B_DB *mdb)
  *  much more efficient. Usually started when inserting 
  *  file attributes.
  */
-void db_start_transaction(B_DB *mdb)
+void db_start_transaction(void *jcr, B_DB *mdb)
 {
 #ifdef xAVE_SQLITE
    db_lock(mdb);
    /* Allow only 10,000 changes per transaction */
    if (mdb->transaction && mdb->changes > 10000) {
-      db_end_transaction(mdb);
+      db_end_transaction(jcr, mdb);
    }
    if (!mdb->transaction) {   
       my_sqlite_query(mdb, "BEGIN");  /* begin transaction */
@@ -240,7 +240,7 @@ void db_start_transaction(B_DB *mdb)
 
 }
 
-void db_end_transaction(B_DB *mdb)
+void db_end_transaction(void *jcr, B_DB *mdb)
 {
 #ifdef xAVE_SQLITE
    db_lock(mdb);
@@ -259,7 +259,7 @@ void db_end_transaction(B_DB *mdb)
  *  and filename parts. They are returned in pool memory
  *  in the mdb structure.
  */
-void split_path_and_filename(B_DB *mdb, char *fname)
+void split_path_and_filename(void *jcr, B_DB *mdb, char *fname)
 {
    char *p, *f;
 
@@ -303,7 +303,7 @@ void split_path_and_filename(B_DB *mdb, char *fname)
       mdb->path[mdb->pnl] = 0;
    } else {
       Mmsg1(&mdb->errmsg, _("Path length is zero. File=%s\n"), fname);
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       mdb->path[0] = ' ';
       mdb->path[1] = 0;
       mdb->pnl = 1;
index 286a638f703e16b23d064a1ae13e1713b433ef98..242d813725adac3f0b3fb684936b9774d0398830 100644 (file)
  */
 
 /* Forward referenced subroutines */
-static int db_create_file_record(B_DB *mdb, ATTR_DBR *ar);
-static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar);
-static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar);
+static int db_create_file_record(void *jcr, B_DB *mdb, ATTR_DBR *ar);
+static int db_create_filename_record(void *jcr, B_DB *mdb, ATTR_DBR *ar);
+static int db_create_path_record(void *jcr, B_DB *mdb, ATTR_DBR *ar);
 
 
 /* Imported subroutines */
 extern void print_dashes(B_DB *mdb);
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
-extern int InsertDB(char *file, int line, B_DB *db, char *select_cmd);
-extern void split_path_and_filename(B_DB *mdb, char *fname);
+extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
+extern int InsertDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
+extern void split_path_and_filename(void *jcr, B_DB *mdb, char *fname);
 
 
 /* Create a new record for the Job
@@ -62,7 +62,7 @@ extern void split_path_and_filename(B_DB *mdb, char *fname);
  *         1 on success
  */
 int
-db_create_job_record(B_DB *mdb, JOB_DBR *jr)
+db_create_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    char dt[MAX_TIME_LENGTH];
    time_t stime;
@@ -79,7 +79,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr)
    JobTDate = (utime_t)stime;
 
    db_lock(mdb);
-   if (!db_next_index(mdb, "Job", JobId)) {
+   if (!db_next_index(jcr, mdb, "Job", JobId)) {
       jr->JobId = 0;
       db_unlock(mdb);
       return 0;
@@ -91,7 +91,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr)
           JobId, jr->Job, jr->Name, (char)(jr->Type), (char)(jr->Level), 
           (char)(jr->JobStatus), dt, edit_uint64(JobTDate, ed1));
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create DB Job record %s failed. ERR=%s\n"), 
            mdb->cmd, sql_strerror(mdb));
       jr->JobId = 0;
@@ -109,7 +109,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr)
  *         1 on success
  */
 int
-db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jm)
+db_create_jobmedia_record(void *jcr, B_DB *mdb, JOBMEDIA_DBR *jm)
 {
    int stat;
 
@@ -118,7 +118,7 @@ db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jm)
 JobId=%d AND MediaId=%d", jm->JobId, jm->MediaId);
 
    Dmsg0(30, mdb->cmd);
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 0) {
          Mmsg0(&mdb->errmsg, _("Create JobMedia failed. Record already exists.\n"));
@@ -139,7 +139,7 @@ VALUES (%u,%u,%u,%u,%u,%u,%u,%u)",
        jm->StartFile, jm->EndFile, jm->StartBlock, jm->EndBlock);
 
    Dmsg0(30, mdb->cmd);
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db JobMedia record %s failed. ERR=%s\n"), mdb->cmd, 
         sql_strerror(mdb));
       stat = 0;
@@ -158,7 +158,7 @@ VALUES (%u,%u,%u,%u,%u,%u,%u,%u)",
  *         1 on success
  */
 int
-db_create_pool_record(B_DB *mdb, POOL_DBR *pr)
+db_create_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
 {
    int stat;
    char ed1[30], ed2[30], ed3[50];
@@ -168,7 +168,7 @@ db_create_pool_record(B_DB *mdb, POOL_DBR *pr)
    Mmsg(&mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name);
    Dmsg1(200, "selectpool: %s\n", mdb->cmd);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
 
       mdb->num_rows = sql_num_rows(mdb);
    
@@ -198,7 +198,7 @@ VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')",
                  edit_uint64(pr->MaxVolBytes, ed3),
                  pr->PoolType, pr->LabelFormat);
    Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"), 
            mdb->cmd, sql_strerror(mdb));
       pr->PoolId = 0;
@@ -219,7 +219,7 @@ VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')",
  *         1 on success
  */ 
 int
-db_create_media_record(B_DB *mdb, MEDIA_DBR *mr)
+db_create_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
 {
    int stat;
    char ed1[30], ed2[30], ed3[30], ed4[30];
@@ -231,7 +231,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr)
           mr->VolumeName);
    Dmsg1(110, "selectpool: %s\n", mdb->cmd);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 0) {
          Mmsg1(&mdb->errmsg, _("Media record %s already exists\n"), mr->VolumeName);
@@ -264,7 +264,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr)
                  mr->Slot);
 
    Dmsg1(500, "Create Volume: %s\n", mdb->cmd);
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create DB Media record %s failed. ERR=%s\n"),
            mdb->cmd, sql_strerror(mdb));
       stat = 0;
@@ -283,7 +283,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr)
  * Returns: 0 on failure
  *         1 on success with id in cr->ClientId
  */
-int db_create_client_record(B_DB *mdb, CLIENT_DBR *cr)
+int db_create_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr)
 {
    SQL_ROW row;
    int stat;
@@ -293,19 +293,19 @@ int db_create_client_record(B_DB *mdb, CLIENT_DBR *cr)
    Mmsg(&mdb->cmd, "SELECT ClientId,Uname FROM Client WHERE Name='%s'", cr->Name);
 
    cr->ClientId = 0;
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
 
       mdb->num_rows = sql_num_rows(mdb);
       
       /* If more than one, report error, but return first row */
       if (mdb->num_rows > 1) {
          Mmsg1(&mdb->errmsg, _("More than one Client!: %d\n"), (int)(mdb->num_rows));
-         Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       }
       if (mdb->num_rows >= 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching Client row: %s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
            sql_free_result(mdb);
            db_unlock(mdb);
            return 0;
@@ -330,10 +330,10 @@ FileRetention, JobRetention) VALUES \
       edit_uint64(cr->FileRetention, ed1),
       edit_uint64(cr->JobRetention, ed2));
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create DB Client record %s failed. ERR=%s\n"),
            mdb->cmd, sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       cr->ClientId = 0;
       stat = 0;
    } else {
@@ -351,7 +351,7 @@ FileRetention, JobRetention) VALUES \
  *  Returns: 0 on failure
  *          1 on success with FileSetId in record
  */
-int db_create_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
+int db_create_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr)
 {
    SQL_ROW row;
    int stat;
@@ -361,18 +361,18 @@ int db_create_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
 FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5);
 
    fsr->FileSetId = 0;
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
 
       mdb->num_rows = sql_num_rows(mdb);
       
       if (mdb->num_rows > 1) {
          Mmsg1(&mdb->errmsg, _("More than one FileSet!: %d\n"), (int)(mdb->num_rows));
-         Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       }
       if (mdb->num_rows >= 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching FileSet row: ERR=%s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
            sql_free_result(mdb);
            db_unlock(mdb);
            return 0;
@@ -389,10 +389,10 @@ FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5);
    Mmsg(&mdb->cmd, "INSERT INTO FileSet (FileSet, MD5) VALUES \
 ('%s', '%s')", fsr->FileSet, fsr->MD5);
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create DB FileSet record %s failed. ERR=%s\n"),
            mdb->cmd, sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       fsr->FileSetId = 0;
       stat = 0;
    } else {
@@ -435,7 +435,7 @@ FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5);
  *  how many times it occurs.  This is this subroutine, we separate
  *  the file and the path and create three database records.
  */
-int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar)
+int db_create_file_attributes_record(void *jcr, B_DB *mdb, ATTR_DBR *ar)
 {
 
    Dmsg1(100, "Fname=%s\n", ar->fname);
@@ -445,29 +445,29 @@ int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar)
     */
    if (!(ar->Stream == STREAM_UNIX_ATTRIBUTES || ar->Stream == STREAM_WIN32_ATTRIBUTES)) {
       Mmsg0(&mdb->errmsg, _("Attempt to put non-attributes into catalog\n"));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       return 0;
    }
 
    db_lock(mdb);
 
-   split_path_and_filename(mdb, ar->fname);
+   split_path_and_filename(jcr, mdb, ar->fname);
 
-   if (!db_create_filename_record(mdb, ar)) {
+   if (!db_create_filename_record(jcr, mdb, ar)) {
       db_unlock(mdb);
       return 0;
    }
    Dmsg1(100, "db_create_filename_record: %s\n", mdb->esc_name);
 
 
-   if (!db_create_path_record(mdb, ar)) {
+   if (!db_create_path_record(jcr, mdb, ar)) {
       db_unlock(mdb);
       return 0;
    }
    Dmsg1(100, "db_create_path_record\n", mdb->esc_name);
 
    /* Now create master File record */
-   if (!db_create_file_record(mdb, ar)) {
+   if (!db_create_file_record(jcr, mdb, ar)) {
       db_unlock(mdb);
       return 0;
    }
@@ -482,7 +482,7 @@ int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar)
  * This is the master File entry containing the attributes.
  *  The filename and path records have already been created.
  */
-static int db_create_file_record(B_DB *mdb, ATTR_DBR *ar)
+static int db_create_file_record(void *jcr, B_DB *mdb, ATTR_DBR *ar)
 {
    int stat;
 
@@ -497,10 +497,10 @@ LStat, MD5) VALUES (%u, %u, %u, %u, '%s', '0')",
       ar->FileIndex, ar->JobId, ar->PathId, ar->FilenameId, 
       ar->attr);
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db File record %s failed. ERR=%s"),       
         mdb->cmd, sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       ar->FileId = 0;
       stat = 0;
    } else {
@@ -511,7 +511,7 @@ LStat, MD5) VALUES (%u, %u, %u, %u, '%s', '0')",
 }
 
 /* Create a Unique record for the Path -- no duplicates */
-static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar)
+static int db_create_path_record(void *jcr, B_DB *mdb, ATTR_DBR *ar)
 {
    SQL_ROW row;
    int stat;
@@ -527,20 +527,19 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar)
 
    Mmsg(&mdb->cmd, "SELECT PathId FROM Path WHERE Path='%s'", mdb->esc_name);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
          Mmsg2(&mdb->errmsg, _("More than one Path!: %s for path: %s\n"), 
            edit_uint64(mdb->num_rows, ed1), mdb->path);
-        sm_check(__FILE__, __LINE__, True);
-         Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg);
       }
       /* Even if there are multiple paths, take the first one */
       if (mdb->num_rows >= 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
            sql_free_result(mdb);
            ar->PathId = 0;
            ASSERT(ar->PathId);
@@ -563,10 +562,10 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar)
 
    Mmsg(&mdb->cmd, "INSERT INTO Path (Path)  VALUES ('%s')", mdb->esc_name);
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db Path record %s failed. ERR=%s\n"), 
         mdb->cmd, sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       ar->PathId = 0;
       stat = 0;
    } else {
@@ -584,29 +583,28 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar)
 }
 
 /* Create a Unique record for the filename -- no duplicates */
-static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar) 
+static int db_create_filename_record(void *jcr, B_DB *mdb, ATTR_DBR *ar) 
 {
    SQL_ROW row;
 
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->fnl+2);
    db_escape_string(mdb->esc_name, mdb->fname, mdb->fnl);
-   sm_check(__FILE__, __LINE__, True);
 
    Mmsg(&mdb->cmd, "SELECT FilenameId FROM Filename WHERE Name='%s'", mdb->esc_name);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
          Mmsg2(&mdb->errmsg, _("More than one Filename! %s for file: %s\n"), 
            edit_uint64(mdb->num_rows, ed1), mdb->fname);
-         Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg);
       }
       if (mdb->num_rows >= 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg2(&mdb->errmsg, _("Error fetching row for file=%s: ERR=%s\n"), 
                mdb->fname, sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
            ar->FilenameId = 0;
         } else {
            ar->FilenameId = atoi(row[0]);
@@ -619,10 +617,10 @@ static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar)
 
    Mmsg(&mdb->cmd, "INSERT INTO Filename (Name) VALUES ('%s')", mdb->esc_name);
 
-   if (!INSERT_DB(mdb, mdb->cmd)) {
+   if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
       Mmsg2(&mdb->errmsg, _("Create db Filename record %s failed. ERR=%s\n"), 
            mdb->cmd, sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       ar->FilenameId = 0;
    } else {
       ar->FilenameId = sql_insert_id(mdb);
index e2a8ee658f45c53c6208f3d3abe889ebcef365fc..244b0b3411cbefed5ffdb775805a934810199554 100644 (file)
@@ -48,8 +48,8 @@
 /* Imported subroutines */
 extern void print_dashes(B_DB *mdb);
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
-extern int DeleteDB(char *file, int line, B_DB *db, char *delete_cmd);
+extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
+extern int DeleteDB(char *file, int line, void *jcr, B_DB *db, char *delete_cmd);
        
 /*
  * Delete Pool record, must also delete all associated
@@ -61,7 +61,7 @@ extern int DeleteDB(char *file, int line, B_DB *db, char *delete_cmd);
  *          NumVols = number of Media records deleted
  */
 int
-db_delete_pool_record(B_DB *mdb, POOL_DBR *pr)
+db_delete_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
 {
    SQL_ROW row;
 
@@ -71,7 +71,7 @@ db_delete_pool_record(B_DB *mdb, POOL_DBR *pr)
 
    pr->PoolId = pr->NumVols = 0;
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
 
       mdb->num_rows = sql_num_rows(mdb);
    
@@ -99,13 +99,13 @@ db_delete_pool_record(B_DB *mdb, POOL_DBR *pr)
    Mmsg(&mdb->cmd,
 "DELETE FROM Media WHERE Media.PoolId = %d", pr->PoolId);
 
-   pr->NumVols = DELETE_DB(mdb, mdb->cmd);
+   pr->NumVols = DELETE_DB(jcr, mdb, mdb->cmd);
    Dmsg1(200, "Deleted %d Media records\n", pr->NumVols);
 
    /* Delete Pool */
    Mmsg(&mdb->cmd,
 "DELETE FROM Pool WHERE Pool.PoolId = %d", pr->PoolId);
-   pr->PoolId = DELETE_DB(mdb, mdb->cmd);
+   pr->PoolId = DELETE_DB(jcr, mdb, mdb->cmd);
    Dmsg1(200, "Deleted %d Pool records\n", pr->PoolId);
 
    db_unlock(mdb);
@@ -188,9 +188,9 @@ static int do_media_purge(B_DB *mdb, MEDIA_DBR *mr)
 /* Delete Media record and all records that
  * are associated with it.
  */
-int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr)
+int db_delete_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
 {
-   if (mr->MediaId == 0 && !db_get_media_record(mdb, mr)) {
+   if (mr->MediaId == 0 && !db_get_media_record(jcr, mdb, mr)) {
       return 0;
    } 
    /* Delete associated records */
@@ -207,9 +207,9 @@ int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr)
  * media record itself. But the media status
  * is changed to "Purged".
  */
-int db_purge_media_record(B_DB *mdb, MEDIA_DBR *mr)
+int db_purge_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
 {
-   if (mr->MediaId == 0 && !db_get_media_record(mdb, mr)) {
+   if (mr->MediaId == 0 && !db_get_media_record(jcr, mdb, mr)) {
       return 0;
    } 
    /* Delete associated records */
@@ -217,7 +217,7 @@ int db_purge_media_record(B_DB *mdb, MEDIA_DBR *mr)
 
    /* Mark Volume as purged */
    strcpy(mr->VolStatus, "Purged");
-   if (!db_update_media_record(mdb, mr)) {
+   if (!db_update_media_record(jcr, mdb, mr)) {
       return 0;
    }
 
index 85b8b1c2e68c2aa84fd51af168dac779e58ae58f..1a52dd7a5adb34c1dd731a64df513f137742b8ce 100644 (file)
@@ -50,7 +50,7 @@
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
+extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
 
 /*
  * Find job start time. Used to find last full save
@@ -60,7 +60,7 @@ extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
  *         1 on success, jr is unchanged, but stime is set
  */
 int
-db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime)
+db_find_job_start_time(void *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime)
 {
    SQL_ROW row;
    int JobId;
@@ -90,7 +90,7 @@ ORDER BY StartTime DESC LIMIT 1",
         return 0;
       }
       Dmsg1(100, "Submitting: %s\n", mdb->cmd);
-      if (!QUERY_DB(mdb, mdb->cmd)) {
+      if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
          Mmsg1(&mdb->errmsg, _("Query error for start time request: %s\n"), mdb->cmd);
         db_unlock(mdb);
         return 0;
@@ -109,7 +109,7 @@ ORDER BY StartTime DESC LIMIT 1",
    Dmsg1(100, "Submitting: %s\n", mdb->cmd);
    Mmsg(&mdb->cmd, "SELECT StartTime FROM Job WHERE Job.JobId=%d", JobId);
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       Mmsg1(&mdb->errmsg, _("Query error for start time request: %s\n"), mdb->cmd);
       db_unlock(mdb);
       return 0;
@@ -140,7 +140,7 @@ ORDER BY StartTime DESC LIMIT 1",
  *         0 on failure
  */
 int
-db_find_last_jobid(B_DB *mdb, JOB_DBR *jr)
+db_find_last_jobid(void *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    SQL_ROW row;
 
@@ -162,7 +162,7 @@ ClientId=%d ORDER BY StartTime DESC LIMIT 1",
       return 0;
    }
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return 0;
    }
@@ -196,7 +196,7 @@ ClientId=%d ORDER BY StartTime DESC LIMIT 1",
  *         numrows on success
  */
 int
-db_find_next_volume(B_DB *mdb, int item, MEDIA_DBR *mr) 
+db_find_next_volume(void *jcr, B_DB *mdb, int item, MEDIA_DBR *mr) 
 {
    SQL_ROW row;
    int numrows;
@@ -209,7 +209,7 @@ FirstWritten,LastWritten \
 FROM Media WHERE PoolId=%d AND MediaType='%s' AND VolStatus='%s' \
 ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus); 
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return 0;
    }
index 886817b28c2dd6cf3d5d2a30458bcc036b4a1ee6..3568f1bf046d20a1d5b9f0e54adcc6939fbca973 100644 (file)
  */
 
 /* Forward referenced functions */
-static int db_get_file_record(B_DB *mdb, FILE_DBR *fdbr);
-static int db_get_filename_record(B_DB *mdb);
-static int db_get_path_record(B_DB *mdb);
+static int db_get_file_record(void *jcr, B_DB *mdb, FILE_DBR *fdbr);
+static int db_get_filename_record(void *jcr, B_DB *mdb);
+static int db_get_path_record(void *jcr, B_DB *mdb);
 
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
-extern void split_path_and_filename(B_DB *mdb, char *fname);
+extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
+extern void split_path_and_filename(void *jcr, B_DB *mdb, char *fname);
 
 
 
@@ -67,19 +67,19 @@ extern void split_path_and_filename(B_DB *mdb, char *fname);
  *  Returns: 0 on failure
  *          1 on success with the File record in FILE_DBR
  */
-int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr)
+int db_get_file_attributes_record(void *jcr, B_DB *mdb, char *fname, FILE_DBR *fdbr)
 {
    int stat;
    Dmsg1(20, "Enter get_file_from_catalog fname=%s \n", fname);
 
    db_lock(mdb);
-   split_path_and_filename(mdb, fname);
+   split_path_and_filename(jcr, mdb, fname);
 
-   fdbr->FilenameId = db_get_filename_record(mdb);
+   fdbr->FilenameId = db_get_filename_record(jcr, mdb);
 
-   fdbr->PathId = db_get_path_record(mdb);
+   fdbr->PathId = db_get_path_record(jcr, mdb);
 
-   stat = db_get_file_record(mdb, fdbr);
+   stat = db_get_file_record(jcr, mdb, fdbr);
 
    db_unlock(mdb);
 
@@ -99,7 +99,7 @@ int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr)
  *    "normal" if a new file is found during Verify.
  */
 static
-int db_get_file_record(B_DB *mdb, FILE_DBR *fdbr)
+int db_get_file_record(void *jcr, B_DB *mdb, FILE_DBR *fdbr)
 {
    SQL_ROW row;
    int stat = 0;
@@ -113,7 +113,7 @@ File.FilenameId=%u", fdbr->JobId, fdbr->PathId, fdbr->FilenameId);
       
    Dmsg1(100, "Query=%s\n", mdb->cmd);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
 
       mdb->num_rows = sql_num_rows(mdb);
       Dmsg1(050, "get_file_record num_rows=%d\n", (int)mdb->num_rows);
@@ -147,17 +147,16 @@ File.FilenameId=%u", fdbr->JobId, fdbr->PathId, fdbr->FilenameId);
  *
  *   DO NOT use Jmsg in this routine (see notes for get_file_record)
  */
-static int db_get_filename_record(B_DB *mdb)
+static int db_get_filename_record(void *jcr, B_DB *mdb)
 {
    SQL_ROW row;
    int FilenameId = 0;
 
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->fnl+2);
    db_escape_string(mdb->esc_name, mdb->fname, mdb->fnl);
-   sm_check(__FILE__, __LINE__, True);
    
    Mmsg(&mdb->cmd, "SELECT FilenameId FROM Filename WHERE Name='%s'", mdb->esc_name);
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       char ed1[30];
 
       mdb->num_rows = sql_num_rows(mdb);
@@ -165,7 +164,7 @@ static int db_get_filename_record(B_DB *mdb)
       if (mdb->num_rows > 1) {
          Mmsg2(&mdb->errmsg, _("More than one Filename!: %s for file: %s\n"),
            edit_uint64(mdb->num_rows, ed1), mdb->fname);
-         Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg);
       } 
       if (mdb->num_rows >= 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
@@ -192,14 +191,13 @@ static int db_get_filename_record(B_DB *mdb)
  *
  *   DO NOT use Jmsg in this routine (see notes for get_file_record)
  */
-static int db_get_path_record(B_DB *mdb)
+static int db_get_path_record(void *jcr, B_DB *mdb)
 {
    SQL_ROW row;
    uint32_t PathId = 0;
 
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->pnl+2);
    db_escape_string(mdb->esc_name, mdb->path, mdb->pnl);
-   sm_check(__FILE__, __LINE__, True);
 
    if (mdb->cached_path_id != 0 && mdb->cached_path_len == mdb->pnl &&
        strcmp(mdb->cached_path, mdb->path) == 0) {
@@ -208,14 +206,14 @@ static int db_get_path_record(B_DB *mdb)
 
    Mmsg(&mdb->cmd, "SELECT PathId FROM Path WHERE Path='%s'", mdb->esc_name);
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       char ed1[30];
       mdb->num_rows = sql_num_rows(mdb);
 
       if (mdb->num_rows > 1) {
          Mmsg2(&mdb->errmsg, _("More than one Path!: %s for path: %s\n"),
            edit_uint64(mdb->num_rows, ed1), mdb->path);
-         Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg);
       } 
       /* Even if there are multiple paths, take the first one */
       if (mdb->num_rows >= 1) {
@@ -250,7 +248,7 @@ static int db_get_path_record(B_DB *mdb)
  * Returns: 0 on failure
  *         1 on success
  */
-int db_get_job_record(B_DB *mdb, JOB_DBR *jr)
+int db_get_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    SQL_ROW row;
 
@@ -267,7 +265,7 @@ Type,Level \
 FROM Job WHERE JobId=%u", jr->JobId);
     }
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return 0;                      /* failed */
    }
@@ -305,7 +303,7 @@ FROM Job WHERE JobId=%u", jr->JobId);
  *
  *  Returns: number of volumes on success
  */
-int db_get_job_volume_names(B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames)
+int db_get_job_volume_names(void *jcr, B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames)
 {
    SQL_ROW row;
    int stat = 0;
@@ -318,7 +316,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId);
 
    Dmsg1(130, "VolNam=%s\n", mdb->cmd);
    *VolumeNames[0] = 0;
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       Dmsg1(130, "Num rows=%d\n", mdb->num_rows);
       if (mdb->num_rows <= 0) {
@@ -329,7 +327,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId);
         for (i=0; i < stat; i++) {
            if ((row = sql_fetch_row(mdb)) == NULL) {
                Mmsg2(&mdb->errmsg, _("Error fetching row %d: ERR=%s\n"), i, sql_strerror(mdb));
-               Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+               Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
               stat = 0;
               break;
            } else {
@@ -354,7 +352,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId);
  *
  *  Returns: number of volumes on success
  */
-int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams)
+int db_get_job_volume_parameters(void *jcr, B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams)
 {
    SQL_ROW row;
    int stat = 0;
@@ -368,7 +366,7 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara
 " AND JobMedia.MediaId=Media.MediaId", JobId);
 
    Dmsg1(130, "VolNam=%s\n", mdb->cmd);
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       Dmsg1(130, "Num rows=%d\n", mdb->num_rows);
       if (mdb->num_rows <= 0) {
@@ -382,7 +380,7 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara
         for (i=0; i < stat; i++) {
            if ((row = sql_fetch_row(mdb)) == NULL) {
                Mmsg2(&mdb->errmsg, _("Error fetching row %d: ERR=%s\n"), i, sql_strerror(mdb));
-               Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+               Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
               stat = 0;
               break;
            } else {
@@ -410,13 +408,13 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara
  * Returns: -1 on failure
  *         number on success
  */
-int db_get_num_pool_records(B_DB *mdb)
+int db_get_num_pool_records(void *jcr, B_DB *mdb)
 {
    int stat = 0;
 
    db_lock(mdb);
    Mmsg(&mdb->cmd, "SELECT count(*) from Pool");
-   stat = get_sql_record_max(mdb);
+   stat = get_sql_record_max(jcr, mdb);
    db_unlock(mdb);
    return stat;
 }
@@ -428,7 +426,7 @@ int db_get_num_pool_records(B_DB *mdb)
  *  Returns 0: on failure
  *         1: on success
  */
-int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
+int db_get_pool_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[])
 {
    SQL_ROW row;
    int stat = 0;
@@ -438,7 +436,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
    db_lock(mdb);
    *ids = NULL;
    Mmsg(&mdb->cmd, "SELECT PoolId FROM Pool");
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       *num_ids = sql_num_rows(mdb);
       if (*num_ids > 0) {
         id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t));
@@ -451,7 +449,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
       stat = 1;
    } else {
       Mmsg(&mdb->errmsg, _("Pool id select failed: ERR=%s\n"), sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       stat = 0;
    }
    db_unlock(mdb);
@@ -465,7 +463,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
  *  Returns 0: on failure
  *         1: on success
  */
-int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
+int db_get_client_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[])
 {
    SQL_ROW row;
    int stat = 0;
@@ -475,7 +473,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
    db_lock(mdb);
    *ids = NULL;
    Mmsg(&mdb->cmd, "SELECT ClientId FROM Client");
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       *num_ids = sql_num_rows(mdb);
       if (*num_ids > 0) {
         id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t));
@@ -488,7 +486,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
       stat = 1;
    } else {
       Mmsg(&mdb->errmsg, _("Client id select failed: ERR=%s\n"), sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       stat = 0;
    }
    db_unlock(mdb);
@@ -504,7 +502,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
  * Returns: 0 on failure
  *         id on success 
  */
-int db_get_pool_record(B_DB *mdb, POOL_DBR *pdbr)
+int db_get_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pdbr)
 {
    SQL_ROW row;
    int stat = 0;
@@ -522,17 +520,17 @@ AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,\
 MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
    }  
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
          Mmsg1(&mdb->errmsg, _("More than one Pool!: %s\n"), 
            edit_uint64(mdb->num_rows, ed1));
-         Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       } else if (mdb->num_rows == 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
         } else {
            pdbr->PoolId = str_to_int64(row[0]);
             bstrncpy(pdbr->Name, row[1]!=NULL?row[1]:"", sizeof(pdbr->Name));
@@ -566,7 +564,7 @@ MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
  * Returns: 0 on failure
  *         1 on success 
  */
-int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr)
+int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cdbr)
 {
    SQL_ROW row;
    int stat = 0;
@@ -582,17 +580,17 @@ int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr)
 "FROM Client WHERE Client.Name='%s'", cdbr->Name);
    }  
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
          Mmsg1(&mdb->errmsg, _("More than one Client!: %s\n"), 
            edit_uint64(mdb->num_rows, ed1));
-         Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       } else if (mdb->num_rows == 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
         } else {
            cdbr->ClientId = str_to_int64(row[0]);
             bstrncpy(cdbr->Name, row[1]!=NULL?row[1]:"", sizeof(cdbr->Name));
@@ -617,7 +615,7 @@ int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr)
  * Returns: 0 on failure
  *         id on success 
  */
-int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
+int db_get_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr)
 {
    SQL_ROW row;
    int stat = 0;
@@ -633,7 +631,7 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
            "WHERE FileSet='%s'", fsr->FileSet);
    }  
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
@@ -662,13 +660,13 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr)
  * Returns: -1 on failure
  *         number on success
  */
-int db_get_num_media_records(B_DB *mdb)
+int db_get_num_media_records(void *jcr, B_DB *mdb)
 {
    int stat = 0;
 
    db_lock(mdb);
    Mmsg(&mdb->cmd, "SELECT count(*) from Media");
-   stat = get_sql_record_max(mdb);
+   stat = get_sql_record_max(jcr, mdb);
    db_unlock(mdb);
    return stat;
 }
@@ -681,7 +679,7 @@ int db_get_num_media_records(B_DB *mdb)
  *  Returns 0: on failure
  *         1: on success
  */
-int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
+int db_get_media_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[])
 {
    SQL_ROW row;
    int stat = 0;
@@ -691,7 +689,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
    db_lock(mdb);
    *ids = NULL;
    Mmsg(&mdb->cmd, "SELECT MediaId FROM Media");
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       *num_ids = sql_num_rows(mdb);
       if (*num_ids > 0) {
         id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t));
@@ -704,7 +702,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
       stat = 1;
    } else {
       Mmsg(&mdb->errmsg, _("Media id select failed: ERR=%s\n"), sql_strerror(mdb));
-      Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       stat = 0;
    }
    db_unlock(mdb);
@@ -717,7 +715,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[])
  * Returns: 0 on failure
  *         id on success 
  */
-int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr)
+int db_get_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
 {
    SQL_ROW row;
    int stat = 0;
@@ -725,7 +723,7 @@ int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr)
    db_lock(mdb);
    if (mr->MediaId == 0 && mr->VolumeName[0] == 0) {
       Mmsg(&mdb->cmd, "SELECT count(*) from Media");
-      mr->MediaId = get_sql_record_max(mdb);
+      mr->MediaId = get_sql_record_max(jcr, mdb);
       db_unlock(mdb);
       return 1;
    }
@@ -743,17 +741,17 @@ Recycle,Slot,FirstWritten,LastWritten \
 FROM Media WHERE VolumeName='%s'", mr->VolumeName);
    }  
 
-   if (QUERY_DB(mdb, mdb->cmd)) {
+   if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       mdb->num_rows = sql_num_rows(mdb);
       if (mdb->num_rows > 1) {
         char ed1[30];
          Mmsg1(&mdb->errmsg, _("More than one Volume!: %s\n"), 
            edit_uint64(mdb->num_rows, ed1));
-         Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+         Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
       } else if (mdb->num_rows == 1) {
         if ((row = sql_fetch_row(mdb)) == NULL) {
             Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb));
-            Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg);
+            Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg);
         } else {
            /* return values */
            mr->MediaId = str_to_int64(row[0]);
index 48b475871a3c02a9325077c0d53ca9e3dc3daaa8..58676a0e5b2063f8710f1c42820d311f0474e411 100644 (file)
 
 /* Imported subroutines */
 extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx);
-extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
+extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
 
 
 /* 
  * Submit general SQL query
  */
-int db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx,
-                     int verbose)
+int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, 
+                     void *ctx, int verbose)
 {
    db_lock(mdb);
    if (sql_query(mdb, query) != 0) {
@@ -75,13 +75,13 @@ int db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx
 }
 
 void
-db_list_pool_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) 
+db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) 
 {
    Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
 "FROM Pool ORDER BY PoolId");
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -93,13 +93,13 @@ db_list_pool_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx)
 }
 
 void
-db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) 
+db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) 
 {
    Mmsg(&mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention "
 "FROM Client ORDER BY ClientId");
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -112,14 +112,14 @@ db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx)
 
 
 void
-db_list_media_records(B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx)
 {
    Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,\
 VolBytes,LastWritten,VolRetention,Recycle,Slot \
 FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -130,7 +130,7 @@ FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
    db_unlock(mdb);
 }
 
-void db_list_jobmedia_records(B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx)
+void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx)
 {
    if (JobId > 0) {                  /* do by JobId */
       Mmsg(&mdb->cmd, "SELECT JobId, Media.VolumeName, FirstIndex, LastIndex \
@@ -142,7 +142,7 @@ FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId");
    }
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -162,7 +162,7 @@ FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId");
  *  only the job with the specified id.
  */
 void
-db_list_job_records(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
 {
    if (jr->JobId == 0 && jr->Job[0] == 0) {
       Mmsg(&mdb->cmd, 
@@ -174,7 +174,7 @@ JobFiles,JobBytes,JobStatus FROM Job WHERE Job.JobId=%u", jr->JobId);
    }
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -190,7 +190,7 @@ JobFiles,JobBytes,JobStatus FROM Job WHERE Job.JobId=%u", jr->JobId);
  *
  */
 void
-db_list_job_totals(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_job_totals(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
 {
    db_lock(mdb);
 
@@ -198,7 +198,7 @@ db_list_job_totals(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx)
    Mmsg(&mdb->cmd, "SELECT  count(*) AS Jobs, sum(JobFiles) \
 AS Files, sum(JobBytes) AS Bytes, Name AS Job FROM Job GROUP BY Name");
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -211,7 +211,7 @@ AS Files, sum(JobBytes) AS Bytes, Name AS Job FROM Job GROUP BY Name");
    Mmsg(&mdb->cmd, "SELECT count(*) AS Jobs,sum(JobFiles) \
 AS Files,sum(JobBytes) As Bytes FROM Job");
 
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
@@ -224,7 +224,7 @@ AS Files,sum(JobBytes) As Bytes FROM Job");
 
 
 void
-db_list_files_for_job(B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx)
+db_list_files_for_job(void *jcr, B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx)
 {
 
    Mmsg(&mdb->cmd, "SELECT Path.Path,Filename.Name FROM File,\
@@ -233,7 +233,7 @@ AND Path.PathId=File.PathId",
       jobid);
 
    db_lock(mdb);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return;
    }
index e2c3b36c9392fa277d86b2f0501130106df32977..0029261496dbbdcf77da47b11420f6ac948259f5 100644 (file)
@@ -45,7 +45,7 @@
 
 /* Imported subroutines */
 extern void print_result(B_DB *mdb);
-extern int UpdateDB(char *file, int line, B_DB *db, char *update_cmd);
+extern int UpdateDB(char *file, int line, void *jcr, B_DB *db, char *update_cmd);
 
 /* -----------------------------------------------------------------------
  *
@@ -55,13 +55,13 @@ extern int UpdateDB(char *file, int line, B_DB *db, char *update_cmd);
  */
 /* Update the attributes record by adding the MD5 signature */
 int
-db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5)
+db_add_MD5_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *MD5)
 {
    int stat;
 
    db_lock(mdb);
    Mmsg(&mdb->cmd, "UPDATE File SET MD5='%s' WHERE FileId=%u", MD5, FileId);
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    return stat;
 }
@@ -69,13 +69,13 @@ db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5)
 /* Mark the file record as being visited during database
  * verify compare. Stuff JobId into MarkedId field
  */
-int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId) 
+int db_mark_file_record(void *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId) 
 {
    int stat;
 
    db_lock(mdb);
    Mmsg(&mdb->cmd, "UPDATE File SET MarkId=%u WHERE FileId=%u", JobId, FileId);
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    return stat;
 }
@@ -87,7 +87,7 @@ int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId)
  *          1 on success
  */
 int
-db_update_job_start_record(B_DB *mdb, JOB_DBR *jr)
+db_update_job_start_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    char dt[MAX_TIME_LENGTH];
    time_t stime;
@@ -105,7 +105,7 @@ db_update_job_start_record(B_DB *mdb, JOB_DBR *jr)
    Mmsg(&mdb->cmd, "UPDATE Job SET Level='%c', StartTime='%s', \
 ClientId=%u, JobTDate=%s WHERE JobId=%u",
       (char)(jr->Level), dt, jr->ClientId, edit_uint64(JobTDate, ed1), jr->JobId);
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    mdb->changes = 0;
    return stat;
@@ -120,7 +120,7 @@ ClientId=%u, JobTDate=%s WHERE JobId=%u",
  *          1 on success
  */
 int
-db_update_job_end_record(B_DB *mdb, JOB_DBR *jr)
+db_update_job_end_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    char dt[MAX_TIME_LENGTH];
    time_t ttime;
@@ -143,14 +143,14 @@ VolSessionTime=%u, PoolId=%u, FileSetId=%u, JobTDate=%s WHERE JobId=%u",
       jr->JobFiles, jr->JobErrors, jr->VolSessionId, jr->VolSessionTime, 
       jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2), jr->JobId);
 
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    return stat;
 }
 
 
 int
-db_update_pool_record(B_DB *mdb, POOL_DBR *pr)
+db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
 {
    int stat;
    char ed1[50], ed2[50], ed3[50];
@@ -169,7 +169,7 @@ db_update_pool_record(B_DB *mdb, POOL_DBR *pr)
       pr->Recycle, pr->AutoPrune,
       pr->LabelFormat, pr->PoolId);
 
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    return stat;
 }
@@ -181,7 +181,7 @@ db_update_pool_record(B_DB *mdb, POOL_DBR *pr)
  *         numrows on success
  */
 int
-db_update_media_record(B_DB *mdb, MEDIA_DBR *mr) 
+db_update_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) 
 {
    char dt[MAX_TIME_LENGTH];
    time_t ttime;
@@ -199,7 +199,7 @@ db_update_media_record(B_DB *mdb, MEDIA_DBR *mr)
       strftime(dt, sizeof(dt), "%Y-%m-%d %T", &tm);
       Mmsg(&mdb->cmd, "UPDATE Media SET FirstWritten='%s'\
  WHERE VolumeName='%s'", dt, mr->VolumeName);
-      stat = UPDATE_DB(mdb, mdb->cmd);
+      stat = UPDATE_DB(jcr, mdb, mdb->cmd);
       Dmsg1(400, "Firstwritten stat=%d\n", stat);
    }
 
@@ -216,11 +216,9 @@ db_update_media_record(B_DB *mdb, MEDIA_DBR *mr)
    edit_uint64(mr->MaxVolBytes, ed2), dt, 
    mr->VolStatus, mr->Slot, mr->VolumeName);
 
-   sm_check(__FILE__, __LINE__, True);
-
    Dmsg1(400, "%s\n", mdb->cmd);
 
-   stat = UPDATE_DB(mdb, mdb->cmd);
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
    return stat;
 }
index 007ddfc9aa5e5aacf0a570e89f902055ddc0ef1b..18cf9128a36c1766e1474c3d04589348ab92ca9c 100644 (file)
@@ -51,7 +51,7 @@ static BQUEUE db_list = {&db_list, &db_list};
 
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
-int QueryDB(char *file, int line, B_DB *db, char *select_cmd);
+int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd);
 
 
 /*
@@ -88,7 +88,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password)
    mdb->path = get_pool_memory(PM_FNAME);
    mdb->esc_name = get_pool_memory(PM_FNAME);
    qinsert(&db_list, &mdb->bq);           /* put db in list */
-   mdb->jcr = jcr;
    V(mutex);
    return mdb;
 }
@@ -98,7 +97,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(B_DB *mdb)
+db_open_database(void *jcr, B_DB *mdb)
 {
    char *db_name;
    int len;
@@ -148,7 +147,7 @@ db_open_database(B_DB *mdb)
       return 0;
    }
    free(db_name);
-   if (!check_tables_version(mdb)) {
+   if (!check_tables_version(jcr, mdb)) {
       V(mutex);
       return 0;
    }
@@ -159,7 +158,7 @@ db_open_database(B_DB *mdb)
 }
 
 void
-db_close_database(B_DB *mdb)
+db_close_database(void *jcr, B_DB *mdb)
 {
    P(mutex);
    mdb->ref_count--;
@@ -187,7 +186,7 @@ db_close_database(B_DB *mdb)
  * Return the next unique index (auto-increment) for
  * the given table.  Return 0 on error.
  */
-int db_next_index(B_DB *mdb, char *table, char *index)
+int db_next_index(void *jcr, B_DB *mdb, char *table, char *index)
 {
    SQL_ROW row;
 
@@ -195,7 +194,7 @@ int db_next_index(B_DB *mdb, char *table, char *index)
 
    Mmsg(&mdb->cmd,
 "SELECT id FROM NextId WHERE TableName=\"%s\"", table);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       Mmsg(&mdb->errmsg, _("next_index query error: ERR=%s\n"), sql_strerror(mdb));
       db_unlock(mdb);
       return 0;
@@ -210,7 +209,7 @@ int db_next_index(B_DB *mdb, char *table, char *index)
 
    Mmsg(&mdb->cmd,
 "UPDATE NextId SET id=id+1 WHERE TableName=\"%s\"", table);
-   if (!QUERY_DB(mdb, mdb->cmd)) {
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       Mmsg(&mdb->errmsg, _("next_index update error: ERR=%s\n"), sql_strerror(mdb));
       db_unlock(mdb);
       return 0;
index 483e796cc434aa973d1e8c32a2c0771d91632850..bdc6142085db1d74944286c317509c81827ac00c 100644 (file)
@@ -120,7 +120,7 @@ int prune_volumes(JCR *jcr)
    db_lock(jcr->db);
 
    pr.PoolId = jcr->PoolId;
-   if (!db_get_pool_record(jcr->db, &pr) || !db_get_media_ids(jcr->db, &num_ids, &ids)) {
+   if (!db_get_pool_record(jcr, jcr->db, &pr) || !db_get_media_ids(jcr, jcr->db, &num_ids, &ids)) {
       Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
       goto bail_out;
    }
@@ -128,7 +128,7 @@ int prune_volumes(JCR *jcr)
 
    for (i=0; i<num_ids; i++) {
       mr.MediaId = ids[i];
-      if (!db_get_media_record(jcr->db, &mr)) {
+      if (!db_get_media_record(jcr, jcr->db, &mr)) {
          Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
         continue;
       }
index ad547fa7b171a62dc888c44f407c6ed5577e8555..900a8628b1a65e6e23ab614225ad48e0d5e2f3d9 100644 (file)
@@ -96,7 +96,7 @@ int do_backup(JCR *jcr)
    } else {
       Jmsg(jcr, M_WARNING, 0, _("FileSet MD5 signature not found.\n"));
    }
-   if (!db_create_fileset_record(jcr->db, &fsr)) {
+   if (!db_create_fileset_record(jcr, jcr->db, &fsr)) {
       Jmsg(jcr, M_ERROR, 0, _("Could not create FileSet record. ERR=%s\n"), 
         db_strerror(jcr->db));
       goto bail_out;
@@ -117,7 +117,7 @@ int do_backup(JCR *jcr)
       case L_INCREMENTAL:
         /* Look up start time of last job */
         jcr->jr.JobId = 0;
-        if (!db_find_job_start_time(jcr->db, &jcr->jr, &jcr->stime)) {
+        if (!db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime)) {
             Jmsg(jcr, M_INFO, 0, _("Last FULL backup time not found. Doing FULL backup.\n"));
            jcr->JobLevel = jcr->jr.Level = L_FULL;
         } else {
@@ -130,7 +130,7 @@ int do_backup(JCR *jcr)
 
    jcr->jr.JobId = jcr->JobId;
    jcr->jr.StartTime = jcr->start_time;
-   if (!db_update_job_start_record(jcr->db, &jcr->jr)) {
+   if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
       goto bail_out;
    }
@@ -146,9 +146,9 @@ int do_backup(JCR *jcr)
     */
    memset(&pr, 0, sizeof(pr));
    strcpy(pr.Name, jcr->pool->hdr.name);
-   while (!db_get_pool_record(jcr->db, &pr)) { /* get by Name */
+   while (!db_get_pool_record(jcr, jcr->db, &pr)) { /* get by Name */
       /* Try to create the pool */
-      if (create_pool(jcr->db, jcr->pool) < 0) {
+      if (create_pool(jcr, jcr->db, jcr->pool) < 0) {
          Jmsg(jcr, M_FATAL, 0, _("Pool %s not in database. %s"), pr.Name, 
            db_strerror(jcr->db));
         goto bail_out;
@@ -321,14 +321,14 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since)
 
    update_job_end_record(jcr);       /* update database */
    
-   if (!db_get_job_record(jcr->db, &jcr->jr)) {
+   if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"), 
         db_strerror(jcr->db));
       set_jcr_job_status(jcr, JS_ErrorTerminated);
    }
 
    strcpy(mr.VolumeName, jcr->VolumeName);
-   if (!db_get_media_record(jcr->db, &mr)) {
+   if (!db_get_media_record(jcr, jcr->db, &mr)) {
       Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for stats: %s"), 
         db_strerror(jcr->db));
       set_jcr_job_status(jcr, JS_ErrorTerminated);
@@ -352,7 +352,7 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since)
          fd = fopen(fname, jcr->JobLevel==L_FULL?"w+":"a+");
       }
       if (fd) {
-        VolCount = db_get_job_volume_parameters(jcr->db, jcr->JobId,
+        VolCount = db_get_job_volume_parameters(jcr, jcr->db, jcr->JobId,
                    &VolParams);
         if (VolCount == 0) {
             Jmsg(jcr, M_ERROR, 0, _("Could not get Job Volume Parameters. ERR=%s\n"),
@@ -419,7 +419,7 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since)
    } else {
       kbps = (double)jcr->jr.JobBytes / (1000 * RunTime);
    }
-   if (!db_get_job_volume_names(jcr->db, jcr->jr.JobId, &jcr->VolumeName)) {
+   if (!db_get_job_volume_names(jcr, jcr->db, jcr->jr.JobId, &jcr->VolumeName)) {
       /*
        * Note, if the job has erred, most likely it did not write any
        *  tape, so suppress this "error" message since in that case
index 523532b78972e1357df97036238adee8db154ba5..0b650da52d07dbecacab65027051a311055283cb 100644 (file)
@@ -91,7 +91,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg)
        */
 next_volume:
       strcpy(mr.VolStatus, "Append");  /* want only appendable volumes */
-      ok = db_find_next_volume(jcr->db, index, &mr);  
+      ok = db_find_next_volume(jcr, jcr->db, index, &mr);  
       Dmsg1(200, "catreq after find_next_vol ok=%d\n", ok);
       if (!ok) {
         /* Well, try finding recycled tapes */
@@ -119,7 +119,7 @@ next_volume:
             Jmsg(jcr, M_INFO, 0, _("Max configured use duration exceeded. "       
                "Marking Volume \"%s\" as Used.\n"), mr.VolumeName);
             strcpy(mr.VolStatus, "Used");  /* yes, mark as used */
-           if (!db_update_media_record(jcr->db, &mr)) {
+           if (!db_update_media_record(jcr, jcr->db, &mr)) {
                Jmsg(jcr, M_ERROR, 0, _("Catalog error updating Media record. %s"),
                    db_strerror(jcr->db));
            } else if (retry++ < 200) {     /* sanity check */
@@ -160,7 +160,7 @@ next_volume:
        * Find the Volume
        */
       unbash_spaces(mr.VolumeName);
-      if (db_get_media_record(jcr->db, &mr)) {
+      if (db_get_media_record(jcr, jcr->db, &mr)) {
         int VolSuitable = 0;
         jcr->MediaId = mr.MediaId;
          Dmsg1(120, "VolumeInfo MediaId=%d\n", jcr->MediaId);
@@ -215,7 +215,7 @@ next_volume:
       &sdmr.Slot, &relabel) == 14) {
 
       bstrncpy(mr.VolumeName, sdmr.VolumeName, sizeof(mr.VolumeName)); /* copy Volume name */
-      if (!db_get_media_record(jcr->db, &mr)) {
+      if (!db_get_media_record(jcr, jcr->db, &mr)) {
          Jmsg(jcr, M_ERROR, 0, _("Unable to get Media record for Volume %s: ERR=%s\n"),
              mr.VolumeName, db_strerror(jcr->db));
          bnet_fsend(bs, "1991 Catalog Request failed: %s", db_strerror(jcr->db));
@@ -278,7 +278,7 @@ next_volume:
       }
 
       Dmsg2(200, "db_update_media_record. Stat=%s Vol=%s\n", mr.VolStatus, mr.VolumeName);
-      if (db_update_media_record(jcr->db, &mr)) {
+      if (db_update_media_record(jcr, jcr->db, &mr)) {
         bnet_fsend(bs, OK_update);
          Dmsg0(190, "send OK\n");
       } else {
@@ -299,7 +299,7 @@ next_volume:
       jm.MediaId = jcr->MediaId;
       Dmsg6(100, "create_jobmedia JobId=%d MediaId=%d SF=%d EF=%d FI=%d LI=%d\n",
         jm.JobId, jm.MediaId, jm.StartFile, jm.EndFile, jm.FirstIndex, jm.LastIndex);
-      if (!db_create_jobmedia_record(jcr->db, &jm)) {
+      if (!db_create_jobmedia_record(jcr, jcr->db, &jm)) {
          Jmsg(jcr, M_ERROR, 0, _("Catalog error creating JobMedia record. %s"),
            db_strerror(jcr->db));
          bnet_fsend(bs, "1991 Update JobMedia error\n");
@@ -339,7 +339,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg)
    if (!jcr->pool->catalog_files) {
       return;
    }
-   db_start_transaction(jcr->db);     /* start transaction if not already open */
+   db_start_transaction(jcr, jcr->db);    /* start transaction if not already open */
    skip_nonspaces(&p);               /* UpdCat */
    skip_spaces(&p);
    skip_nonspaces(&p);               /* Job=nnn */
@@ -379,7 +379,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg)
       Dmsg2(111, "dird<filed: stream=%d %s\n", Stream, fname);
       Dmsg1(120, "dird<filed: attr=%s\n", attr);
 
-      if (!db_create_file_attributes_record(jcr->db, &ar)) {
+      if (!db_create_file_attributes_record(jcr, jcr->db, &ar)) {
          Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
       }
       /* Save values for MD5 update */
@@ -394,7 +394,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg)
         char MD5buf[50];           /* 24 bytes should be enough */
         bin_to_base64(MD5buf, fname, 16);
          Dmsg2(190, "MD5len=%d MD5=%s\n", strlen(MD5buf), MD5buf);
-        if (!db_add_MD5_to_file_record(jcr->db, jcr->FileId, MD5buf)) {
+        if (!db_add_MD5_to_file_record(jcr, jcr->db, jcr->FileId, MD5buf)) {
             Jmsg(jcr, M_ERROR, 0, _("Catalog error updating MD5. %s"), 
               db_strerror(jcr->db));
         }
index 23b3128f39c068c66a3fba6655d0dadc6e123ece..65e35f0e30b20e1c26ae3561943f20b4aa8f1751 100644 (file)
@@ -352,16 +352,16 @@ Without that I don't know who I am :-(\n"), configfile);
          */
         db = db_init_database(NULL, catalog->db_name, catalog->db_user,
                            catalog->db_password);
-        if (!db_open_database(db)) {
+        if (!db_open_database(NULL, db)) {
             Jmsg(NULL, M_FATAL,  0, "%s", db_strerror(db));
         } else {
            /* If a pool is defined for this job, create the pool DB       
             *  record if it is not already created. 
             */
            if (job->pool) {
-              create_pool(db, job->pool);
+              create_pool(NULL, db, job->pool);
            }
-           db_close_database(db);
+           db_close_database(NULL, db);
         }
 
       } else {
index c44b15e63d29c2a9a1f810cb0e976527d5c89836..2b8ba8dcb8d4bdb884d620e8ddac07d5d3c73a8f 100644 (file)
@@ -306,7 +306,7 @@ msglen=%d msg=%s\n"), len, fd->msglen, fd->msg);
          Dmsg2(111, "dird<filed: stream=%d %s\n", stream, jcr->fname);
          Dmsg1(120, "dird<filed: attr=%s\n", attr);
 
-        if (!db_create_file_attributes_record(jcr->db, &ar)) {
+        if (!db_create_file_attributes_record(jcr, jcr->db, &ar)) {
             Jmsg1(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
            set_jcr_job_status(jcr, JS_Error);
            continue;
@@ -321,7 +321,7 @@ msglen=%d msg=%s\n"), len, fd->msglen, fd->msg);
         }
         db_escape_string(MD5, Opts_MD5, strlen(Opts_MD5));
          Dmsg2(120, "MD5len=%d MD5=%s\n", strlen(MD5), MD5);
-        if (!db_add_MD5_to_file_record(jcr->db, jcr->FileId, MD5)) {
+        if (!db_add_MD5_to_file_record(jcr, jcr->db, jcr->FileId, MD5)) {
             Jmsg1(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
            set_jcr_job_status(jcr, JS_Error);
         }
index 00579eaf8916ab3ecc73065567c2a65d592944e2..fd0f0804bf311b8ce27f31c2146ffb49d2e69a0b 100644 (file)
@@ -69,6 +69,7 @@ void run_job(JCR *jcr)
 {
    int stat, errstat;
 
+   sm_check(__FILE__, __LINE__, True);
    init_msg(jcr, jcr->messages);
    create_unique_job_name(jcr, jcr->job->hdr.name);
    jcr->jr.SchedTime = jcr->sched_time;
@@ -93,9 +94,9 @@ void run_job(JCR *jcr)
    Dmsg0(50, "Open database\n");
    jcr->db=db_init_database(jcr, jcr->catalog->db_name, jcr->catalog->db_user,
                            jcr->catalog->db_password);
-   if (!db_open_database(jcr->db)) {
+   if (!db_open_database(jcr, jcr->db)) {
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
-      db_close_database(jcr->db);
+      db_close_database(jcr, jcr->db);
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       free_jcr(jcr);
       return;
@@ -106,9 +107,9 @@ void run_job(JCR *jcr)
     * Create Job record  
     */
    jcr->jr.JobStatus = jcr->JobStatus;
-   if (!db_create_job_record(jcr->db, &jcr->jr)) {
+   if (!db_create_job_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
-      db_close_database(jcr->db);
+      db_close_database(jcr, jcr->db);
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       free_jcr(jcr);
       return;
@@ -139,6 +140,7 @@ static void job_thread(void *arg)
    JCR *jcr = (JCR *)arg;
 
    time(&now);
+   sm_check(__FILE__, __LINE__, True);
 
    Dmsg0(100, "=====Start Job=========\n");
    jcr->start_time = now;            /* set the real start time */
@@ -200,6 +202,7 @@ static void job_thread(void *arg)
    Dmsg0(50, "Before free jcr\n");
    free_jcr(jcr);
    Dmsg0(50, "======== End Job ==========\n");
+   sm_check(__FILE__, __LINE__, True);
 }
 
 /*
@@ -219,7 +222,7 @@ int get_or_create_client_record(JCR *jcr)
    }
    jcr->client_name = get_memory(strlen(jcr->client->hdr.name) + 1);
    strcpy(jcr->client_name, jcr->client->hdr.name);
-   if (!db_create_client_record(jcr->db, &cr)) {
+   if (!db_create_client_record(jcr, jcr->db, &cr)) {
       Jmsg(jcr, M_FATAL, 0, _("Could not create Client record. %s"), 
         db_strerror(jcr->db));
       return 0;
@@ -253,7 +256,7 @@ void update_job_end_record(JCR *jcr)
    jcr->jr.JobBytes = jcr->JobBytes;
    jcr->jr.VolSessionId = jcr->VolSessionId;
    jcr->jr.VolSessionTime = jcr->VolSessionTime;
-   if (!db_update_job_end_record(jcr->db, &jcr->jr)) {
+   if (!db_update_job_end_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_WARNING, 0, _("Error updating job record. %s"), 
         db_strerror(jcr->db));
    }
@@ -331,7 +334,7 @@ void dird_free_jcr(JCR *jcr)
    }
    if (jcr->db) {
       Dmsg0(200, "Close DB\n");
-      db_close_database(jcr->db);
+      db_close_database(jcr, jcr->db);
    }
    if (jcr->RestoreWhere) {
       free(jcr->RestoreWhere);
index 74b91e1cc8e63c6712b8258f82ca7eb6dce79af1..4b3c8f012da846b1fe8ec1b129925077abe139e9 100644 (file)
@@ -189,7 +189,7 @@ static void msg_thread_cleanup(void *arg)
 {
    JCR *jcr = (JCR *)arg;
    Dmsg0(200, "End msg_thread\n");
-   db_end_transaction(jcr->db);       /* terminate any open transaction */
+   db_end_transaction(jcr, jcr->db);      /* terminate any open transaction */
    P(jcr->mutex);
    jcr->msg_thread_done = TRUE;
    pthread_cond_broadcast(&jcr->term_wait); /* wakeup any waiting threads */
index f7e8ba3e89b70fc68b6599542d977d91287b90e0..9af68e6aa6a9b0858eb38af233b1437a532429b1 100644 (file)
@@ -48,7 +48,7 @@ int newVolume(JCR *jcr, MEDIA_DBR *mr)
 
    /* See if we can create a new Volume */
    pr.PoolId = jcr->PoolId;
-   if (db_get_pool_record(jcr->db, &pr) && pr.LabelFormat[0] &&
+   if (db_get_pool_record(jcr, jcr->db, &pr) && pr.LabelFormat[0] &&
        pr.LabelFormat[0] != '*') {
       if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) {
         set_pool_dbr_defaults_in_media_dbr(mr, &pr);
@@ -61,8 +61,8 @@ int newVolume(JCR *jcr, MEDIA_DBR *mr)
         }
          strcat(name, "%04d");
         sprintf(mr->VolumeName, name, ++pr.NumVols);
-        if (db_create_media_record(jcr->db, mr) &&
-           db_update_pool_record(jcr->db, &pr) == 1) {
+        if (db_create_media_record(jcr, jcr->db, mr) &&
+           db_update_pool_record(jcr, jcr->db, &pr) == 1) {
             Dmsg1(90, "Created new Volume=%s\n", mr->VolumeName);
            return 1;
         } else {
index 4f09c43feed023abf58bf6fe1f101d890064fdd0..13a5879392d01fd4edb00a457dcf7202e109a4ab 100644 (file)
@@ -46,13 +46,13 @@ extern char *level_to_str(int level);
 
 /* fd_cmds.c */
 extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
-                                 int max_retry_time, int verbose);
+                                  int max_retry_time, int verbose);
 extern int send_include_list(JCR *jcr);
 extern int send_exclude_list(JCR *jcr);
 extern int get_attributes_and_put_in_catalog(JCR *jcr);
 extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId);
 extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname, 
-                         char *link, char *attr, int stream);
+                          char *link, char *attr, int stream);
 
 /* job.c */
 extern void set_jcr_defaults(JCR *jcr, JOB *job);
@@ -65,7 +65,7 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf);
 
 /* msgchan.c */
 extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,    
-                             int max_retry_time, int verbose);
+                              int max_retry_time, int verbose);
 extern int start_storage_daemon_job(JCR *jcr);
 extern int start_storage_daemon_message_thread(JCR *jcr);
 extern int32_t bget_msg(BSOCK *bs, int type);
@@ -76,5 +76,5 @@ extern void wait_for_storage_daemon_termination(JCR *jcr);
 extern int newVolume(JCR *jcr, MEDIA_DBR *mr);
 
 /* ua_cmd.c */
-extern int create_pool(B_DB *db, POOL *pool);
+extern int create_pool(JCR *jcr, B_DB *db, POOL *pool);
 extern void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr);
index 9a65048f73bd186dc34216b887f63a9db76398f9..0093eeaf681f3b3e6a3374057881d4c99c781834 100644 (file)
@@ -58,7 +58,7 @@ static int oldest_handler(void *ctx, int num_fields, char **row)
 int find_recycled_volume(JCR *jcr, MEDIA_DBR *mr)
 {
    strcpy(mr->VolStatus, "Recycle");
-   if (db_find_next_volume(jcr->db, 1, mr)) {
+   if (db_find_next_volume(jcr, jcr->db, 1, mr)) {
       jcr->MediaId = mr->MediaId;
       Dmsg1(20, "Find_next_vol MediaId=%d\n", jcr->MediaId);
       strcpy(jcr->VolumeName, mr->VolumeName);
@@ -94,9 +94,9 @@ int recycle_a_volume(JCR *jcr, MEDIA_DBR *mr)
    Dmsg1(100, "Oldest mediaid=%d\n", oldest.MediaId);
    if (oldest.MediaId != 0) {
       mr->MediaId = oldest.MediaId;
-      if (db_get_media_record(jcr->db, mr)) {
+      if (db_get_media_record(jcr, jcr->db, mr)) {
          strcpy(mr->VolStatus, "Recycle");
-        if (db_update_media_record(jcr->db, mr)) {
+        if (db_update_media_record(jcr, jcr->db, mr)) {
             Jmsg(jcr, M_INFO, 0, "Recycled volume %s\n", mr->VolumeName);
             Dmsg1(100, "Exit 1  recycle_a_volume Vol=%s\n", mr->VolumeName);
            return 1;
index 80ba26a383d691ed40e3fc45cd6f1553c0438a25..4a6e05187de29eb744a1396529ac8fcc189a4367 100644 (file)
@@ -82,7 +82,7 @@ int do_restore(JCR *jcr)
    memset(&rjr, 0, sizeof(rjr));
    jcr->jr.Level = 'F';            /* Full restore */
    jcr->jr.StartTime = jcr->start_time;
-   if (!db_update_job_start_record(jcr->db, &jcr->jr)) {
+   if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
       restore_cleanup(jcr, JS_ErrorTerminated);
       return 0;
@@ -105,7 +105,7 @@ int do_restore(JCR *jcr)
       } else {
         rjr.JobId = jcr->job->RestoreJobId; /* specified by Job Resource */
       }
-      if (!db_get_job_record(jcr->db, &rjr)) {
+      if (!db_get_job_record(jcr, jcr->db, &rjr)) {
          Jmsg2(jcr, M_FATAL, 0, _("Cannot get job record id=%d %s"), rjr.JobId,
            db_strerror(jcr->db));
         restore_cleanup(jcr, JS_ErrorTerminated);
@@ -116,7 +116,7 @@ int do_restore(JCR *jcr)
        * Now find the Volumes we will need for the Restore
        */
       jcr->VolumeName[0] = 0;
-      if (!db_get_job_volume_names(jcr->db, rjr.JobId, &jcr->VolumeName) ||
+      if (!db_get_job_volume_names(jcr, jcr->db, rjr.JobId, &jcr->VolumeName) ||
           jcr->VolumeName[0] == 0) {
          Jmsg(jcr, M_FATAL, 0, _("Cannot find Volume Name for restore Job %d. %s"), 
            rjr.JobId, db_strerror(jcr->db));
index 6206c3b1e572514a7018e4f5d144324266b803a7..5ec941ed605d970d53dd32296ccc9aab9e607962 100644 (file)
@@ -145,7 +145,6 @@ JCR *wait_for_next_job(char *job_to_run)
 
    jcr = new_jcr(sizeof(JCR), dird_free_jcr);
    ASSERT(job);
-   sm_check(__FILE__, __LINE__, False);
    set_jcr_defaults(jcr, job);
    if (run->level) {
       jcr->JobLevel = run->level;       /* override run level */
index 96f0209a1f460bbf11ed8bdbafbb919b91966465..b79246e281140abd08cd2478ecf0ee6e10f2f903 100644 (file)
@@ -280,7 +280,7 @@ getVolName:
       sprintf(mr.VolumeName, name, i);
       mr.Slot = slot++;
       Dmsg1(200, "Create Volume %s\n", mr.VolumeName);
-      if (!db_create_media_record(ua->db, &mr)) {
+      if (!db_create_media_record(ua->jcr, ua->db, &mr)) {
         bsendmsg(ua, db_strerror(ua->db));
         return 1;
       }
@@ -290,7 +290,7 @@ getVolName:
    }
    pr.NumVols += num;
    Dmsg0(200, "Update pool record.\n"); 
-   if (db_update_pool_record(ua->db, &pr) != 1) {
+   if (db_update_pool_record(ua->jcr, ua->db, &pr) != 1) {
       bsendmsg(ua, db_strerror(ua->db));
       return 1;
    }
@@ -506,7 +506,7 @@ void set_pooldbr_from_poolres(POOL_DBR *pr, POOL *pool, int create)
  *          1  record created
  */
 
-int create_pool(B_DB *db, POOL *pool)
+int create_pool(JCR *jcr, B_DB *db, POOL *pool)
 {
    POOL_DBR  pr;
 
@@ -514,13 +514,13 @@ int create_pool(B_DB *db, POOL *pool)
 
    strcpy(pr.Name, pool->hdr.name);
 
-   if (db_get_pool_record(db, &pr)) {
+   if (db_get_pool_record(jcr, db, &pr)) {
       return 0;                      /* exists */
    }
 
    set_pooldbr_from_poolres(&pr, pool, 1);
 
-   if (!db_create_pool_record(db, &pr)) {
+   if (!db_create_pool_record(jcr, db, &pr)) {
       return -1;                     /* error */
    }
    return 1;
@@ -545,7 +545,7 @@ static int createcmd(UAContext *ua, char *cmd)
       return 1;
    }
 
-   switch (create_pool(ua->db, pool)) {
+   switch (create_pool(ua->jcr, ua->db, pool)) {
    case 0:
       bsendmsg(ua, _("Error: Pool %s already exists.\n\
 Use update to change it.\n"), pool->hdr.name);
@@ -632,7 +632,7 @@ static int update_volume(UAContext *ua)
    }
 
    for (int done=0; !done; ) {
-      if (!db_get_media_record(ua->db, &mr)) {
+      if (!db_get_media_record(ua->jcr, ua->db, &mr)) {
         if (mr.MediaId != 0) {
             bsendmsg(ua, _("Volume record for MediaId %d not found.\n"), mr.MediaId);
         } else {
@@ -856,6 +856,13 @@ static int update_volume(UAContext *ua)
             bsendmsg(ua, _("Invalid number, it must be 0 or greater\n"));
            break;
         } 
+        if (VolFiles != (int)(mr.VolFiles + 1)) {
+            bsendmsg(ua, _("Normally, you should only increase Volume Files by one!\n"));
+            if (!get_cmd(ua, _("Continue? (yes/no): ")) || 
+                 strcasecmp(ua->cmd, "yes") != 0) {
+              break;
+           }
+        }
         query = get_pool_memory(PM_MESSAGE);
          Mmsg(&query, "UPDATE Media SET VolFiles=%u WHERE MediaId=%u",
            VolFiles, mr.MediaId);
@@ -898,7 +905,7 @@ static int update_pool(UAContext *ua)
 
    set_pooldbr_from_poolres(&pr, pool, 0); /* update */
 
-   id = db_update_pool_record(ua->db, &pr);
+   id = db_update_pool_record(ua->jcr, ua->db, &pr);
    if (id <= 0) {
       bsendmsg(ua, _("db_update_pool_record returned %d. ERR=%s\n"),
         id, db_strerror(ua->db));
@@ -1200,7 +1207,7 @@ static int delete_volume(UAContext *ua)
       return 1;
    }
    if (strcasecmp(ua->cmd, _("yes")) == 0) {
-      db_delete_media_record(ua->db, &mr);
+      db_delete_media_record(ua->jcr, ua->db, &mr);
    }
    return 1;
 }
@@ -1221,7 +1228,7 @@ static int delete_pool(UAContext *ua)
       return 1;
    }
    if (strcasecmp(ua->cmd, _("yes")) == 0) {
-      db_delete_pool_record(ua->db, &pr);
+      db_delete_pool_record(ua->jcr, ua->db, &pr);
    }
    return 1;
 }
@@ -1282,7 +1289,7 @@ gotVol:
 
    memset(&mr, 0, sizeof(mr));
    strcpy(mr.VolumeName, ua->cmd);
-   if (db_get_media_record(ua->db, &mr)) {
+   if (db_get_media_record(ua->jcr, ua->db, &mr)) {
        bsendmsg(ua, _("Media record for Volume %s already exists.\n"), 
          mr.VolumeName);
        return 1;
@@ -1333,7 +1340,7 @@ gotVol:
    mr.LabelDate = time(NULL);
    if (ok) {
       set_pool_dbr_defaults_in_media_dbr(&mr, &pr);
-      if (db_create_media_record(ua->db, &mr)) {
+      if (db_create_media_record(ua->jcr, ua->db, &mr)) {
          bsendmsg(ua, _("Media record for Volume=%s successfully created.\n"),
            mr.VolumeName);
         if (ua->automount) {
@@ -1495,19 +1502,19 @@ int open_db(UAContext *ua)
       ua->catalog = (CAT *)GetNextRes(R_CATALOG, NULL);
       UnlockRes();
       if (!ua->catalog) {    
-         bnet_fsend(ua->UA_sock, _("Could not find a Catalog resource\n"));
+         bsendmsg(ua, _("Could not find a Catalog resource\n"));
         return 0;
       } else {
-         bnet_fsend(ua->UA_sock, _("Using default Catalog name=%s DB=%s\n"), 
+         bsendmsg(ua, _("Using default Catalog name=%s DB=%s\n"), 
            ua->catalog->hdr.name, ua->catalog->db_name);
       }
    }
 
    Dmsg0(150, "Open database\n");
-   ua->db = db_init_database(NULL, ua->catalog->db_name, ua->catalog->db_user,
+   ua->db = db_init_database(ua->jcr, ua->catalog->db_name, ua->catalog->db_user,
                             ua->catalog->db_password);
-   if (!db_open_database(ua->db)) {
-      bnet_fsend(ua->UA_sock, _("Could not open DB %s: ERR=%s"), 
+   if (!db_open_database(ua->jcr, ua->db)) {
+      bsendmsg(ua, _("Could not open DB %s: ERR=%s"), 
         ua->catalog->db_name, db_strerror(ua->db));
       close_db(ua);
       return 0;
@@ -1520,7 +1527,7 @@ int open_db(UAContext *ua)
 void close_db(UAContext *ua)
 {
    if (ua->db) {
-      db_close_database(ua->db);
+      db_close_database(ua->jcr, ua->db);
    }
    ua->db = NULL;
    ua->jcr->db = NULL;
index bf9e8ade061e6dcde58d08f89de83f78b904a1ad..f862dad02407e069347f3a2692be18dbcca1440f 100644 (file)
@@ -215,11 +215,11 @@ int listcmd(UAContext *ua, char *cmd)
    for (i=1; i<ua->argc; i++) {
       /* List JOBS */
       if (strcasecmp(ua->argk[i], _("jobs")) == 0) {
-        db_list_job_records(ua->db, &jr, prtit, ua);
+        db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
 
         /* List JOBTOTALS */
       } else if (strcasecmp(ua->argk[i], _("jobtotals")) == 0) {
-        db_list_job_totals(ua->db, &jr, prtit, ua);
+        db_list_job_totals(ua->jcr, ua->db, &jr, prtit, ua);
 
       /* List JOBID */
       } else if (strcasecmp(ua->argk[i], _("jobid")) == 0) {
@@ -227,7 +227,7 @@ int listcmd(UAContext *ua, char *cmd)
            jobid = atoi(ua->argv[i]);
            if (jobid > 0) {
               jr.JobId = jobid;
-              db_list_job_records(ua->db, &jr, prtit, ua);
+              db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
            }
         }
 
@@ -235,7 +235,7 @@ int listcmd(UAContext *ua, char *cmd)
       } else if (strcasecmp(ua->argk[i], _("job")) == 0 && ua->argv[i]) {
         bstrncpy(jr.Job, ua->argv[i], MAX_NAME_LENGTH);
         jr.JobId = 0;
-        db_list_job_records(ua->db, &jr, prtit, ua);
+        db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua);
 
       /* List FILES */
       } else if (strcasecmp(ua->argk[i], _("files")) == 0) {
@@ -244,7 +244,7 @@ int listcmd(UAContext *ua, char *cmd)
             if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
-              db_get_job_record(ua->db, &jr);
+              db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
             } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
               jobid = atoi(ua->argv[j]);
@@ -252,7 +252,7 @@ int listcmd(UAContext *ua, char *cmd)
               continue;
            }
            if (jobid > 0) {
-              db_list_files_for_job(ua->db, jobid, prtit, ua);
+              db_list_files_for_job(ua->jcr, ua->db, jobid, prtit, ua);
            }
         }
       
@@ -263,27 +263,27 @@ int listcmd(UAContext *ua, char *cmd)
             if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
-              db_get_job_record(ua->db, &jr);
+              db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
             } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
               jobid = atoi(ua->argv[j]);
            } else {
               continue;
            }
-           db_list_jobmedia_records(ua->db, jobid, prtit, ua);
+           db_list_jobmedia_records(ua->jcr, ua->db, jobid, prtit, ua);
            done = TRUE;
         }
         if (!done) {
            /* List for all jobs (jobid=0) */
-           db_list_jobmedia_records(ua->db, 0, prtit, ua);
+           db_list_jobmedia_records(ua->jcr, ua->db, 0, prtit, ua);
         }
 
       /* List POOLS */
       } else if (strcasecmp(ua->argk[i], _("pools")) == 0) {
-        db_list_pool_records(ua->db, prtit, ua);
+        db_list_pool_records(ua->jcr, ua->db, prtit, ua);
 
       } else if (strcasecmp(ua->argk[i], _("clients")) == 0) {
-        db_list_client_records(ua->db, prtit, ua);
+        db_list_client_records(ua->jcr, ua->db, prtit, ua);
 
 
       /* List MEDIA or VOLUMES */
@@ -294,7 +294,7 @@ int listcmd(UAContext *ua, char *cmd)
             if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
               bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
               jr.JobId = 0;
-              db_get_job_record(ua->db, &jr);
+              db_get_job_record(ua->jcr, ua->db, &jr);
               jobid = jr.JobId;
             } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) {
               jobid = atoi(ua->argv[j]);
@@ -302,7 +302,7 @@ int listcmd(UAContext *ua, char *cmd)
               continue;
            }
            VolumeName = get_pool_memory(PM_FNAME);
-           n = db_get_job_volume_names(ua->db, jobid, &VolumeName);
+           n = db_get_job_volume_names(ua->jcr, ua->db, jobid, &VolumeName);
             bsendmsg(ua, _("Jobid %d used %d Volume(s): %s\n"), jobid, n, VolumeName);
            free_pool_memory(VolumeName);
            done = TRUE;
@@ -313,7 +313,7 @@ int listcmd(UAContext *ua, char *cmd)
               return 1;
            }
            mr.PoolId = pr.PoolId;
-           db_list_media_records(ua->db, &mr, prtit, ua);
+           db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua);
         }
       } else {
          bsendmsg(ua, _("Unknown list keyword: %s\n"), NPRT(ua->argk[i]));
index ee91d7d34e85d0ac5b0ed32533b5e3fee4ac1200..71496f943ffd21f2c5f77919d599d45fc3b4af9e 100644 (file)
@@ -254,7 +254,7 @@ int prune_files(UAContext *ua, CLIENT *client)
    memset(&cr, 0, sizeof(cr));
    memset(&del, 0, sizeof(del));
    strcpy(cr.Name, client->hdr.name);
-   if (!db_create_client_record(ua->db, &cr)) {
+   if (!db_create_client_record(ua->jcr, ua->db, &cr)) {
       db_unlock(ua->db);
       return 0;
    }
@@ -376,7 +376,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, int JobType)
    memset(&cr, 0, sizeof(cr));
    memset(&del, 0, sizeof(del));
    strcpy(cr.Name, client->hdr.name);
-   if (!db_create_client_record(ua->db, &cr)) {
+   if (!db_create_client_record(ua->jcr, ua->db, &cr)) {
       db_unlock(ua->db);
       return 0;
    }
@@ -548,7 +548,7 @@ int prune_volume(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr)
       (int)(now-period));
    for (i=0; i < del.num_ids; i++) {
       jr.JobId = del.JobId[i];
-      if (!db_get_job_record(ua->db, &jr)) {
+      if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
         continue;
       }
       Dmsg2(200, "Looking at %s JobTdate=%d\n", jr.Job, (int)jr.JobTDate);
index 970872ca509f4b0f0246c3a710da67b8770e2de1..3c06c0fc188b457c9091099b6a831f53bd9c4f88 100644 (file)
@@ -268,7 +268,7 @@ int purge_files_from_client(UAContext *ua, CLIENT *client)
    memset(&del, 0, sizeof(del));
 
    strcpy(cr.Name, client->hdr.name);
-   if (!db_create_client_record(ua->db, &cr)) {
+   if (!db_create_client_record(ua->jcr, ua->db, &cr)) {
       return 0;
    }
 
@@ -345,7 +345,7 @@ int purge_jobs_from_client(UAContext *ua, CLIENT *client)
    memset(&del, 0, sizeof(del));
 
    strcpy(cr.Name, client->hdr.name);
-   if (!db_create_client_record(ua->db, &cr)) {
+   if (!db_create_client_record(ua->jcr, ua->db, &cr)) {
       return 0;
    }
 
@@ -506,7 +506,7 @@ int mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
        strcmp(mr->VolStatus, "Full")   == 0 ||
        strcmp(mr->VolStatus, "Used") == 0) {
       strcpy(mr->VolStatus, "Purged");
-      if (!db_update_media_record(ua->db, mr)) {
+      if (!db_update_media_record(ua->jcr, ua->db, mr)) {
         if (ua->verbose) {
             bsendmsg(ua, "%s", db_strerror(ua->db));
         }
index 39b0d209845b3fd387a110bdc31c15c61fc1d443..c808dcd6bd64cc1f6932695a04b718c7e7ffc04b 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 /*
-   Copyright (C) 2002 Kern Sibbald and John Walker
+   Copyright (C) 2002-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
@@ -311,7 +311,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
       case -1:                       /* error */
         return 0;
       case 0:                        /* list last 20 Jobs run */
-        db_list_sql_query(ua->db, uar_list_jobs, prtit, ua, 1);
+        db_list_sql_query(ua->jcr, ua->db, uar_list_jobs, prtit, ua, 1);
         done = 0;
         break;
       case 1:                        /* list where a file is saved */
@@ -320,7 +320,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
         }
         query = get_pool_memory(PM_MESSAGE);
         Mmsg(&query, uar_file, ua->cmd);
-        db_list_sql_query(ua->db, query, prtit, ua, 1);
+        db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1);
         free_pool_memory(query);
         done = 0;
         break;
@@ -334,7 +334,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
          if (!get_cmd(ua, _("Enter SQL list command: "))) {
            return 0;
         }
-        db_list_sql_query(ua->db, ua->cmd, prtit, ua, 1);
+        db_list_sql_query(ua->jcr, ua->db, ua->cmd, prtit, ua, 1);
         done = 0;
         break;
       case 4:                        /* Select the most recent backups */
@@ -375,8 +375,8 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
            return 0;
         }
         fsr.FileSetId = atoi(fileset_name);  /* Id is first part of name */
-        if (!db_get_fileset_record(ua->db, &fsr)) {
-            bsendmsg(ua, "Error getting FileSet record: %s\n", db_strerror(ua->db));
+        if (!db_get_fileset_record(ua->jcr, ua->db, &fsr)) {
+            bsendmsg(ua, _("Error getting FileSet record: %s\n"), db_strerror(ua->db));
             bsendmsg(ua, _("This probably means you modified the FileSet.\n"
                            "Continuing anyway.\n"));
         }
@@ -402,7 +402,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
             bsendmsg(ua, "%s\n", db_strerror(ua->db));
         }
         free_pool_memory(query);
-        db_list_sql_query(ua->db, uar_list_temp, prtit, ua, 1);
+        db_list_sql_query(ua->jcr, ua->db, uar_list_temp, prtit, ua, 1);
 
         if (!db_sql_query(ua->db, uar_sel_jobid_temp, jobid_handler, (void *)ji)) {
             bsendmsg(ua, "%s\n", db_strerror(ua->db));
@@ -434,7 +434,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji)
         break;
       }
       jr.JobId = JobId;
-      if (!db_get_job_record(ua->db, &jr)) {
+      if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
          bsendmsg(ua, _("Unable to get Job record. ERR=%s\n"), db_strerror(ua->db));
         return 0;
       }
@@ -665,13 +665,13 @@ static int complete_bsr(UAContext *ua, RBSR *bsr)
    if (bsr) {
       memset(&jr, 0, sizeof(jr));
       jr.JobId = bsr->JobId;
-      if (!db_get_job_record(ua->db, &jr)) {
+      if (!db_get_job_record(ua->jcr, ua->db, &jr)) {
          bsendmsg(ua, _("Unable to get Job record. ERR=%s\n"), db_strerror(ua->db));
         return 0;
       }
       bsr->VolSessionId = jr.VolSessionId;
       bsr->VolSessionTime = jr.VolSessionTime;
-      if ((bsr->VolCount=db_get_job_volume_parameters(ua->db, bsr->JobId, 
+      if ((bsr->VolCount=db_get_job_volume_parameters(ua->jcr, ua->db, bsr->JobId, 
           &(bsr->VolParams))) == 0) {
          bsendmsg(ua, _("Unable to get Job Volume Parameters. ERR=%s\n"), db_strerror(ua->db));
         if (bsr->VolParams) {
@@ -1036,7 +1036,7 @@ static int dircmd(UAContext *ua, TREE_CTX *tree)
         tree_getpath(node, cwd, sizeof(cwd));
         fdbr.FileId = 0;
         fdbr.JobId = node->JobId;
-        if (db_get_file_attributes_record(ua->db, cwd, &fdbr)) {
+        if (db_get_file_attributes_record(ua->jcr, ua->db, cwd, &fdbr)) {
            decode_stat(fdbr.LStat, &statp); /* decode stat pkt */
            ls_output(buf, cwd, &statp);
             bsendmsg(ua, "%s\n", buf);
index 5b15d69f68bcff0acc552ecb1fcf1f0ed747244c..5f23a8bc1c34206f1c29a4ed4b5a0dbb50bdc173 100644 (file)
@@ -269,7 +269,7 @@ int get_client_dbr(UAContext *ua, CLIENT_DBR *cr)
    int i;
 
    if (cr->Name[0]) {                /* If name already supplied */
-      if (db_get_client_record(ua->db, cr)) {
+      if (db_get_client_record(ua->jcr, ua->db, cr)) {
         return 1;
       }
       bsendmsg(ua, _("Could not find Client %s: ERR=%s"), cr->Name, db_strerror(ua->db));
@@ -277,7 +277,7 @@ int get_client_dbr(UAContext *ua, CLIENT_DBR *cr)
    for (i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], _("client")) == 0 && ua->argv[i]) {
         bstrncpy(cr->Name, ua->argv[i], sizeof(cr->Name));
-        if (!db_get_client_record(ua->db, cr)) {
+        if (!db_get_client_record(ua->jcr, ua->db, cr)) {
             bsendmsg(ua, _("Could not find Client %s: ERR=%s"), ua->argv[i],
                     db_strerror(ua->db));
            cr->ClientId = 0;
@@ -306,7 +306,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr)
 
 
    cr->ClientId = 0;
-   if (!db_get_client_ids(ua->db, &num_clients, &ids)) {
+   if (!db_get_client_ids(ua->jcr, ua->db, &num_clients, &ids)) {
       bsendmsg(ua, _("Error obtaining client ids. ERR=%s\n"), db_strerror(ua->db));
       return 0;
    }
@@ -318,7 +318,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr)
    start_prompt(ua, _("Defined Clients:\n"));
    for (i=0; i < num_clients; i++) {
       ocr.ClientId = ids[i];
-      if (!db_get_client_record(ua->db, &ocr)) {
+      if (!db_get_client_record(ua->jcr, ua->db, &ocr)) {
         continue;
       }
       add_prompt(ua, ocr.Name);
@@ -330,7 +330,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr)
    memset(&ocr, 0, sizeof(ocr));
    bstrncpy(ocr.Name, name, sizeof(ocr.Name));
 
-   if (!db_get_client_record(ua->db, &ocr)) {
+   if (!db_get_client_record(ua->jcr, ua->db, &ocr)) {
       bsendmsg(ua, _("Could not find Client %s: ERR=%s"), name, db_strerror(ua->db));
       return 0;
    }
@@ -355,7 +355,7 @@ int get_pool_dbr(UAContext *ua, POOL_DBR *pr)
    int i;
 
    if (pr->Name[0]) {                /* If name already supplied */
-      if (db_get_pool_record(ua->db, pr)) {
+      if (db_get_pool_record(ua->jcr, ua->db, pr)) {
         return pr->PoolId;
       }
       bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), pr->Name, db_strerror(ua->db));
@@ -363,7 +363,7 @@ int get_pool_dbr(UAContext *ua, POOL_DBR *pr)
    for (i=1; i<ua->argc; i++) {
       if (strcasecmp(ua->argk[i], _("pool")) == 0 && ua->argv[i]) {
         bstrncpy(pr->Name, ua->argv[i], sizeof(pr->Name));
-        if (!db_get_pool_record(ua->db, pr)) {
+        if (!db_get_pool_record(ua->jcr, ua->db, pr)) {
             bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), ua->argv[i],
                     db_strerror(ua->db));
            pr->PoolId = 0;
@@ -390,7 +390,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr)
 
 
    pr->PoolId = 0;
-   if (!db_get_pool_ids(ua->db, &num_pools, &ids)) {
+   if (!db_get_pool_ids(ua->jcr, ua->db, &num_pools, &ids)) {
       bsendmsg(ua, _("Error obtaining pool ids. ERR=%s\n"), db_strerror(ua->db));
       return 0;
    }
@@ -402,7 +402,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr)
    start_prompt(ua, _("Defined Pools:\n"));
    for (i=0; i < num_pools; i++) {
       opr.PoolId = ids[i];
-      if (!db_get_pool_record(ua->db, &opr)) {
+      if (!db_get_pool_record(ua->jcr, ua->db, &opr)) {
         continue;
       }
       add_prompt(ua, opr.Name);
@@ -414,7 +414,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr)
    memset(&opr, 0, sizeof(opr));
    bstrncpy(opr.Name, name, sizeof(opr.Name));
 
-   if (!db_get_pool_record(ua->db, &opr)) {
+   if (!db_get_pool_record(ua->jcr, ua->db, &opr)) {
       bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), name, db_strerror(ua->db));
       return 0;
    }
@@ -446,7 +446,7 @@ int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr)
       bstrncpy(mr->VolumeName, ua->argv[i], sizeof(mr->VolumeName));
    }
    if (mr->VolumeName[0] == 0) {
-      db_list_media_records(ua->db, mr, prtit, ua);
+      db_list_media_records(ua->jcr, ua->db, mr, prtit, ua);
       if (!get_cmd(ua, _("Enter MediaId or Volume name: "))) {
         return 0;
       }
@@ -457,7 +457,7 @@ int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr)
       }
    }
 
-   if (!db_get_media_record(ua->db, mr)) {
+   if (!db_get_media_record(ua->jcr, ua->db, mr)) {
       bsendmsg(ua, "%s", db_strerror(ua->db));
       return 0;
    }
@@ -503,12 +503,12 @@ POOL *get_pool_resource(UAContext *ua)
  */
 int select_job_dbr(UAContext *ua, JOB_DBR *jr)
 {
-   db_list_job_records(ua->db, jr, prtit, ua);
+   db_list_job_records(ua->jcr, ua->db, jr, prtit, ua);
    if (!get_cmd(ua, _("Enter the JobId to select: "))) {
       return 0;
    }
    jr->JobId = atoi(ua->cmd);
-   if (!db_get_job_record(ua->db, jr)) {
+   if (!db_get_job_record(ua->jcr, ua->db, jr)) {
       bsendmsg(ua, "%s", db_strerror(ua->db));
       return 0;
    }
@@ -540,7 +540,7 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr)
       } else {
         continue;
       }
-      if (!db_get_job_record(ua->db, jr)) {
+      if (!db_get_job_record(ua->jcr, ua->db, jr)) {
          bsendmsg(ua, _("Could not find Job %s: ERR=%s"), ua->argv[i],
                  db_strerror(ua->db));
         jr->JobId = 0;
index 56793efa2563ed6a9d7a8a22ff7f12b5487d8a54..027e30af5c31e530bf0ccb24b248d0126adaa533 100644 (file)
@@ -87,7 +87,7 @@ int do_verify(JCR *jcr)
     */
    if (jcr->JobLevel == L_VERIFY_CATALOG || jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) {
       memcpy(&jr, &(jcr->jr), sizeof(jr));
-      if (!db_find_last_jobid(jcr->db, &jr)) {
+      if (!db_find_last_jobid(jcr, jcr->db, &jr)) {
         Jmsg(jcr, M_FATAL, 0, _(
               "Unable to find JobId of previous InitCatalog Job.\n"
               "Please run a Verify with Level=InitCatalog before\n"
@@ -101,7 +101,7 @@ int do_verify(JCR *jcr)
    jcr->jr.JobId = jcr->JobId;
    jcr->jr.StartTime = jcr->start_time;
    jcr->jr.Level = jcr->JobLevel;
-   if (!db_update_job_start_record(jcr->db, &jcr->jr)) {
+   if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) {
       Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
       goto bail_out;
    }
@@ -119,7 +119,7 @@ int do_verify(JCR *jcr)
    if (jcr->JobLevel == L_VERIFY_CATALOG || jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) {
       memset(&jr, 0, sizeof(jr));
       jr.JobId = JobId;
-      if (!db_get_job_record(jcr->db, &jr)) {
+      if (!db_get_job_record(jcr, jcr->db, &jr)) {
          Jmsg(jcr, M_FATAL, 0, _("Could not get job record. %s"), db_strerror(jcr->db));
         goto bail_out;
       }
@@ -143,7 +143,7 @@ int do_verify(JCR *jcr)
        * Now find the Volumes we will need for the Verify 
        */
       jcr->VolumeName[0] = 0;
-      if (!db_get_job_volume_names(jcr->db, jr.JobId, &jcr->VolumeName) ||
+      if (!db_get_job_volume_names(jcr, jcr->db, jr.JobId, &jcr->VolumeName) ||
           jcr->VolumeName[0] == 0) {
          Jmsg(jcr, M_FATAL, 0, _("Cannot find Volume Name for verify JobId=%d. %s"), 
            jr.JobId, db_strerror(jcr->db));
@@ -442,7 +442,7 @@ int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId)
          * Find equivalent record in the database 
          */
         fdbr.FileId = 0;
-        if (!db_get_file_attributes_record(jcr->db, jcr->fname, &fdbr)) {
+        if (!db_get_file_attributes_record(jcr, jcr->db, jcr->fname, &fdbr)) {
             Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->fname);
             Dmsg1(020, _("File not in catalog: %s\n"), jcr->fname);
            stat = JS_Differences;
@@ -452,7 +452,7 @@ int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId)
             * mark file record as visited by stuffing the
             * current JobId, which is unique, into the MarkId field.
             */
-           db_mark_file_record(jcr->db, fdbr.FileId, jcr->JobId);
+           db_mark_file_record(jcr, jcr->db, fdbr.FileId, jcr->JobId);
         }
 
          Dmsg3(400, "Found %s in catalog. inx=%d Opts=%s\n", jcr->fname, 
index d80036fb2309d3b80d8c95ece3bfd8b28364163e..8bd209fb45fcdcc5f68f5289328e39a3d28bb612 100755 (executable)
@@ -274,7 +274,6 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt, int handle_file(FF_PKT *ff, void *hpkt),
           int i;
 
           status  = readdir_r(directory, entry, &result);
-          sm_check(__FILE__, __LINE__, False);
            Dmsg3(200, "readdir stat=%d result=%x name=%s\n", status, result,
              entry->d_name);
           if (status != 0 || result == NULL) {
@@ -297,7 +296,6 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt, int handle_file(FF_PKT *ff, void *hpkt),
              *q++ = *p++;
           }
           *q = 0;
-          sm_check(__FILE__, __LINE__, False);
           if (!file_is_excluded(ff_pkt, link)) {
              rtn_stat = find_one_file(jcr, ff_pkt, handle_file, pkt, link, our_device, 0);
           }
index 4f928deb69f00927def2a1c35959ee1be10cf8d2..09491892f6127bf9a5b08e554f31b958b006649f 100644 (file)
@@ -93,7 +93,6 @@ POOLMEM *sm_get_pool_memory(char *fname, int lineno, int pool)
 {
    struct abufhead *buf;
 
-   sm_check(fname, lineno, True);
    if (pool > PM_MAX) {
       Emsg2(M_ABORT, 0, "MemPool index %d larger than max %d\n", pool, PM_MAX);
    }
@@ -132,7 +131,6 @@ POOLMEM *sm_get_memory(char *fname, int lineno, size_t size)
    struct abufhead *buf;
    int pool = 0;
 
-   sm_check(fname, lineno, True);
    if ((buf = (struct abufhead *) sm_malloc(fname, lineno, size+HEAD_SIZE)) == NULL) {
       Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
    }
@@ -151,7 +149,6 @@ size_t sm_sizeof_pool_memory(char *fname, int lineno, POOLMEM *obuf)
 {
    char *cp = (char *)obuf;
 
-   sm_check(fname, lineno, False);
    ASSERT(obuf);
    cp -= HEAD_SIZE;
    return ((struct abufhead *)cp)->ablen;
@@ -164,12 +161,10 @@ POOLMEM *sm_realloc_pool_memory(char *fname, int lineno, POOLMEM *obuf, size_t s
    void *buf;
    int pool;
 
-   sm_check(fname, lineno, False);
    ASSERT(obuf);
    P(mutex);
    cp -= HEAD_SIZE;
    buf = sm_realloc(fname, lineno, cp, size+HEAD_SIZE);
-   sm_check(fname, lineno, True);
    if (buf == NULL) {
       V(mutex);
       Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size);
@@ -180,13 +175,11 @@ POOLMEM *sm_realloc_pool_memory(char *fname, int lineno, POOLMEM *obuf, size_t s
       pool_ctl[pool].max_size = size;
    }
    V(mutex);
-   sm_check(fname, lineno, False);
    return (POOLMEM *)(((char *)buf)+HEAD_SIZE);
 }
 
 POOLMEM *sm_check_pool_memory_size(char *fname, int lineno, POOLMEM *obuf, size_t size)
 {
-   sm_check(fname, lineno, False);
    ASSERT(obuf);
    if (size <= sizeof_pool_memory(obuf)) {
       return obuf;
@@ -200,7 +193,6 @@ void sm_free_pool_memory(char *fname, int lineno, POOLMEM *obuf)
    struct abufhead *buf;
    int pool;
 
-   sm_check(fname, lineno, True);
    ASSERT(obuf);
    P(mutex);
    buf = (struct abufhead *)((char *)obuf - HEAD_SIZE);
@@ -324,7 +316,6 @@ void free_pool_memory(POOLMEM *obuf)
    struct abufhead *buf;
    int pool;
 
-   sm_check(__FILE__, __LINE__, False);
    ASSERT(obuf);
    P(mutex);
    buf = (struct abufhead *)((char *)obuf - HEAD_SIZE);
index 13c4b39e15ccb345e186d40abc5f8f500b92410f..54d7b6154f5c1b0e73b08d8352b0118f6fa21efb 100755 (executable)
@@ -868,12 +868,6 @@ Jmsg(void *vjcr, int type, int level, char *fmt,...)
      * Check if we have a message destination defined. 
      * We always report M_ABORT and M_ERROR_TERM 
      */
-
-    /* There is an apparent compiler bug with the following if
-     * statement, so the set_jcr... is simply a noop to reload 
-     * registers.
-     */
-    set_jcr_job_status(jcr, jcr->JobStatus);
     if (msgs && (type != M_ABORT && type != M_ERROR_TERM) &&
         !bit_is_set(type, msgs->send_msg)) {
        return;                       /* no destination */
index 5b7bda5795735167ec97345ac1e8cc4bc11aa8f7..c7b81f177ccc242f3a779a1d2f667fee5786a022 100644 (file)
@@ -108,7 +108,6 @@ static void *smalloc(char *fname, int lineno, unsigned int nbytes)
           buf += HEAD_SIZE;  /* Increment to user data start */
           V(mutex);
        }
-       sm_check(fname, lineno, True);
         Dmsg4(1150, "smalloc %d at %x from %s:%d\n", nbytes, buf, fname, lineno);
        return (void *)buf;
 }
@@ -134,7 +133,6 @@ void sm_free(char *file, int line, void *fp)
        char *cp = (char *) fp;
        struct b_queue *qp;
 
-       sm_check(__FILE__, __LINE__, True);
        if (cp == NULL) {
            Emsg2(M_ABORT, 0, "Attempt to free NULL called from %s:%d\n", file, line);
        }
@@ -230,7 +228,6 @@ void *sm_realloc(char *fname, int lineno, void *ptr, unsigned int size)
        char *cp = (char *) ptr;
 
         Dmsg4(400, "sm_realloc %s:%d 0x%x %d\n", fname, lineno, ptr, size);
-       sm_check(fname, lineno, True);
        if (size <= 0) {
            e_msg(fname, lineno, M_ABORT, 0, "sm_realloc size: %d\n", size);
        }
@@ -269,7 +266,6 @@ void *sm_realloc(char *fname, int lineno, void *ptr, unsigned int size)
           sm_free(__FILE__, __LINE__, ptr);
        }
         Dmsg4(150, "sm_realloc %d at %x from %s:%d\n", size, buf, fname, lineno);
-       sm_check(fname, lineno, True);
        return buf;
 }
 
index 3d5ca9009a3a51dab5622812bcd4ce8c2586996b..b425ecdabc76924401fe761ddf3b14ec28a89890 100644 (file)
@@ -51,8 +51,6 @@ int do_append_data(JCR *jcr)
    /* Tell File daemon to send data */
    bnet_fsend(fd_sock, OK_data);
 
-   sm_check(__FILE__, __LINE__, False);
-
    if (!jcr->no_attributes && jcr->spool_attributes) {
       open_spool_file(jcr, jcr->dir_bsock);
    }
@@ -80,8 +78,6 @@ int do_append_data(JCR *jcr)
       free_block(block);
       return 0;
    }
-   sm_check(__FILE__, __LINE__, False);
-
    Dmsg0(100, "Just after acquire_device_for_append\n");
    /*
     * Write Begin Session Record
@@ -93,8 +89,6 @@ int do_append_data(JCR *jcr)
       ok = FALSE;
    }
 
-   sm_check(__FILE__, __LINE__, False);
-
    memset(&rec, 0, sizeof(rec));
 
    /* 
@@ -135,7 +129,6 @@ int do_append_data(JCR *jcr)
         ok = FALSE;
         break;
       }
-      sm_check(__FILE__, __LINE__, False);
       ds->msg[ds->msglen] = 0;
       if (sscanf(ds->msg, "%ld %ld %100s", &file_index, &stream, info) != 3) {
          Jmsg1(jcr, M_FATAL, 0, _("Malformed data header from FD: %s\n"), ds->msg);
@@ -161,10 +154,8 @@ int do_append_data(JCR *jcr)
       /* Read data stream from the File daemon.
        *  The data stream is just raw bytes
        */
-      sm_check(__FILE__, __LINE__, False);
       while ((n=bget_msg(ds)) > 0 && !job_cancelled(jcr)) {
 
-        sm_check(__FILE__, __LINE__, False);
         rec.VolSessionId = jcr->VolSessionId;
         rec.VolSessionTime = jcr->VolSessionTime;
         rec.FileIndex = file_index;
@@ -188,7 +179,6 @@ int do_append_data(JCR *jcr)
               break;
            }
         }
-        sm_check(__FILE__, __LINE__, False);
         if (!ok) {
             Dmsg0(400, "Not OK\n");
            break;
@@ -216,7 +206,6 @@ int do_append_data(JCR *jcr)
               jcr->dir_bsock->spool = 0;
            }
         }
-        sm_check(__FILE__, __LINE__, False);
       }
       if (is_bnet_error(ds)) {
          Jmsg1(jcr, M_FATAL, 0, _("Network error on data channel. ERR=%s\n"),
@@ -229,7 +218,6 @@ int do_append_data(JCR *jcr)
     *   We probably need a new flag that says "Do not attempt
     *   to write because there is no tape".
     */
-   sm_check(__FILE__, __LINE__, False);
    Dmsg0(90, "Write_end_session_label()\n");
 
    /* Create Job status for end of session label */
index 711b1ae4c5b8e0fea81cc486fb5cec4fdd5ee79a..e5878af641456423e1b69ac5ed1deb140be25136 100644 (file)
@@ -228,7 +228,7 @@ int main (int argc, char *argv[])
    if ((db=db_init_database(NULL, db_name, db_user, db_password)) == NULL) {
       Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n"));
    }
-   if (!db_open_database(db)) {
+   if (!db_open_database(NULL, db)) {
       Emsg0(M_ERROR_TERM, 0, db_strerror(db));
    }
    Dmsg0(200, "Database opened\n");
@@ -300,7 +300,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
            /* Check Pool info */
            strcpy(pr.Name, dev->VolHdr.PoolName);
            strcpy(pr.PoolType, dev->VolHdr.PoolType);
-           if (db_get_pool_record(db, &pr)) {
+           if (db_get_pool_record(bjcr, db, &pr)) {
               if (verbose) {
                   Pmsg1(000, _("Pool record for %s found in DB.\n"), pr.Name);
               }
@@ -323,7 +323,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
            memset(&mr, 0, sizeof(mr));
            strcpy(mr.VolumeName, dev->VolHdr.VolName);
            mr.PoolId = pr.PoolId;
-           if (db_get_media_record(db, &mr)) {
+           if (db_get_media_record(bjcr, db, &mr)) {
               if (verbose) {
                   Pmsg1(000, _("Media record for %s found in DB.\n"), mr.VolumeName);
               }
@@ -364,7 +364,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
            unser_session_label(&label, rec);
            memset(&jr, 0, sizeof(jr));
            jr.JobId = label.JobId;
-           if (db_get_job_record(db, &jr)) {
+           if (db_get_job_record(bjcr, db, &jr)) {
               /* Job record already exists in DB */
                update_db = 0;  /* don't change db in create_job_record */
               if (verbose) {
@@ -472,7 +472,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
                  jr.JobTDate = (utime_t)mjcr->start_time;
                  jr.ClientId = mjcr->ClientId;
                  free_jcr(mjcr);
-                 if (!db_update_job_end_record(db, &jr)) {
+                 if (!db_update_job_end_record(bjcr, db, &jr)) {
                      Pmsg1(0, _("Could not update job record. ERR=%s\n"), db_strerror(db));
                  }
               }
@@ -552,7 +552,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec)
       }
       fr.JobId = mjcr->JobId;
       fr.FileId = 0;
-      if (db_get_file_attributes_record(db, fname, &fr)) {
+      if (db_get_file_attributes_record(bjcr, db, fname, &fr)) {
         if (verbose > 1) {
             Pmsg1(000, _("File record already exists for: %s\n"), fname);
         }
@@ -690,7 +690,7 @@ static int create_file_attributes_record(B_DB *db, JCR *mjcr,
       return 1;
    }
 
-   if (!db_create_file_attributes_record(db, &ar)) {
+   if (!db_create_file_attributes_record(bjcr, db, &ar)) {
       Pmsg1(0, _("Could not create File Attributes record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -732,11 +732,11 @@ static int create_media_record(B_DB *db, MEDIA_DBR *mr, VOLUME_LABEL *vl)
       return 1;
    }
 
-   if (!db_create_media_record(db, mr)) {
+   if (!db_create_media_record(bjcr, db, mr)) {
       Pmsg1(0, _("Could not create media record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
-   if (!db_update_media_record(db, mr)) {
+   if (!db_update_media_record(bjcr, db, mr)) {
       Pmsg1(0, _("Could not update media record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -757,7 +757,7 @@ static int update_media_record(B_DB *db, MEDIA_DBR *mr)
    }
 
    mr->LastWritten = lasttime;
-   if (!db_update_media_record(db, mr)) {
+   if (!db_update_media_record(bjcr, db, mr)) {
       Pmsg1(0, _("Could not update media record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -778,7 +778,7 @@ static int create_pool_record(B_DB *db, POOL_DBR *pr)
    if (!update_db) {
       return 1;
    }
-   if (!db_create_pool_record(db, pr)) {
+   if (!db_create_pool_record(bjcr, db, pr)) {
       Pmsg1(0, _("Could not create pool record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -798,7 +798,7 @@ static int create_client_record(B_DB *db, CLIENT_DBR *cr)
    if (!update_db) {
       return 1;
    }
-   if (!db_create_client_record(db, cr)) {
+   if (!db_create_client_record(bjcr, db, cr)) {
       Pmsg1(0, _("Could not create Client record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -818,12 +818,12 @@ static int create_fileset_record(B_DB *db, FILESET_DBR *fsr)
       fsr->MD5[0] = ' ';              /* Equivalent to nothing */
       fsr->MD5[1] = 0;
    }
-   if (db_get_fileset_record(db, fsr)) {
+   if (db_get_fileset_record(bjcr, db, fsr)) {
       if (verbose) {
          Pmsg1(000, _("Fileset \"%s\" already exists.\n"), fsr->FileSet);
       }
    } else {
-      if (!db_create_fileset_record(db, fsr)) {
+      if (!db_create_fileset_record(bjcr, db, fsr)) {
          Pmsg2(0, _("Could not create FileSet record \"%s\". ERR=%s\n"), 
            fsr->FileSet, db_strerror(db));
         return 0;
@@ -875,13 +875,13 @@ static JCR *create_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *label,
    }
 
    /* This creates the bare essentials */
-   if (!db_create_job_record(db, jr)) {
+   if (!db_create_job_record(bjcr, db, jr)) {
       Pmsg1(0, _("Could not create JobId record. ERR=%s\n"), db_strerror(db));
       return mjcr;
    }
 
    /* This adds the client, StartTime, JobTDate, ... */
-   if (!db_update_job_start_record(db, jr)) {
+   if (!db_update_job_start_record(bjcr, db, jr)) {
       Pmsg1(0, _("Could not update job start record. ERR=%s\n"), db_strerror(db));
       return mjcr;
    }
@@ -934,7 +934,7 @@ static int update_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *elabel,
       return 1;
    }
    
-   if (!db_update_job_end_record(db, jr)) {
+   if (!db_update_job_end_record(bjcr, db, jr)) {
       Pmsg2(0, _("Could not update JobId=%u record. ERR=%s\n"), jr->JobId,  db_strerror(db));
       free_jcr(mjcr);
       return 0;
@@ -1026,7 +1026,7 @@ static int create_jobmedia_record(B_DB *db, JCR *mjcr)
       return 1;
    }
 
-   if (!db_create_jobmedia_record(db, &jmr)) {
+   if (!db_create_jobmedia_record(bjcr, db, &jmr)) {
       Pmsg1(0, _("Could not create JobMedia record. ERR=%s\n"), db_strerror(db));
       return 0;
    }
@@ -1060,7 +1060,7 @@ static int update_MD5_record(B_DB *db, char *MD5buf, DEV_RECORD *rec)
       return 1;
    }
    
-   if (!db_add_MD5_to_file_record(db, mjcr->FileId, MD5buf)) {
+   if (!db_add_MD5_to_file_record(bjcr, db, mjcr->FileId, MD5buf)) {
       Pmsg1(0, _("Could not add MD5 to File record. ERR=%s\n"), db_strerror(db));
       free_jcr(mjcr);
       return 0;
index e55a514997081303b52560a6624f477ae287057e..9a68849af2640eee8a950ba77f67a55bbe626239 100644 (file)
@@ -178,7 +178,6 @@ int write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
    ser_declare;
    uint32_t remlen;
 
-   sm_check(__FILE__, __LINE__, False);
    remlen = block->buf_len - block->binbuf;
 
    ASSERT(block->binbuf == (uint32_t) (block->bufp - block->buf));
@@ -216,7 +215,6 @@ rem=%d remainder=%d\n",
         rec->remainder = rec->data_len;
       } else {
         rec->remainder = rec->data_len + WRITE_RECHDR_LENGTH;
-        sm_check(__FILE__, __LINE__, False);
         return 0;
       }
    } else {
@@ -261,7 +259,6 @@ rem=%d remainder=%d\n",
       remlen -= WRITE_RECHDR_LENGTH;
    }
    if (remlen == 0) {
-      sm_check(__FILE__, __LINE__, False);
       return 0;                      /* partial transfer */
    }
 
@@ -280,7 +277,7 @@ rem=%d remainder=%d\n",
       } else {
         memcpy(block->bufp, rec->data+rec->data_len-rec->remainder, 
                remlen);
-#ifdef SMCHECK
+#ifdef xxxxxSMCHECK
         if (!sm_check_rtn(__FILE__, __LINE__, False)) {
            /* We damaged a buffer */
             Dmsg6(0, "Damaged block FI=%s SessId=%d Strm=%s len=%d\n\
@@ -305,7 +302,6 @@ rem=%d remainder=%d\n",
       }
    }
    rec->remainder = 0;               /* did whole transfer */
-   sm_check(__FILE__, __LINE__, False);
    return 1;
 }
 
index 0d6df331e988d058d65d063b3577007d85758f76..819b39e543d896a0fc52645900df2000bcf11b10 100644 (file)
@@ -161,7 +161,7 @@ int main (int argc, char *argv[])
 
    /* Open database */
    db = db_init_database(NULL, db_name, user, password);
-   if (!db_open_database(db)) {
+   if (!db_open_database(NULL, db)) {
       Emsg1(M_FATAL, 0, "%s", db_strerror(db));
    }
 
@@ -177,7 +177,7 @@ int main (int argc, char *argv[])
       do_interactive_mode();
    }
 
-   db_close_database(db);
+   db_close_database(NULL, db);
    close_msg(NULL);
    term_msg();
    return 0;