]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/bdb_update.c
- Fix ANSI labels to put EOF1 and EOF2 after each file mark.
[bacula/bacula] / bacula / src / cats / bdb_update.c
index 5f496d0102f4561539f81c2b115623a1e1064868..bea9cc8bec097a7c8fdfcee7e4c5a4f65651ece4 100755 (executable)
@@ -7,8 +7,8 @@
  *  The purpose of these routines is to ensure that Bacula
  *  can limp along if no real database is loaded on the
  *  system.
- *   
- *    Kern Sibbald, January MMI 
+ *
+ *    Kern Sibbald, January MMI
  *
  *
  *    Version $Id$
  * most current start fields to the job record.
  * It is assumed that you did a db_create_job_record() already.
  */
-int db_update_job_start_record(void *jcr, B_DB *mdb, JOB_DBR *jr)    
+bool db_update_job_start_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    int len, stat = 1;
    JOB_DBR ojr;
 
+   db_lock(mdb);
+
    Dmsg0(200, "In db_update_job_start_record\n");
    len = sizeof(ojr);
    memcpy(&ojr, jr, len);
 
    if (!db_get_job_record(jcr, mdb, &ojr)) {
+      db_unlock(mdb);
       return 0;
    }
 
-   db_lock(mdb);
 
    fseek(mdb->jobfd, ojr.rec_addr, SEEK_SET);
    if (fwrite(jr, len, 1, mdb->jobfd) != 1) {
-      Mmsg1(&mdb->errmsg, _("Error updating DB Job file. ERR=%s\n"), strerror(errno));
+      Mmsg1(mdb->errmsg, _("Error updating DB Job file. ERR=%s\n"), strerror(errno));
       stat = 0;
    }
    fflush(mdb->jobfd);
@@ -91,21 +93,22 @@ int db_update_job_start_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
  * This is called at Job termination time to add all the
  * other fields to the job record.
  */
-int db_update_job_end_record(void *jcr, B_DB *mdb, JOB_DBR *jr)    
+int db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 {
    int len, stat = 1;
    JOB_DBR ojr;
 
+   db_lock(mdb);
+
    Dmsg0(200, "In db_update_job_start_record\n");
    len = sizeof(ojr);
    memcpy(&ojr, jr, len);
 
    if (!db_get_job_record(jcr, mdb, &ojr)) {
+      db_unlock(mdb);
       return 0;
    }
 
-   db_lock(mdb);
-
    fseek(mdb->jobfd, ojr.rec_addr, SEEK_SET);
    if (fwrite(jr, len, 1, mdb->jobfd) != 1) {
       Mmsg1(&mdb->errmsg, _("Error updating DB Job file. ERR=%s\n"), strerror(errno));
@@ -118,22 +121,23 @@ int db_update_job_end_record(void *jcr, B_DB *mdb, JOB_DBR *jr)
 }
 
 
-int db_update_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) 
-{ 
+int db_update_media_record(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
+{
    int stat = 1;
    MEDIA_DBR omr;
    int len;
-       
+
+   db_lock(mdb);
    Dmsg0(200, "In db_update_media_record\n");
    mr->MediaId = 0;
    len = sizeof(omr);
    memcpy(&omr, mr, len);
 
    if (!db_get_media_record(jcr, mdb, &omr)) {
+      db_unlock(mdb);
       return 0;
    }
 
-   db_lock(mdb);
 
    /* Don't allow some fields to change by copying from master record */
    strcpy(mr->VolumeName, omr.VolumeName);
@@ -146,7 +150,7 @@ int db_update_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
 
    fseek(mdb->mediafd, omr.rec_addr, SEEK_SET);
    if (fwrite(mr, len, 1, mdb->mediafd) != 1) {
-      Mmsg1(&mdb->errmsg, _("Error updating DB Media file. ERR=%s\n"), strerror(errno));
+      Mmsg1(mdb->errmsg, _("Error updating DB Media file. ERR=%s\n"), strerror(errno));
       stat = 0;
    }
    fflush(mdb->mediafd);
@@ -155,25 +159,26 @@ int db_update_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr)
    return stat;
 }
 
-int db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr) 
-{ 
+int db_update_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
+{
    int stat = 1;
    POOL_DBR opr;
    int len;
-       
+
+   db_lock(mdb);
    Dmsg0(200, "In db_update_pool_record\n");
    len = sizeof(opr);
    memcpy(&opr, pr, len);
 
    if (!db_get_pool_record(jcr, mdb, &opr)) {
+      db_unlock(mdb);
       return 0;
    }
 
-   db_lock(mdb);
 
    /* Update specific fields */
    opr.NumVols = pr->NumVols;
-   opr.MaxVols = pr->MaxVols; 
+   opr.MaxVols = pr->MaxVols;
    opr.UseOnce = pr->UseOnce;
    opr.UseCatalog = pr->UseCatalog;
    opr.AcceptAnyVolume = pr->AcceptAnyVolume;
@@ -181,7 +186,7 @@ int db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
 
    fseek(mdb->poolfd, opr.rec_addr, SEEK_SET);
    if (fwrite(&opr, len, 1, mdb->poolfd) != 1) {
-      Mmsg1(&mdb->errmsg, _("Error updating DB Media file. ERR=%s\n"), strerror(errno));
+      Mmsg1(mdb->errmsg, _("Error updating DB Media file. ERR=%s\n"), strerror(errno));
       stat = 0;
    } else {
       memcpy(pr, &opr, len);         /* return record written */
@@ -192,19 +197,30 @@ int db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
    return stat;
 }
 
-int db_add_SIG_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *SIG, int type)
+int db_add_SIG_to_file_record(JCR *jcr, B_DB *mdb, FileId_t FileId, char *SIG, int type)
 {
    return 1;
 }
 
-int db_mark_file_record(void *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId)
-{ 
+int db_mark_file_record(JCR *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId)
+{
    return 1;
 }
 
-int db_update_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr)
+int db_update_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cr)
 {
    return 1;
 }
 
+int db_update_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
+{
+   return 0;
+}
+
+int db_update_media_defaults(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
+{
+   return 1;
+}
+
+
 #endif /* HAVE_BACULA_DB */