From: Kern S. <ke...@us...> - 2006-04-21 11:25:26
|
Update of /cvsroot/bacula/bacula/src/dird In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15252/src/dird Modified Files: job.c ua_restore.c ua_tree.c ua_update.c Log Message: - Implement using pg_config for finding PostgreSQL files. Fixes bug #600. Patch supplied by user. - Remove -t option from mktemp in mtx_changer.in and use working directory. Fixes bug #578. - Update job start time after the any run before job so that files created by the script are only backed up once. Fixes bug #599. - Strip trailing newline only from filenames entered in the restore command when reading a file. This permits the user to enter filenames with trailing spaces. Fixes bug #549. The user supplied a patch that I modified slightly. - Use the most recent time (st_mtime, st_ctime) in the dir command in restore. This gives the user a better idea of what the newest file really is. This fixes bug #574. The fix was suggested by the user. - Implement a compatible version of base64. This permits external programs to duplicate Bacula's base64 algorithm using standard routines. This fixes bugs #296, and 565. Patch submitted by author of bug #565. ================= Note ======================== Previous Signatures stored in the database are no longer compatible with this. The main downside is for Verify jobs, and doing an InitCatalog run will fix the problem. Also, the authentication between the deamons is changed, so all daemons must be simultaneously upgraded. ============================================== If you don't like this fix, set: const bool compatible = true; to const bool compatible = false; in src/lib/base64.c Index: ua_update.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/dird/ua_update.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- ua_update.c 11 Apr 2006 16:23:36 -0000 1.13 +++ ua_update.c 21 Apr 2006 11:25:15 -0000 1.14 @@ -460,28 +460,29 @@ } for ( ; !done; ) { - bsendmsg(ua, _("Updating Volume \"%s\"\n"), mr.VolumeName); start_prompt(ua, _("Parameters to modify:\n")); - add_prompt(ua, _("Volume Status")); - add_prompt(ua, _("Volume Retention Period")); - add_prompt(ua, _("Volume Use Duration")); - add_prompt(ua, _("Maximum Volume Jobs")); - add_prompt(ua, _("Maximum Volume Files")); - add_prompt(ua, _("Maximum Volume Bytes")); - add_prompt(ua, _("Recycle Flag")); - add_prompt(ua, _("Slot")); - add_prompt(ua, _("InChanger Flag")); - add_prompt(ua, _("Volume Files")); - add_prompt(ua, _("Pool")); - add_prompt(ua, _("Volume from Pool")); - add_prompt(ua, _("All Volumes from Pool")); - add_prompt(ua, _("Done")); + add_prompt(ua, _("Volume Status")); /* 0 */ + add_prompt(ua, _("Volume Retention Period")); /* 1 */ + add_prompt(ua, _("Volume Use Duration")); /* 2 */ + add_prompt(ua, _("Maximum Volume Jobs")); /* 3 */ + add_prompt(ua, _("Maximum Volume Files")); /* 4 */ + add_prompt(ua, _("Maximum Volume Bytes")); /* 5 */ + add_prompt(ua, _("Recycle Flag")); /* 6 */ + add_prompt(ua, _("Slot")); /* 7 */ + add_prompt(ua, _("InChanger Flag")); /* 8 */ + add_prompt(ua, _("Volume Files")); /* 9 */ + add_prompt(ua, _("Pool")); /* 10 */ + add_prompt(ua, _("Volume from Pool")); /* 11 */ + add_prompt(ua, _("All Volumes from Pool")); /* 12 */ + add_prompt(ua, _("Done")); /* 13 */ i = do_prompt(ua, "", _("Select parameter to modify"), NULL, 0); + /* For All Volumes from Pool we don't need a Volume record */ - if (i != 12) { + if (i != 12 && i != 13) { if (!select_media_dbr(ua, &mr)) { /* Get Volume record */ return 0; } + bsendmsg(ua, _("Updating Volume \"%s\"\n"), mr.VolumeName); } switch (i) { case 0: /* Volume Status */ Index: job.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/dird/job.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -d -r1.125 -r1.126 --- job.c 14 Mar 2006 19:37:20 -0000 1.125 +++ job.c 21 Apr 2006 11:25:15 -0000 1.126 @@ -265,7 +265,19 @@ goto bail_out; } } - + /* + * We re-update the job start record so that the start + * time is set after the run before job. This avoids + * that any files created by the run before job will + * be saved twice. They will be backed up in the current + * job, but not in the next one unless they are changed. + * Without this, they will be backed up in this job and + * in the next job run because in that case, their date + * is after the start of this run. + */ + if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) { + Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db)); + } generate_job_event(jcr, "JobRun"); switch (jcr->JobType) { Index: ua_restore.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/dird/ua_restore.c,v retrieving revision 1.109 retrieving revision 1.110 diff -u -d -r1.109 -r1.110 --- ua_restore.c 11 Apr 2006 16:23:36 -0000 1.109 +++ ua_restore.c 21 Apr 2006 11:25:15 -0000 1.110 @@ -722,7 +722,7 @@ { char ed1[50]; - strip_trailing_junk(file); + strip_trailing_newline(file); split_path_and_filename(rx, file); if (*rx->JobIds == 0) { Mmsg(rx->query, uar_jobid_fileindex, date, rx->path, rx->fname, Index: ua_tree.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/dird/ua_tree.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- ua_tree.c 11 Apr 2006 16:23:36 -0000 1.41 +++ ua_tree.c 21 Apr 2006 11:25:15 -0000 1.42 @@ -472,6 +472,7 @@ char ec1[30]; char en1[30], en2[30]; int n; + time_t time; p = encode_mode(statp->st_mode, buf); if (dot_cmd) { @@ -495,7 +496,13 @@ p += n; n = sprintf(p, "%10.10s ", edit_uint64(statp->st_size, ec1)); p += n; - p = encode_time(statp->st_ctime, p); + if (statp->st_ctime > statp->st_mtime) { + time = statp->st_ctime; + } else { + time = statp->st_mtime; + } + /* Display most recent time */ + p = encode_time(time, p); *p++ = ' '; *p++ = *tag; } |