]> 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 9a474576fb1245198511351029e30f577fd4ef67..bea9cc8bec097a7c8fdfcee7e4c5a4f65651ece4 100755 (executable)
@@ -7,15 +7,15 @@
  *  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$
  */
 
 /*
-   Copyright (C) 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2001-2003 Kern Sibbald and John Walker
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
  * 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(B_DB *mdb, JOB_DBR *jr)   
+bool db_update_job_start_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 {
-   int len, stat;
+   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(mdb, &ojr)) {
+   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(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(B_DB *mdb, JOB_DBR *jr)   
+int db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
 {
-   int len, stat;
+   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(mdb, &ojr)) {
+   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,35 +121,36 @@ int db_update_job_end_record(B_DB *mdb, JOB_DBR *jr)
 }
 
 
-int db_update_media_record(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(mdb, &omr)) {
+   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);
    strcpy(mr->MediaType, omr.MediaType);
    mr->MediaId = omr.MediaId;
    mr->PoolId = omr.PoolId;
-   mr->VolMaxBytes = omr.VolMaxBytes;
+   mr->MaxVolBytes = omr.MaxVolBytes;
    mr->VolCapacityBytes = omr.VolCapacityBytes;
    mr->Recycle = omr.Recycle;
 
    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(B_DB *mdb, MEDIA_DBR *mr)
    return stat;
 }
 
-int db_update_pool_record(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(mdb, &opr)) {
+   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(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,13 +197,28 @@ int db_update_pool_record(B_DB *mdb, POOL_DBR *pr)
    return stat;
 }
 
-int db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5)   
+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(JCR *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId)
+{
+   return 1;
+}
+
+int db_update_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cr)
 {
    return 1;
 }
 
-int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId)
-{ 
+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;
 }