+2003-06-10 Version 1.31 Beta 10Jun03
+- Eliminated all plain email addresses and replaced them with " at " in
+ place of @ to reduce havesting by spammers. Doc + Web Site.
+- Started working on making POOLMEM a struct rather than a char. Lots of
+ work to do.
+- Fixed bscan to handle -V option.
+- Fixed bscan to handle two File volumes.
+- Corrected a misplaced comma it get_fileset() in cats pointed out by bscan.
+- Added two Volume bscan test to regression scripts -- write two volumes,
+ purge and delete everything, bscan the tapes, and do a restore. It works!
+- Reorganized the backup/restore code to move the attribute information into
+ an ATTR packet, which is passed in place of tons of arguments. Moved some
+ code into lib/attr.c and lib/attr.h. Then eliminated all the duplicate
+ attribute code.
+- Moved FT_ types into baconfig.h.
+- Defined FT_ types to use only 16 bits. The upper half of the word is
+ reserved for adding optional fields in the attributes packet.
+- Moved jcr->where into common part of jcr and have it deleted in lib/jcr.c
+- Put all attribute reading code on switch() with cases instead of a big
+ if (restore.c, bls.c, bextract.c, bscan.c, ...)
+- set_attributes() now takes ATTR packet, and thus has much fewer args.
+- moved print_ls_output() into lib/attr.c
+- implemented is_stream_supported().
+- create_file() now takes ATTR packet so has many fewer args.
+- add mtime_only code.
+- Rewrote bnet.c read and write routines to quit if bsock->terminated is
+ set. This will allow setting non-blocking writes and then receiving
+ a termination message and terminating the Job immediately rather than
+ waiting 2 hours for the line to timeout.
+- Put catalog db name in some error messages.
+- Code for restore is now much cleaner, with much of it in lib/attr.c,
+ and it is now common for all readers.
+- Add first cut of proper support for Win32 Backup code.
+- Fix bug in restore Win95/98/Me.
+- Pass mtime_only flag to FD. Needs config record.
+
2003-06-04 Version 1.31 Beta 04Jun03
- Fix block.c to check errno only in case of return status -1 as
suggested by Justin Gibbs (FreeBSD).
--- /dev/null
+
+All Bacula packages released on Source Forge after 8 June 2003
+will be signed with the Bacula Distribution Verification Key. By
+obtaining a copy of the Bacula Distribution Verification Public
+key from either the home site (www.bacula.org) or from the Source
+Forge project page, (www.sourceforge.net/projects/bacula). you
+can verify that the code you have is complete, unaltered, and
+packaged by myself (Kern Sibbald) or D. Scott Barninger.
+
+Putting the Bacula Key in your Keyring:
+
+Once you download the Bacula public key, you must insert it in
+your keyring. The procedure will differ depending on whether you
+are using PGP or GPG. For GPG, assuming you have put the key
+in bacula.k, the procedure is:
+
+ gpg --import bacula.key
+
+Verifying an RPM:
+
+The procedure for verification differs slightly if you are using
+rpms or tar.gz files. For rpms, the signature becomes part of the
+rpm package, and once the Bacula public key is in your keyring
+you check the package with:
+
+ rpm --checksig bacula-1.xx.rpm
+
+Verifying tar files:
+
+Tar files are distributed as they always have been in the past,
+unchanged. However, for each xxxx.tar.gz file that is released there
+will be a second file released with the same name but with .sig
+appended, for example xxxx.tar.gz.sig. To verify the Bacula distribution,
+you download both the files and put them in the same directory, then
+for GPG, you use the following command to do the verification:
+
+ gpg --verify xxxx.tar.gz.sig
+
+
- Figure out how to use ssh or stunnel to protect Bacula communications.
For 1.31 release:
+- Use runbeforejob to unload, then reload a volume previously used,
+ then the next job run gets an error reading the drive.
- Implement non-blocking writes and bsock->terminate in heartbeat thread,
or set it in status.c cancel.
- Add restore to specific date.
- lstat() is not going to work on Win32 for testing date.
- Implement a Recycle command
- Something is not right in last block of fill command.
-- If during a restore, a hard linked file already exists (on option), delete
- the file and re-link it. This is to avoid the possibility that the
- user had re-linked the file between the backup and the restore.
- Do lstat() to see if it is already properly linked.
- Same for symlinked file.
- Make sure ifnewer, ifolder, never, ... apply correctly.
- Implement List Volume Job=xxx or List scheduled volumes or
Status Director
- Instrument use_count on DEVICE packets and ensure that the device is
>
- Should Bacula make an Append tape as Purged when purging?
- Use switch() in backup.c and restore.c in FD instead of giant if statement.
+- If during a restore, a hard linked file already exists (on option), delete
+ the file and re-link it. This is to avoid the possibility that the
+ user had re-linked the file between the backup and the restore.
+ Do lstat() to see if it is already properly linked.
+ Same for symlinked file.
+ Make sure ifnewer, ifolder, never, ... apply correctly.
if (db_get_pool_record(jcr, jcr->db, &pr) && pr.LabelFormat[0] &&
pr.LabelFormat[0] != '*') {
if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) {
+ memset(&mr, 0, sizeof(mr));
set_pool_dbr_defaults_in_media_dbr(mr, &pr);
mr->LabelDate = time(NULL);
bstrncpy(mr->MediaType, jcr->store->media_type, sizeof(mr->MediaType));
vl->Slot, mr.VolumeName);
continue;
}
+ /*
+ * Deal with creating cleaning tape here. Normal tapes created in
+ * send_label_request() below
+ */
if (is_cleaning_tape(ua, &mr, &pr)) {
set_pool_dbr_defaults_in_media_dbr(&mr, &pr);
if (db_create_media_record(ua->jcr, ua->db, &mr)) {
sendit(msg, len, arg);
#ifdef HAVE_CYGWIN
if (!privs) {
- privs = get_backup_privileges(NULL, 1);
+ privs = enable_backup_privileges(NULL, 1);
}
len = Mmsg(&msg,
_("Priv 0x%x APIs=%sOPT,%sATP,%sLPV,%sGFAE,%sBR,%sBW,%sSPSP\n"), privs,
int stat = 1;
#ifdef HAVE_CYGWIN
- if (stream == STREAM_UNIX_ATTRIBUTES_EX &&
+ if (attr->stream == STREAM_UNIX_ATTRIBUTES_EX &&
set_win32_attributes(jcr, attr, ofd)) {
return 1;
}
#ifdef HAVE_MYSQL
char catalog_db[] = "MySQL";
-#endif
+#else
#ifdef HAVE_SQLITE
char catalog_db[] = "SQLite";
-#endif
-#ifdef HAVE_BACULA_DB
+#else
char catalog_db[] = "Internal";
#endif
+#endif
/* Forward referenced functions */