[-]
[+]
|
Changed |
bacula.spec
|
|
[-]
[+]
|
Deleted |
2.4.3-cancel-after-network-outage.patch
^
|
@@ -1,135 +0,0 @@
-
- This patch fixes a problem when canceling job if client looses
- connection while being backed up
- Apply the patch to version 2.4.3 (and previous versions) with:
-
- cd <bacula-source>
- patch -p0 <2.4.3-cancel-after-network-outage.patch
- ./configure <your-options>
- make
- ...
- make install
-
-
-Index: src/dird/backup.c
-===================================================================
---- src/dird/backup.c (révision 7772)
-+++ src/dird/backup.c (copie de travail)
-@@ -240,14 +240,16 @@
- }
- return false;
-
--/* Come here only after starting SD thread */
-+/* Come here only after starting SD thread
-+ * and we don't expect any EndJob message because the
-+ * the client don't have recieve the "backup" command.
-+ */
- bail_out:
- set_jcr_job_status(jcr, JS_ErrorTerminated);
-- Dmsg1(400, "wait for sd. use=%d\n", jcr->use_count());
-- /* Cancel SD */
-- cancel_storage_daemon_job(jcr);
-- wait_for_storage_daemon_termination(jcr);
-- Dmsg1(400, "after wait for sd. use=%d\n", jcr->use_count());
-+ Dmsg1(400, "wait for sd and fd. use=%d\n", jcr->use_count());
-+ /* Get status from SD and FD */
-+ wait_for_job_termination(jcr, false /* don't expect EndJob message*/);
-+ Dmsg1(400, "after wait for sd and fd. use=%d\n", jcr->use_count());
- return false;
- }
-
-@@ -258,7 +260,7 @@
- * are done, we return the job status.
- * Also used by restore.c
- */
--int wait_for_job_termination(JCR *jcr)
-+int wait_for_job_termination(JCR *jcr, bool expect_EndJob)
- {
- int32_t n = 0;
- BSOCK *fd = jcr->file_bsock;
-@@ -270,30 +272,51 @@
- int Encrypt = 0;
-
- set_jcr_job_status(jcr, JS_Running);
-- /* Wait for Client to terminate */
-- while ((n = bget_dirmsg(fd)) >= 0) {
-- if (!fd_ok &&
-- (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
-- &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 ||
-- sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
-- &ReadBytes, &JobBytes, &Errors) == 5)) {
-- fd_ok = true;
-- set_jcr_job_status(jcr, jcr->FDJobStatus);
-- Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus);
-- } else {
-- Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"),
-- fd->msg);
-+
-+
-+ if (fd) {
-+ /* Wait for Client to terminate
-+ * In some conditions, the client isn't able to send
-+ * any messages and we should not wait for ages
-+ */
-+ int OK=true;
-+ int ret;
-+ while (OK && expect_EndJob) {
-+
-+ /* Even if the job is canceled, we let a chance to FD to
-+ * send EndJob message
-+ */
-+ if (job_canceled(jcr)) {
-+ OK=false;
-+ }
-+
-+ /* wait for data few minutes */
-+ ret = fd->wait_data_intr(3*60, 0);
-+ if (ret == 1) { /* get data */
-+ n = bget_dirmsg(fd);
-+ if (n >= 0 &&
-+ (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
-+ &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 ||
-+ sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
-+ &ReadBytes, &JobBytes, &Errors) == 5)) {
-+ fd_ok = true;
-+ set_jcr_job_status(jcr, jcr->FDJobStatus);
-+ OK=false; /* end of loop */
-+ } else {
-+ Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"),
-+ fd->msg);
-+ }
-+ } /* else get timeout or network error */
-+
-+ if (is_bnet_error(fd)) {
-+ Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
-+ job_type_to_str(jcr->JobType), fd->bstrerror());
-+ OK=false;
-+ }
- }
-- if (job_canceled(jcr)) {
-- break;
-- }
-- }
-
-- if (is_bnet_error(fd)) {
-- Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
-- job_type_to_str(jcr->JobType), fd->bstrerror());
-+ fd->signal(BNET_TERMINATE); /* tell Client we are terminating */
- }
-- fd->signal(BNET_TERMINATE); /* tell Client we are terminating */
-
- /* Force cancel in SD if failing */
- if (job_canceled(jcr) || !fd_ok) {
-Index: src/dird/protos.h
-===================================================================
---- src/dird/protos.h (révision 7772)
-+++ src/dird/protos.h (copie de travail)
-@@ -52,7 +52,7 @@
- extern bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
-
- /* backup.c */
--extern int wait_for_job_termination(JCR *jcr);
-+extern int wait_for_job_termination(JCR *jcr, bool expect_EndJob=true);
- extern bool do_backup_init(JCR *jcr);
- extern bool do_backup(JCR *jcr);
- extern void backup_cleanup(JCR *jcr, int TermCode);
|
[-]
[+]
|
Deleted |
2.4.3-orphaned-jobs.patch
^
|
@@ -1,24 +0,0 @@
-
- This patch fixes a case of orphaned jobs (and possible deadlock)
- during pruning.
- Apply it to Bacula 2.4.3 (possibly earlier versions) with:
-
- cd <bacula-source>
- patch -p0 <2.4.3-orphaned-jobs.patch
- ./configure <your-options>
- make
- ...
- make install
-
-Index: src/dird/ua_prune.c
-===================================================================
---- src/dird/ua_prune.c (revision 7949)
-+++ src/dird/ua_prune.c (working copy)
-@@ -468,6 +468,7 @@
- break;
- }
- }
-+ endeach_jcr(jcr);
- if (skip) {
- continue;
- }
|
[-]
[+]
|
Deleted |
2.4.3-prune-deadlock.patch
^
|
@@ -1,56 +0,0 @@
-
- This patch corrects a deadlock that can occure when using the catalog
- as message backend and the director decides to prune volumes.
-
- Apply it to Bacula 2.4.3 (possibly earlier versions)
- with:
-
- cd <bacula-source>
- patch -p0 <2.4.3-prune-deadlock.patch
- ./configure <your-options>
- make
- ...
- make install
-
-
-Index: src/lib/jcr.c
-===================================================================
---- src/lib/jcr.c (révision 8063)
-+++ src/lib/jcr.c (copie de travail)
-@@ -438,7 +438,6 @@
-
- #endif
-
-- dequeue_messages(jcr);
- lock_jcr_chain();
- jcr->dec_use_count(); /* decrement use count */
- if (jcr->use_count() < 0) {
-@@ -455,6 +454,7 @@
- remove_jcr(jcr); /* remove Jcr from chain */
- unlock_jcr_chain();
-
-+ dequeue_messages(jcr);
- job_end_pop(jcr); /* pop and call hooked routines */
-
- Dmsg1(3400, "End job=%d\n", jcr->JobId);
-Index: src/dird/ua_prune.c
-===================================================================
---- src/dird/ua_prune.c (révision 8100)
-+++ src/dird/ua_prune.c (copie de travail)
-@@ -435,8 +435,6 @@
- return 0; /* cannot prune Archived volumes */
- }
-
-- db_lock(ua->db);
--
- /*
- * Now add to the list of JobIds for Jobs written to this Volume
- */
-@@ -477,6 +475,5 @@
- }
-
- bail_out:
-- db_unlock(ua->db);
- return count;
- }
-
|
[-]
[+]
|
Deleted |
2.4.3-update-slots.patch
^
|
@@ -1,79 +0,0 @@
-
- This patch corrects a problem when removing a volume from
- an autochanger and the slot is still empty when running
- update slots command. #1175
-
- Apply it to version 2.4.3 with:
-
- cd <bacula-source>
- patch -p0 <2.4.3-update-slots.patch
- ./configure <your-options>
- make
- ...
- make install
-
-Index: src/cats/sql_update.c
-===================================================================
---- src/cats/sql_update.c (revision 7854)
-+++ src/cats/sql_update.c (working copy)
-@@ -445,14 +445,28 @@
- db_make_inchanger_unique(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
- {
- char ed1[50], ed2[50];
-- if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0 &&
-- mr->MediaId != 0) {
-- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
-- "Slot=%d AND StorageId=%s AND MediaId!=%s",
-- mr->Slot,
-- edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
-- Dmsg1(400, "%s\n", mdb->cmd);
-- UPDATE_DB(jcr, mdb, mdb->cmd);
-+ if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0) {
-+
-+ if (mr->MediaId != 0) {
-+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
-+ "Slot=%d AND StorageId=%s AND MediaId!=%s",
-+ mr->Slot,
-+ edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
-+
-+ } else if (mr->VolumeName[0]) { /* We have a volume name */
-+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
-+ "Slot=%d AND StorageId=%s AND VolumeName!='%s'",
-+ mr->Slot,
-+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
-+
-+ } else { /* used by ua_label to reset all volume with this slot */
-+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
-+ "Slot=%d AND StorageId=%s",
-+ mr->Slot,
-+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
-+ }
-+ Dmsg1(100, "%s\n", mdb->cmd);
-+ UPDATE_DB(jcr, mdb, mdb->cmd);
- }
- }
-
-Index: src/cats/sql_create.c
-===================================================================
---- src/cats/sql_create.c (revision 7854)
-+++ src/cats/sql_create.c (working copy)
-@@ -459,14 +459,13 @@
- "WHERE MediaId=%d", dt, mr->MediaId);
- stat = UPDATE_DB(jcr, mdb, mdb->cmd);
- }
-+ /*
-+ * Make sure that if InChanger is non-zero any other identical slot
-+ * has InChanger zero.
-+ */
-+ db_make_inchanger_unique(jcr, mdb, mr);
- }
-
-- /*
-- * Make sure that if InChanger is non-zero any other identical slot
-- * has InChanger zero.
-- */
-- db_make_inchanger_unique(jcr, mdb, mr);
--
- db_unlock(mdb);
- return stat;
- }
|
[-]
[+]
|
Deleted |
2.4.3-win32-runscript-unicode-path.patch
^
|
@@ -1,289 +0,0 @@
-
- This patch fix #1110 about a problem when executing a program with
- Unicode path.
-
- It can be applied to 2.4.3 (and previous versions) with:
-
- cd <bacula-source>
- patch -p0 <2.4.3-win32-runscript-unicode-path.patch
- ./configure <your-options>
- make
- ...
- make install
-
-
-Index: src/win32/compat/compat.cpp
-===================================================================
---- src/win32/compat/compat.cpp (révision 7772)
-+++ src/win32/compat/compat.cpp (copie de travail)
-@@ -1807,6 +1807,97 @@
- }
-
- /**
-+ * Create the process with UTF8 API
-+ */
-+static BOOL
-+CreateChildProcessW(const char *comspec, const char *cmdLine,
-+ PROCESS_INFORMATION *hProcInfo,
-+ HANDLE in, HANDLE out, HANDLE err)
-+{
-+ STARTUPINFOW siStartInfo;
-+ BOOL bFuncRetn = FALSE;
-+
-+ // Set up members of the STARTUPINFO structure.
-+ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
-+ siStartInfo.cb = sizeof(siStartInfo);
-+ // setup new process to use supplied handles for stdin,stdout,stderr
-+
-+ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-+ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
-+
-+ siStartInfo.hStdInput = in;
-+ siStartInfo.hStdOutput = out;
-+ siStartInfo.hStdError = err;
-+
-+ // Convert argument to WCHAR
-+ POOLMEM *cmdLine_wchar = get_pool_memory(PM_FNAME);
-+ POOLMEM *comspec_wchar = get_pool_memory(PM_FNAME);
-+
-+ UTF8_2_wchar(&cmdLine_wchar, cmdLine);
-+ UTF8_2_wchar(&comspec_wchar, comspec);
-+
-+ // Create the child process.
-+ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec_wchar, cmdLine_wchar);
-+
-+ // try to execute program
-+ bFuncRetn = p_CreateProcessW((WCHAR*)comspec_wchar,
-+ (WCHAR*)cmdLine_wchar,// command line
-+ NULL, // process security attributes
-+ NULL, // primary thread security attributes
-+ TRUE, // handles are inherited
-+ 0, // creation flags
-+ NULL, // use parent's environment
-+ NULL, // use parent's current directory
-+ &siStartInfo, // STARTUPINFO pointer
-+ hProcInfo); // receives PROCESS_INFORMATION
-+
-+ free_pool_memory(cmdLine_wchar);
-+ free_pool_memory(comspec_wchar);
-+
-+ return bFuncRetn;
-+}
-+
-+
-+/**
-+ * Create the process with ANSI API
-+ */
-+static BOOL
-+CreateChildProcessA(const char *comspec, char *cmdLine,
-+ PROCESS_INFORMATION *hProcInfo,
-+ HANDLE in, HANDLE out, HANDLE err)
-+{
-+ STARTUPINFOA siStartInfo;
-+ BOOL bFuncRetn = FALSE;
-+
-+ // Set up members of the STARTUPINFO structure.
-+ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
-+ siStartInfo.cb = sizeof(siStartInfo);
-+ // setup new process to use supplied handles for stdin,stdout,stderr
-+ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-+ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
-+
-+ siStartInfo.hStdInput = in;
-+ siStartInfo.hStdOutput = out;
-+ siStartInfo.hStdError = err;
-+
-+ // Create the child process.
-+ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
-+
-+ // try to execute program
-+ bFuncRetn = p_CreateProcessA(comspec,
-+ cmdLine, // command line
-+ NULL, // process security attributes
-+ NULL, // primary thread security attributes
-+ TRUE, // handles are inherited
-+ 0, // creation flags
-+ NULL, // use parent's environment
-+ NULL, // use parent's current directory
-+ &siStartInfo,// STARTUPINFO pointer
-+ hProcInfo);// receives PROCESS_INFORMATION
-+ return bFuncRetn;
-+}
-+
-+/**
- * OK, so it would seem CreateProcess only handles true executables:
- * .com or .exe files. So grab $COMSPEC value and pass command line to it.
- */
-@@ -1815,44 +1906,30 @@
- {
- static const char *comspec = NULL;
- PROCESS_INFORMATION piProcInfo;
-- STARTUPINFOA siStartInfo;
- BOOL bFuncRetn = FALSE;
-
-- if (comspec == NULL) {
-+ if (!p_CreateProcessA || !p_CreateProcessW)
-+ return INVALID_HANDLE_VALUE;
-+
-+ if (comspec == NULL)
- comspec = getenv("COMSPEC");
-- }
- if (comspec == NULL) // should never happen
- return INVALID_HANDLE_VALUE;
-
- // Set up members of the PROCESS_INFORMATION structure.
- ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
-
-- // Set up members of the STARTUPINFO structure.
--
-- ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
-- siStartInfo.cb = sizeof(STARTUPINFO);
-- // setup new process to use supplied handles for stdin,stdout,stderr
- // if supplied handles are not used the send a copy of our STD_HANDLE
- // as appropriate
-- siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-- siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
-+ if (in == INVALID_HANDLE_VALUE)
-+ in = GetStdHandle(STD_INPUT_HANDLE);
-
-- if (in != INVALID_HANDLE_VALUE)
-- siStartInfo.hStdInput = in;
-- else
-- siStartInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
-+ if (out == INVALID_HANDLE_VALUE)
-+ out = GetStdHandle(STD_OUTPUT_HANDLE);
-
-- if (out != INVALID_HANDLE_VALUE)
-- siStartInfo.hStdOutput = out;
-- else
-- siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
-- if (err != INVALID_HANDLE_VALUE)
-- siStartInfo.hStdError = err;
-- else
-- siStartInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
-+ if (err == INVALID_HANDLE_VALUE)
-+ err = GetStdHandle(STD_ERROR_HANDLE);
-
-- // Create the child process.
--
- char *exeFile;
- const char *argStart;
-
-@@ -1860,43 +1937,32 @@
- return INVALID_HANDLE_VALUE;
- }
-
-- int cmdLen = strlen(comspec) + 4 + strlen(exeFile) + strlen(argStart) + 1;
-+ POOL_MEM cmdLine(PM_FNAME);
-+ Mmsg(cmdLine, "%s /c %s%s", comspec, exeFile, argStart);
-
-- char *cmdLine = (char *)alloca(cmdLen);
--
-- snprintf(cmdLine, cmdLen, "%s /c %s%s", comspec, exeFile, argStart);
--
- free(exeFile);
-
-- Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
-+ if (p_CreateProcessW && p_MultiByteToWideChar) {
-+ bFuncRetn = CreateChildProcessW(comspec, cmdLine.c_str(), &piProcInfo,
-+ in, out, err);
-+ } else {
-+ bFuncRetn = CreateChildProcessA(comspec, cmdLine.c_str(), &piProcInfo,
-+ in, out, err);
-+ }
-
-- // try to execute program
-- bFuncRetn = CreateProcessA(comspec,
-- cmdLine, // command line
-- NULL, // process security attributes
-- NULL, // primary thread security attributes
|
|
Renamed |
Release_Notes-2.4.4-1.tar.gz
^
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/ChangeLog
^
|
@@ -1,6 +1,56 @@
Technical notes on version 2.4.x
General:
+Release Version 2.4.4
+28Dec08
+kes Apply fix suggested by Bruno Friedmann to configure.in to
+ find python2.5
+
+Beta Release Version 2.4.4-b2
+23Dec08
+kes Fix bug #1208. Inappropriate Volume purging.
+22Dec08
+kes Modify sql_update.c to edit zeros rather than NULL in unset
+ fields. This should fix bug #1206, where apparently the user
+ has modified the Bacula schema.
+20Dec08
+kes Backport most recent changes to compat.h and compat.cpp.
+13Dec08
+kes Create and apply 2.4.3-migrate2.patch, which fixes two bugs
+ - Bug #1206 -- sql error when there are no files to migrate.
+ - Bug #1171 -- Job catalog log is not migrated during migration.
+
+Beta Release Version 2.4.4-b1
+03Dec08
+kes Apply 2.4.3-sd-deadlock.patch that should fix bug #1192.
+02Dec08
+ebl Remove extra db_lock() in get_prune_list_for_volume()
+ebl Apply 2.4.3-prune-deadlock.patch that fixes a problem when
+ using Catalog as message backend.
+20Nov08
+ebl Apply 2.4.3-win32-runscript-unicode-path.patch for #1110
+ about a problem when executing a program with Unicode path.
+ebl Apply 2.4.3-unique-inchanger.patch fix for #1175 about bad slot
+ number if the volume is not in autochanger.
+18Nov08
+kes Probably fix for bug #1188 where Volume is purged while writing
+ on it.
+kes Get message enhancement to avoid job name lookup.
+07Nov08
+kes Fix bug with job name duplication if more than 60 jobs created
+ during a minute.
+kes Correct some bugs of cleanup in SD if the FD connection fails.
+02Nov08
+kes Fix orphaned jobs (possible deadlock) while pruning.
+31Oct08
+ebl Backport of the btraceback script that keeps trace file on working dir
+28Oct08
+kes Migrate DB Log records too. This fixes last part of bug #1171.
+24Oct08
+kes Modify SQL so that jobs that failed will not be migrated.
+kes Correct bug where long retention periods caused immediate
+ pruning.
+
Release Version 2.4.3
10Oct08
ebl Apply 2.4.2-cancel-non-running-jobs.patch to be able to cancel
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/LICENSE
^
|
@@ -5,7 +5,7 @@
on 15 November 2006.
Trademark:
-The name Bacula is a registered trademark.
+The name Bacula is a registered trademark of Kern Sibbald.
===================================
@@ -20,37 +20,38 @@
Linking:
Bacula may be linked with any libraries permitted under the GPL.
-However, if configured with encryption Bacula does use the
-OpenSSL libraries which are, unfortunately, not compatible with
+However, if configured with encryption, Bacula does use the
+OpenSSL libraries, and the OpenSSL license is not compatible with
GPL v2. To the best of our knowledge these libraries are not
distributed with Bacula code because they are shared objects, and
as such there is no conflict with the GPL according what I (Kern)
-understand in talking to FSFE, and in any case, for the code that
+understand in talking to FSFE. In any case, for the code that
I have written, I have no problems linking in OpenSSL (of course
this does not speak for the few files in Bacula that are
-copyrighted by others). If you take a more severe stance on this
-issue, and you are going to distribute Bacula, then simply do not
-use the --with-openssl when building your package, and no use of
-OpenSSL even through dynamic linking will be included.
+copyrighted by others). If you take a more severe stance on the
+issue of dynamic linking to OpenSSL, and you are going to
+distribute Bacula, then simply do not use the --with-openssl when
+building your package, and Bacula will not use OpenSSL.
IP rights:
-Recipient understands that although each Contributor grants the
-licenses to its Contributions set forth herein, no assurances are
-provided by any Contributor that the Program does not infringe
-the patent or other intellectual property rights of any other
-entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of
-intellectual property rights or otherwise. As a condition to
-exercising the rights and licenses granted hereunder, each
-Recipient hereby assumes sole responsibility to secure any other
-intellectual property rights needed, if any. For example, if a
-third party patent license is required to allow Recipient to
-distribute the Program, it is Recipient's responsibility to
-acquire that license before distributing the Program.
+Recipient understands that although each Contributor to Bacula
+grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does
+not infringe the patent or other intellectual property rights of
+any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on
+infringement of intellectual property rights or otherwise. As a
+condition to exercising the rights and licenses granted
+hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow
+Recipient to distribute the Program, it is Recipient's
+responsibility to acquire that license before distributing the
+Program.
Copyrights:
-Each Contributor represents that to its knowledge it has
+Each Contributor to Bacula represents that to its knowledge it has
sufficient copyright rights in its Contribution, if any, to grant
the copyright license set forth in this Agreement.
@@ -89,18 +90,20 @@
and may contain Microsoft intellectual property (examples:
Microsoft VC++, the source to the VSS libraries, the Microsoft C
runtime libraries). As such we cannot and do not distribute that
-software. We are permitted however to distribute Bacula with the
-necessary Microsoft libraries in binary form.
+software in source form. We are permitted however to distribute
+Bacula with the necessary Microsoft libraries in binary form.
-You may obtain the parts that we cannot distribute as follows. The
+You may obtain the parts that we cannot distribute as follows: The
Microsoft compiler available for purchase, and Microsoft provides a free
-version of the compiler. The source code and libraries are available for
-download from Microsoft public Web servers. We have documented in the
-src/win32 directory the URLs from which we obtained the library source, and
-how we build the Windows File daemon and many users have succeeded in doing
-so themselves. Our intention is to respect as closely as possible Open
-Source practices while maintaining full respect for proprietary and
-copyrighted code.
+version of the compiler (note, we do not use the Microsoft compiler, but
+rather build the Bacula Win32 client using g++ cross compiling on Linux).
+The Microsoft source code that we use in the Win32 Bacula Client (Volume
+Shadow Copy interface) is available for download from Microsoft public
+Web servers. We have documented in the src/win32 directory the URLs from
+which we obtained the library source, and how we build the Windows File
+daemon and many users have succeeded in doing so themselves. Our
+intention is to respect as closely as possible Open Source practices
+while maintaining full respect for proprietary and copyrighted code.
BSD code used in the Windows version only:
Code falling under the BSD license has the following license:
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/Patchnotes-2.4
^
|
@@ -0,0 +1,71 @@
+ Patch notes on version 2.4
+
+Patches Released to Source Forge:
+03Dec08
+2.4.3-prune-deadlock.patch
+03Nov08
+2.4.3-orphaned-jobs.patch
+
+Patches Committed:
+13Dec08
+2.4.3-migrate2.patch
+03Dec08
+2.4.3-sd-deadlock.patch
+02Dec08
+2.4.3-prune-deadlock.patch
+20Nov08
+2.4.3-unique-inchanger.patch
+2.4.3-win32-runscript-unicode-path.patch
+18Nov08
+2.4.3-purge-bug.patch
+2.4.3-getmsg.patch
+28Oct08
+2.4.3-jobs.patch
+2.4.3-orphaned-jobs.patch
+2.4.3-migrate-log.patch
+2.4.3-migrate.patch
+2.4.3-prune.patch
+2.4.3-update-slots.patch
+2.4.3-win32-runscript-unicode-path.patch
+
+Patches being Tested:
+20Nov08
+2.4.3-cancel-after-network-outage.patch
+ebl backport from trunk. Use select() with a timeout to recieve the
+ JobEnd message.
+18Nov08
+2.4.3-purge-bug.patch
+kes This patch corrects appears to fix bug #1188, where a Volume can
+ be purged while it is being written.
+kes This patch used the jcr stored in the BSOCK packet during callbacks
+ to the Director rather than looking them up in the JCR list.
+07Nov08
+2.4.3-jobs.patch
+kes If you start more than 60 jobs within a 1 minute period, the unique
+ jobname (critical for the daemons) can be duplicated leading to
+ authentication failures and orphaned jobs.
+kes FD jobs that fail SD authentication were not properly cleaned up.
+03Nov08
+2.4.3-getmsg.patch
+kes Patch to use BSOCK jcr rather than searching for it.
+02Nov08
+2.4.3-orphaned-jobs.patch
+kes This patch fixes a case of orphaned jobs (and possible deadlock)
+ during pruning.
+28Oct08
+2.4.3-migrate-log.patch
+kes This patch should cause all Job Log records to be migrated when the
+ Job is migrated. It fixes the second issue reported in bug #1171.
+
+2.4.3-migrate.patch
+kes This patch should prevent migration jobs from attempting to migrate
+ jobs that failed.
+
+2.4.3-prune.patch
+kes This patch should fix the bug reported on the bacula-users list where
+ a retention period of 100 years does immediate prunning.
+
+2.4.3-update-slots.patch
+ebl This patch corrects a problem when removing a volume from
+ an autochanger and the slot is still empty when running
+ update slots command. #1175
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/ReleaseNotes
^
|
@@ -1,5 +1,5 @@
- Release Notes for Bacula 2.4.3
+ Release Notes for Bacula 2.4.4
Bacula code: Total files = 500 Total lines = 188,945 (*.h *.c *.in)
@@ -14,6 +14,51 @@
in your FileSet.
==============================================================
+Release 2.4.4
+This is an important bug fix to version 2.4.3. All daemones are
+compatible with prior 2.4.x version.
+
+Bugs Fixed:
+1192, 1110, 1175, 1188, 1171, 1206, and 1208.
+
+Change Summary:
+- Apply fix suggested by Bruno Friedmann to configure.in to
+ find python2.5
+Beta Release Version 2.4.4-b2
+- Fix bug #1208. Inappropriate Volume purging.
+- Modify sql_update.c to edit zeros rather than NULL in unset
+ fields. This should fix bug #1206, where apparently the user
+ has modified the Bacula schema.
+- Backport most recent changes to compat.h and compat.cpp
+ attempt to fix restore problem with accents in path. This
+ works in version 2.5.x but is not tested in 2.4.4.
+- Create and apply 2.4.3-migrate2.patch, which fixes two bugs
+ - Bug #1206 -- sql error when there are no files to migrate.
+ - Bug #1171 -- Job catalog log is not migrated during migration.
+Beta Release 2.4.4-b1
+- Apply 2.4.3-sd-deadlock.patch that should fix bug #1192.
+- Remove extra db_lock() in get_prune_list_for_volume()
+- Apply 2.4.3-prune-deadlock.patch that fixes a problem when
+ using Catalog as message backend.
+- Apply 2.4.3-win32-runscript-unicode-path.patch for #1110
+ about a problem when executing a program with Unicode path.
+- Apply 2.4.3-unique-inchanger.patch fix for #1175 about bad slot
+ number if the volume is not in autochanger.
+- Fix for bug #1188 where Volume is purged while writing
+ on it.
+- Get message enhancement to avoid job name lookup.
+- Fix bug with job name duplication if more than 60 jobs created
+ during a minute.
+- Correct some bugs of cleanup in SD if the FD connection fails.
+- Fix orphaned jobs (possible deadlock) while pruning.
+- Backport of the btraceback script that keeps trace file on working dir
+- Migrate DB Log records too. This fixes last part of bug #1171.
+- Modify SQL so that jobs that failed will not be migrated.
+- Correct bug where long retention periods caused immediate
+ pruning.
+
+
+=================================================================
Release 2.4.3
This is a bug fix to version 2.4.2. All daemons are compatible
with other 2.4.x versions.
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/autoconf/configure.in
^
|
@@ -723,7 +723,7 @@
if test "$withval" != "no"; then
if test "$withval" = "yes"; then
for python_root in /usr /usr/local /usr/sfw; do
- for ver in python2.2 python2.3 python2.4 python2.5; do
+ for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
if test -f $python_root/include/${ver}/Python.h; then
PYTHON_INCDIR=-I$python_root/include/${ver}
if test -d $python_root/lib64/${ver}/config; then
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/configure
^
|
@@ -15621,7 +15621,7 @@
if test "$withval" != "no"; then
if test "$withval" = "yes"; then
for python_root in /usr /usr/local /usr/sfw; do
- for ver in python2.2 python2.3 python2.4 python2.5; do
+ for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
if test -f $python_root/include/${ver}/Python.h; then
PYTHON_INCDIR=-I$python_root/include/${ver}
if test -d $python_root/lib64/${ver}/config; then
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-cancel-after-network-outage.patch
^
|
@@ -0,0 +1,135 @@
+
+ This patch fixes a problem when canceling job if client looses
+ connection while being backed up
+ Apply the patch to version 2.4.3 (and previous versions) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-cancel-after-network-outage.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/backup.c
+===================================================================
+--- src/dird/backup.c (révision 7772)
++++ src/dird/backup.c (copie de travail)
+@@ -240,14 +240,16 @@
+ }
+ return false;
+
+-/* Come here only after starting SD thread */
++/* Come here only after starting SD thread
++ * and we don't expect any EndJob message because the
++ * the client don't have recieve the "backup" command.
++ */
+ bail_out:
+ set_jcr_job_status(jcr, JS_ErrorTerminated);
+- Dmsg1(400, "wait for sd. use=%d\n", jcr->use_count());
+- /* Cancel SD */
+- cancel_storage_daemon_job(jcr);
+- wait_for_storage_daemon_termination(jcr);
+- Dmsg1(400, "after wait for sd. use=%d\n", jcr->use_count());
++ Dmsg1(400, "wait for sd and fd. use=%d\n", jcr->use_count());
++ /* Get status from SD and FD */
++ wait_for_job_termination(jcr, false /* don't expect EndJob message*/);
++ Dmsg1(400, "after wait for sd and fd. use=%d\n", jcr->use_count());
+ return false;
+ }
+
+@@ -258,7 +260,7 @@
+ * are done, we return the job status.
+ * Also used by restore.c
+ */
+-int wait_for_job_termination(JCR *jcr)
++int wait_for_job_termination(JCR *jcr, bool expect_EndJob)
+ {
+ int32_t n = 0;
+ BSOCK *fd = jcr->file_bsock;
+@@ -270,30 +272,51 @@
+ int Encrypt = 0;
+
+ set_jcr_job_status(jcr, JS_Running);
+- /* Wait for Client to terminate */
+- while ((n = bget_dirmsg(fd)) >= 0) {
+- if (!fd_ok &&
+- (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
+- &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 ||
+- sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
+- &ReadBytes, &JobBytes, &Errors) == 5)) {
+- fd_ok = true;
+- set_jcr_job_status(jcr, jcr->FDJobStatus);
+- Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus);
+- } else {
+- Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"),
+- fd->msg);
++
++
++ if (fd) {
++ /* Wait for Client to terminate
++ * In some conditions, the client isn't able to send
++ * any messages and we should not wait for ages
++ */
++ int OK=true;
++ int ret;
++ while (OK && expect_EndJob) {
++
++ /* Even if the job is canceled, we let a chance to FD to
++ * send EndJob message
++ */
++ if (job_canceled(jcr)) {
++ OK=false;
++ }
++
++ /* wait for data few minutes */
++ ret = fd->wait_data_intr(3*60, 0);
++ if (ret == 1) { /* get data */
++ n = bget_dirmsg(fd);
++ if (n >= 0 &&
++ (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
++ &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 ||
++ sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
++ &ReadBytes, &JobBytes, &Errors) == 5)) {
++ fd_ok = true;
++ set_jcr_job_status(jcr, jcr->FDJobStatus);
++ OK=false; /* end of loop */
++ } else {
++ Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"),
++ fd->msg);
++ }
++ } /* else get timeout or network error */
++
++ if (is_bnet_error(fd)) {
++ Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
++ job_type_to_str(jcr->JobType), fd->bstrerror());
++ OK=false;
++ }
+ }
+- if (job_canceled(jcr)) {
+- break;
+- }
+- }
+
+- if (is_bnet_error(fd)) {
+- Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
+- job_type_to_str(jcr->JobType), fd->bstrerror());
++ fd->signal(BNET_TERMINATE); /* tell Client we are terminating */
+ }
+- fd->signal(BNET_TERMINATE); /* tell Client we are terminating */
+
+ /* Force cancel in SD if failing */
+ if (job_canceled(jcr) || !fd_ok) {
+Index: src/dird/protos.h
+===================================================================
+--- src/dird/protos.h (révision 7772)
++++ src/dird/protos.h (copie de travail)
+@@ -52,7 +52,7 @@
+ extern bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
+
+ /* backup.c */
+-extern int wait_for_job_termination(JCR *jcr);
++extern int wait_for_job_termination(JCR *jcr, bool expect_EndJob=true);
+ extern bool do_backup_init(JCR *jcr);
+ extern bool do_backup(JCR *jcr);
+ extern void backup_cleanup(JCR *jcr, int TermCode);
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-getmsg.patch
^
|
@@ -0,0 +1,135 @@
+
+ This patch used the jcr stored in the BSOCK packet during callbacks
+ to the Director rather than looking them up in the JCR list.
+
+ It can be applied to Bacula version 2.4.3 (or earlier) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-getmsg.patch
+ ./configure <your options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/getmsg.c
+===================================================================
+--- src/dird/getmsg.c (revision 7970)
++++ src/dird/getmsg.c (working copy)
+@@ -1,7 +1,7 @@
+ /*
+ Bacula® - The Network Backup Solution
+
+- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
++ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+
+ The main author of Bacula is Kern Sibbald, with contributions from
+ many others, a complete list can be found in the file AUTHORS.
+@@ -20,7 +20,7 @@
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+- Bacula® is a registered trademark of John Walker.
++ Bacula® is a registered trademark of Kern Sibbald.
+ The licensor of Bacula is the Free Software Foundation Europe
+ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+ Switzerland, email:ftf@fsfeurope.org.
+@@ -102,12 +102,12 @@
+ char Job[MAX_NAME_LENGTH];
+ char MsgType[20];
+ int type, level;
+- JCR *jcr;
++ JCR *jcr = bs->jcr();
+ char *msg;
+
+ for (;;) {
+ n = bs->recv();
+- Dmsg2(100, "bget_dirmsg %d: %s", n, bs->msg);
++ Dmsg2(300, "bget_dirmsg %d: %s\n", n, bs->msg);
+
+ if (is_bnet_stop(bs)) {
+ return n; /* error or terminate */
+@@ -142,7 +142,7 @@
+ bs->fsend("btime %s\n", edit_uint64(get_current_btime(),ed1));
+ break;
+ default:
+- Emsg1(M_WARNING, 0, _("bget_dirmsg: unknown bnet signal %d\n"), bs->msglen);
++ Jmsg1(jcr, M_WARNING, 0, _("bget_dirmsg: unknown bnet signal %d\n"), bs->msglen);
+ return n;
+ }
+ continue;
+@@ -160,21 +160,13 @@
+ * Try to fulfill it.
+ */
+ if (sscanf(bs->msg, "%020s Job=%127s ", MsgType, Job) != 2) {
+- Emsg1(M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
++ Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+ continue;
+ }
+- if (strcmp(Job, "*System*") == 0) {
+- jcr = NULL; /* No jcr */
+- } else if (!(jcr=get_jcr_by_full_name(Job))) {
+- Emsg1(M_ERROR, 0, _("Job not found: %s\n"), bs->msg);
+- continue;
+- }
+- Dmsg1(900, "Getmsg got jcr 0x%x\n", jcr);
+
+ /* Skip past "Jmsg Job=nnn" */
+ if (!(msg=find_msg_start(bs->msg))) {
+- Emsg1(M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+- free_jcr(jcr);
++ Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+ continue;
+ }
+
+@@ -185,8 +177,7 @@
+ if (bs->msg[0] == 'J') { /* Job message */
+ if (sscanf(bs->msg, "Jmsg Job=%127s type=%d level=%d",
+ Job, &type, &level) != 3) {
+- Emsg1(M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+- free_jcr(jcr);
++ Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+ continue;
+ }
+ Dmsg1(900, "Got msg: %s\n", bs->msg);
+@@ -199,7 +190,6 @@
+ }
+ Dmsg1(900, "Dispatch msg: %s", msg);
+ dispatch_message(jcr, type, level, msg);
+- free_jcr(jcr);
+ continue;
+ }
+ /*
+@@ -209,21 +199,16 @@
+ if (bs->msg[0] == 'C') { /* Catalog request */
+ Dmsg2(900, "Catalog req jcr 0x%x: %s", jcr, bs->msg);
+ catalog_request(jcr, bs);
+- Dmsg1(900, "Calling freejcr 0x%x\n", jcr);
+- free_jcr(jcr);
+ continue;
+ }
+ if (bs->msg[0] == 'U') { /* SD sending attributes */
+ Dmsg2(900, "Catalog upd jcr 0x%x: %s", jcr, bs->msg);
+ catalog_update(jcr, bs);
+- Dmsg1(900, "Calling freejcr 0x%x\n", jcr);
+- free_jcr(jcr);
+ continue;
+ }
+ if (bs->msg[0] == 'M') { /* Mount request */
+ Dmsg1(900, "Mount req: %s", bs->msg);
+ mount_request(jcr, bs, msg);
+- free_jcr(jcr);
+ continue;
+ }
+ if (bs->msg[0] == 'S') { /* Status change */
+@@ -232,9 +217,8 @@
+ if (sscanf(bs->msg, Job_status, &Job, &JobStatus) == 2) {
+ jcr->SDJobStatus = JobStatus; /* current status */
+ } else {
+- Emsg1(M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
++ Jmsg1(jcr, M_ERROR, 0, _("Malformed message: %s\n"), bs->msg);
+ }
+- free_jcr(jcr);
+ continue;
+ }
+ #ifdef needed
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-jobs.patch
^
|
@@ -0,0 +1,127 @@
+
+ This patch corrects two problems:
+ 1. If you start more than 60 jobs within a 1 minute period, the unique
+ jobname (critical for the daemons) can be duplicated leading to
+ authentication failures and orphaned jobs.
+ 2. FD jobs that fail SD authentication were not properly cleaned up.
+
+ Apply it to Bacula 2.4.3 (possibly earlier versions)
+ with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-jobs.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/job.c
+===================================================================
+--- src/dird/job.c (revision 8011)
++++ src/dird/job.c (working copy)
+@@ -758,17 +758,17 @@
+ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ static time_t last_start_time = 0;
+ static int seq = 0;
+- time_t now;
++ time_t now = time(NULL);
+ struct tm tm;
+ char dt[MAX_TIME_LENGTH];
+ char name[MAX_NAME_LENGTH];
+ char *p;
++ int len;
+
+ /* Guarantee unique start time -- maximum one per second, and
+ * thus unique Job Name
+ */
+ P(mutex); /* lock creation of jobs */
+- now = time(NULL);
+ seq++;
+ if (seq > 59) { /* wrap as if it is seconds */
+ seq = 0;
+@@ -783,9 +783,10 @@
+ /* Form Unique JobName */
+ (void)localtime_r(&now, &tm);
+ /* Use only characters that are permitted in Windows filenames */
+- strftime(dt, sizeof(dt), "%Y-%m-%d_%H.%M", &tm);
++ strftime(dt, sizeof(dt), "%Y-%m-%d_%H.%M.%S", &tm);
++ len = strlen(dt) + 5; /* dt + .%02d EOS */
+ bstrncpy(name, base_name, sizeof(name));
+- name[sizeof(name)-22] = 0; /* truncate if too long */
++ name[sizeof(name)-len] = 0; /* truncate if too long */
+ bsnprintf(jcr->Job, sizeof(jcr->Job), "%s.%s.%02d", name, dt, seq); /* add date & time */
+ /* Convert spaces into underscores */
+ for (p=jcr->Job; *p; p++) {
+@@ -793,6 +794,7 @@
+ *p = '_';
+ }
+ }
++ Dmsg2(100, "JobId=%u created Job=%s\n", jcr->JobId, jcr->Job);
+ }
+
+ /* Called directly from job rescheduling */
+Index: src/stored/job.c
+===================================================================
+--- src/stored/job.c (revision 8011)
++++ src/stored/job.c (working copy)
+@@ -228,21 +228,25 @@
+ if (!(jcr=get_jcr_by_full_name(job_name))) {
+ Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name);
+ Dmsg1(3, "**** Job \"%s\" not found\n", job_name);
++ fd->close();
+ return;
+ }
+
+- jcr->file_bsock = fd;
+- jcr->file_bsock->set_jcr(jcr);
+-
+ Dmsg1(110, "Found Job %s\n", job_name);
+
+ if (jcr->authenticated) {
+ Jmsg2(jcr, M_FATAL, 0, _("Hey!!!! JobId %u Job %s already authenticated.\n"),
+ (uint32_t)jcr->JobId, jcr->Job);
++ Dmsg2(50, "Hey!!!! JobId %u Job %s already authenticated.\n",
++ (uint32_t)jcr->JobId, jcr->Job);
++ fd->close();
+ free_jcr(jcr);
+ return;
+ }
+
++ jcr->file_bsock = fd;
++ jcr->file_bsock->set_jcr(jcr);
++
+ /*
+ * Authenticate the File daemon
+ */
+Index: src/lib/bnet_server.c
+===================================================================
+--- src/lib/bnet_server.c (revision 8011)
++++ src/lib/bnet_server.c (working copy)
+@@ -1,7 +1,7 @@
+ /*
+ Bacula® - The Network Backup Solution
+
+- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
++ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+
+ The main author of Bacula is Kern Sibbald, with contributions from
+ many others, a complete list can be found in the file AUTHORS.
+@@ -20,7 +20,7 @@
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+- Bacula® is a registered trademark of John Walker.
++ Bacula® is a registered trademark of Kern Sibbald.
+ The licensor of Bacula is the Free Software Foundation Europe
+ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+ Switzerland, email:ftf@fsfeurope.org.
+@@ -137,7 +137,7 @@
+ be.bstrerror());
+ }
+ }
+- listen(fd_ptr->fd, 5); /* tell system we are ready */
++ listen(fd_ptr->fd, 20); /* tell system we are ready */
+ sockfds.append(fd_ptr);
+ }
+ /* Start work queue thread */
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-migrate-log.patch
^
|
@@ -0,0 +1,71 @@
+
+ This patch should cause all Job Log records to be migrated when the
+ Job is migrated. It fixes the second issue reported in bug #1171.
+
+ Apply it to Bacula 2.4.3 (possibly earlier versions)
+ with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-migrate.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/dird/migrate.c
+===================================================================
+--- src/dird/migrate.c (revision 7926)
++++ src/dird/migrate.c (working copy)
+@@ -402,14 +402,6 @@
+ }
+
+ migration_cleanup(jcr, jcr->JobStatus);
+- if (mig_jcr) {
+- char jobid[50];
+- UAContext *ua = new_ua_context(jcr);
+- edit_uint64(jcr->previous_jr.JobId, jobid);
+- /* Purge all old file records, but leave Job record */
+- purge_files_from_jobs(ua, jobid);
+- free_ua_context(ua);
+- }
+ return true;
+ }
+
+@@ -1087,11 +1079,26 @@
+ edit_uint64(mig_jcr->jr.JobId, ec2));
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+
+- /* Now mark the previous job as migrated if it terminated normally */
+- if (jcr->JobStatus == JS_Terminated) {
++ /*
++ * If we terminated a migration normally:
++ * - mark the previous job as migrated
++ * - move any Log records to the new JobId
++ * - Purge the File records from the previous job
++ */
++ if (jcr->JobType == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
++ char old_jobid[50], new_jobid[50];
+ Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+- (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, ec1));
++ (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, new_jobid));
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
++ UAContext *ua = new_ua_context(jcr);
++ /* Move JobLog to new JobId */
++ Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
++ new_jobid,
++ edit_uint64(jcr->previous_jr.JobId, old_jobid));
++ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
++ /* Purge all old file records, but leave Job record */
++ purge_files_from_jobs(ua, old_jobid);
++ free_ua_context(ua);
+ }
+
+ if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
+@@ -1100,7 +1107,6 @@
+ set_jcr_job_status(jcr, JS_ErrorTerminated);
+ }
+
+-
+ update_bootstrap_file(mig_jcr);
+
+ if (!db_get_job_volume_names(mig_jcr, mig_jcr->db, mig_jcr->jr.JobId, &mig_jcr->VolumeName)) {
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-migrate.patch
^
|
@@ -0,0 +1,53 @@
+
+ This patch should prevent migration jobs from attempting to migrate
+ jobs that failed. Apply it to Bacula 2.4.3 (possibly earlier versions)
+ with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-migrate.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/migrate.c
+===================================================================
+--- src/dird/migrate.c (revision 7757)
++++ src/dird/migrate.c (working copy)
+@@ -377,7 +377,7 @@
+ * to avoid two threads from using the BSOCK structure at
+ * the same time.
+ */
+- if (!bnet_fsend(sd, "run")) {
++ if (!sd->fsend("run")) {
+ return false;
+ }
+
+@@ -520,6 +520,7 @@
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool,Client"
+ " WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
+ " AND Job.ClientId=Client.ClientId AND Job.Type='B'"
++ " AND Job.JobStatus = 'T'"
+ " ORDER by Job.StartTime";
+
+ /* Get Volume names in Pool */
+@@ -533,9 +534,9 @@
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM Media,JobMedia,Job"
+ " WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
+ " AND JobMedia.JobId=Job.JobId AND Job.Type='B'"
++ " AND Job.JobStatus = 'T' AND Media.Enabled=1"
+ " ORDER by Job.StartTime";
+
+-
+ const char *sql_smallest_vol =
+ "SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
+ " Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
+@@ -570,7 +571,6 @@
+ const char *sql_job_bytes =
+ "SELECT SUM(JobBytes) FROM Job WHERE JobId IN (%s)";
+
+-
+ /* Get Media Ids in Pool */
+ const char *sql_mediaids =
+ "SELECT MediaId FROM Media,Pool WHERE"
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-migrate2.patch
^
|
@@ -0,0 +1,85 @@
+
+ This patch should fix two bugs:
+ - Bug #1206 -- sql error when there are no files to migrate.
+ - Bug #1171 -- Job catalog log is not migrated during migration.
+
+ Apply it to a fully patched (requires two previous migration patches)
+ 2.4.3 version with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-migrate2.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/migrate.c
+===================================================================
+--- src/dird/migrate.c (revision 8152)
++++ src/dird/migrate.c (working copy)
+@@ -122,6 +122,12 @@
+
+ Dmsg2(dbglevel, "Read pool=%s (From %s)\n", jcr->rpool->name(), jcr->rpool_source);
+
++ if (!get_or_create_fileset_record(jcr)) {
++ Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
++ Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
++ return false;
++ }
++
+ /* If we find a job or jobs to migrate it is previous_jr.JobId */
+ count = get_job_to_migrate(jcr);
+ if (count < 0) {
+@@ -139,12 +145,6 @@
+ return true; /* no work */
+ }
+
+- if (!get_or_create_fileset_record(jcr)) {
+- Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
+- Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
+- return false;
+- }
+-
+ create_restore_bootstrap_file(jcr);
+
+ if (jcr->previous_jr.JobId == 0 || jcr->ExpectedFiles == 0) {
+@@ -1062,6 +1062,11 @@
+ * mig_jcr is jcr of the newly migrated job.
+ */
+ if (mig_jcr) {
++ char old_jobid[50], new_jobid[50];
++
++ edit_uint64(jcr->previous_jr.JobId, old_jobid);
++ edit_uint64(mig_jcr->jr.JobId, new_jobid);
++
+ mig_jcr->JobFiles = jcr->JobFiles = jcr->SDJobFiles;
+ mig_jcr->JobBytes = jcr->JobBytes = jcr->SDJobBytes;
+ mig_jcr->VolSessionId = jcr->VolSessionId;
+@@ -1076,7 +1081,7 @@
+ "JobTDate=%s WHERE JobId=%s",
+ jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime,
+ edit_uint64(jcr->previous_jr.JobTDate, ec1),
+- edit_uint64(mig_jcr->jr.JobId, ec2));
++ new_jobid);
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+
+ /*
+@@ -1086,15 +1091,13 @@
+ * - Purge the File records from the previous job
+ */
+ if (jcr->JobType == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
+- char old_jobid[50], new_jobid[50];
+ Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+- (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, new_jobid));
++ (char)JT_MIGRATED_JOB, old_jobid);
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+ UAContext *ua = new_ua_context(jcr);
+ /* Move JobLog to new JobId */
+ Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
+- new_jobid,
+- edit_uint64(jcr->previous_jr.JobId, old_jobid));
++ new_jobid, old_jobid);
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+ /* Purge all old file records, but leave Job record */
+ purge_files_from_jobs(ua, old_jobid);
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-orphaned-jobs.patch
^
|
@@ -0,0 +1,24 @@
+
+ This patch fixes a case of orphaned jobs (and possible deadlock)
+ during pruning.
+ Apply it to Bacula 2.4.3 (possibly earlier versions) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-orphaned-jobs.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/dird/ua_prune.c
+===================================================================
+--- src/dird/ua_prune.c (revision 7949)
++++ src/dird/ua_prune.c (working copy)
+@@ -468,6 +468,7 @@
+ break;
+ }
+ }
++ endeach_jcr(jcr);
+ if (skip) {
+ continue;
+ }
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-prune-deadlock.patch
^
|
@@ -0,0 +1,56 @@
+
+ This patch corrects a deadlock that can occure when using the catalog
+ as message backend and the director decides to prune volumes.
+
+ Apply it to Bacula 2.4.3 (possibly earlier versions)
+ with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-prune-deadlock.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/lib/jcr.c
+===================================================================
+--- src/lib/jcr.c (révision 8063)
++++ src/lib/jcr.c (copie de travail)
+@@ -438,7 +438,6 @@
+
+ #endif
+
+- dequeue_messages(jcr);
+ lock_jcr_chain();
+ jcr->dec_use_count(); /* decrement use count */
+ if (jcr->use_count() < 0) {
+@@ -455,6 +454,7 @@
+ remove_jcr(jcr); /* remove Jcr from chain */
+ unlock_jcr_chain();
+
++ dequeue_messages(jcr);
+ job_end_pop(jcr); /* pop and call hooked routines */
+
+ Dmsg1(3400, "End job=%d\n", jcr->JobId);
+Index: src/dird/ua_prune.c
+===================================================================
+--- src/dird/ua_prune.c (révision 8100)
++++ src/dird/ua_prune.c (copie de travail)
+@@ -435,8 +435,6 @@
+ return 0; /* cannot prune Archived volumes */
+ }
+
+- db_lock(ua->db);
+-
+ /*
+ * Now add to the list of JobIds for Jobs written to this Volume
+ */
+@@ -477,6 +475,5 @@
+ }
+
+ bail_out:
+- db_unlock(ua->db);
+ return count;
+ }
+
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-prune.patch
^
|
@@ -0,0 +1,57 @@
+
+ This patch should fix the bug reported on the bacula-users list where
+ a retention period of 100 years does immediate prunning.
+ Apply it to 2.4.3 (or earlier versions) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-prune.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/dird/ua_prune.c
+===================================================================
+--- src/dird/ua_prune.c (revision 7757)
++++ src/dird/ua_prune.c (working copy)
+@@ -202,7 +202,7 @@
+ now = (utime_t)time(NULL);
+
+ /* Select Jobs -- for counting */
+- Mmsg(query, count_select_job, edit_uint64(now - period, ed1),
++ Mmsg(query, count_select_job, edit_int64(now - period, ed1),
+ edit_int64(cr.ClientId, ed2));
+ Dmsg3(050, "select now=%u period=%u sql=%s\n", (uint32_t)now,
+ (uint32_t)period, query.c_str());
+@@ -230,7 +230,7 @@
+ del.JobId = (JobId_t *)malloc(sizeof(JobId_t) * del.max_ids);
+
+ /* Now process same set but making a delete list */
+- Mmsg(query, select_job, edit_uint64(now - period, ed1),
++ Mmsg(query, select_job, edit_int64(now - period, ed1),
+ edit_int64(cr.ClientId, ed2));
+ db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)&del);
+
+@@ -318,7 +318,7 @@
+ * Select all files that are older than the JobRetention period
+ * and stuff them into the "DeletionCandidates" table.
+ */
+- edit_uint64(now - period, ed1);
++ edit_int64(now - period, ed1);
+ Mmsg(query, insert_delcand, (char)JobType, ed1,
+ edit_int64(cr.ClientId, ed2));
+ if (!db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL)) {
+@@ -443,10 +443,10 @@
+ edit_int64(mr->MediaId, ed1);
+ period = mr->VolRetention;
+ now = (utime_t)time(NULL);
+- edit_uint64(now-period, ed2);
++ edit_int64(now-period, ed2);
+ Mmsg(query, sel_JobMedia, ed1, ed2);
+- Dmsg3(250, "Now=%d period=%d now-period=%d\n", (int)now, (int)period,
+- (int)(now-period));
++ Dmsg3(250, "Now=%d period=%d now-period=%s\n", (int)now, (int)period,
++ ed2);
+
+ Dmsg1(050, "Query=%s\n", query.c_str());
+ if (!db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)del)) {
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-purge-bug.patch
^
|
@@ -0,0 +1,29 @@
+
+ This patch corrects appears to fix bug #1188, where a Volume can
+ be purged while it is being written.
+
+ Apply it to Bacula 2.4.3 (possibly earlier versions)
+ with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-purge-bug.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/dird/ua_purge.c
+===================================================================
+--- src/dird/ua_purge.c (revision 8054)
++++ src/dird/ua_purge.c (working copy)
+@@ -463,6 +463,9 @@
+ bool purged = false;
+ char ed1[50];
+
++ if (mr->FirstWritten == 0 || mr->LastWritten == 0) {
++ goto bail_out; /* not written cannot purge */
++ }
+ if (strcmp(mr->VolStatus, "Purged") == 0) {
+ purged = true;
+ goto bail_out;
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-unique-inchanger.patch
^
|
@@ -0,0 +1,39 @@
+
+ This patch should fix the bug #1175 about Slot field
+ that is not reset after update slots.
+ Should work for 2.4.3 with 2.4.3-update-slots.patch
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-unique-inchanger.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/cats/sql_update.c
+===================================================================
+--- src/cats/sql_update.c (révision 8063)
++++ src/cats/sql_update.c (copie de travail)
+@@ -448,19 +448,19 @@
+ if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0) {
+
+ if (mr->MediaId != 0) {
+- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s AND MediaId!=%s",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
+
+ } else if (mr->VolumeName[0]) { /* We have a volume name */
+- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s AND VolumeName!='%s'",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
+
+ } else { /* used by ua_label to reset all volume with this slot */
+- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-update-slots.patch
^
|
@@ -0,0 +1,79 @@
+
+ This patch corrects a problem when removing a volume from
+ an autochanger and the slot is still empty when running
+ update slots command. #1175
+
+ Apply it to version 2.4.3 with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-update-slots.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/cats/sql_update.c
+===================================================================
+--- src/cats/sql_update.c (revision 7854)
++++ src/cats/sql_update.c (working copy)
+@@ -445,14 +445,28 @@
+ db_make_inchanger_unique(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
+ {
+ char ed1[50], ed2[50];
+- if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0 &&
+- mr->MediaId != 0) {
+- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
+- "Slot=%d AND StorageId=%s AND MediaId!=%s",
+- mr->Slot,
+- edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
+- Dmsg1(400, "%s\n", mdb->cmd);
+- UPDATE_DB(jcr, mdb, mdb->cmd);
++ if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0) {
++
++ if (mr->MediaId != 0) {
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ "Slot=%d AND StorageId=%s AND MediaId!=%s",
++ mr->Slot,
++ edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
++
++ } else if (mr->VolumeName[0]) { /* We have a volume name */
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ "Slot=%d AND StorageId=%s AND VolumeName!='%s'",
++ mr->Slot,
++ edit_int64(mr->StorageId, ed1), mr->VolumeName);
++
++ } else { /* used by ua_label to reset all volume with this slot */
++ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
++ "Slot=%d AND StorageId=%s",
++ mr->Slot,
++ edit_int64(mr->StorageId, ed1), mr->VolumeName);
++ }
++ Dmsg1(100, "%s\n", mdb->cmd);
++ UPDATE_DB(jcr, mdb, mdb->cmd);
+ }
+ }
+
+Index: src/cats/sql_create.c
+===================================================================
+--- src/cats/sql_create.c (revision 7854)
++++ src/cats/sql_create.c (working copy)
+@@ -459,14 +459,13 @@
+ "WHERE MediaId=%d", dt, mr->MediaId);
+ stat = UPDATE_DB(jcr, mdb, mdb->cmd);
+ }
++ /*
++ * Make sure that if InChanger is non-zero any other identical slot
++ * has InChanger zero.
++ */
++ db_make_inchanger_unique(jcr, mdb, mr);
+ }
+
+- /*
+- * Make sure that if InChanger is non-zero any other identical slot
+- * has InChanger zero.
+- */
+- db_make_inchanger_unique(jcr, mdb, mr);
+-
+ db_unlock(mdb);
+ return stat;
+ }
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.3-win32-runscript-unicode-path.patch
^
|
@@ -0,0 +1,289 @@
+
+ This patch fix #1110 about a problem when executing a program with
+ Unicode path.
+
+ It can be applied to 2.4.3 (and previous versions) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-win32-runscript-unicode-path.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+
+Index: src/win32/compat/compat.cpp
+===================================================================
+--- src/win32/compat/compat.cpp (révision 7772)
++++ src/win32/compat/compat.cpp (copie de travail)
+@@ -1807,6 +1807,97 @@
+ }
+
+ /**
++ * Create the process with UTF8 API
++ */
++static BOOL
++CreateChildProcessW(const char *comspec, const char *cmdLine,
++ PROCESS_INFORMATION *hProcInfo,
++ HANDLE in, HANDLE out, HANDLE err)
++{
++ STARTUPINFOW siStartInfo;
++ BOOL bFuncRetn = FALSE;
++
++ // Set up members of the STARTUPINFO structure.
++ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
++ siStartInfo.cb = sizeof(siStartInfo);
++ // setup new process to use supplied handles for stdin,stdout,stderr
++
++ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
++ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
++
++ siStartInfo.hStdInput = in;
++ siStartInfo.hStdOutput = out;
++ siStartInfo.hStdError = err;
++
++ // Convert argument to WCHAR
++ POOLMEM *cmdLine_wchar = get_pool_memory(PM_FNAME);
++ POOLMEM *comspec_wchar = get_pool_memory(PM_FNAME);
++
++ UTF8_2_wchar(&cmdLine_wchar, cmdLine);
++ UTF8_2_wchar(&comspec_wchar, comspec);
++
++ // Create the child process.
++ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec_wchar, cmdLine_wchar);
++
++ // try to execute program
++ bFuncRetn = p_CreateProcessW((WCHAR*)comspec_wchar,
++ (WCHAR*)cmdLine_wchar,// command line
++ NULL, // process security attributes
++ NULL, // primary thread security attributes
++ TRUE, // handles are inherited
++ 0, // creation flags
++ NULL, // use parent's environment
++ NULL, // use parent's current directory
++ &siStartInfo, // STARTUPINFO pointer
++ hProcInfo); // receives PROCESS_INFORMATION
++
++ free_pool_memory(cmdLine_wchar);
++ free_pool_memory(comspec_wchar);
++
++ return bFuncRetn;
++}
++
++
++/**
++ * Create the process with ANSI API
++ */
++static BOOL
++CreateChildProcessA(const char *comspec, char *cmdLine,
++ PROCESS_INFORMATION *hProcInfo,
++ HANDLE in, HANDLE out, HANDLE err)
++{
++ STARTUPINFOA siStartInfo;
++ BOOL bFuncRetn = FALSE;
++
++ // Set up members of the STARTUPINFO structure.
++ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
++ siStartInfo.cb = sizeof(siStartInfo);
++ // setup new process to use supplied handles for stdin,stdout,stderr
++ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
++ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
++
++ siStartInfo.hStdInput = in;
++ siStartInfo.hStdOutput = out;
++ siStartInfo.hStdError = err;
++
++ // Create the child process.
++ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
++
++ // try to execute program
++ bFuncRetn = p_CreateProcessA(comspec,
++ cmdLine, // command line
++ NULL, // process security attributes
++ NULL, // primary thread security attributes
++ TRUE, // handles are inherited
++ 0, // creation flags
++ NULL, // use parent's environment
++ NULL, // use parent's current directory
++ &siStartInfo,// STARTUPINFO pointer
++ hProcInfo);// receives PROCESS_INFORMATION
++ return bFuncRetn;
++}
++
++/**
+ * OK, so it would seem CreateProcess only handles true executables:
+ * .com or .exe files. So grab $COMSPEC value and pass command line to it.
+ */
+@@ -1815,44 +1906,30 @@
+ {
+ static const char *comspec = NULL;
+ PROCESS_INFORMATION piProcInfo;
+- STARTUPINFOA siStartInfo;
+ BOOL bFuncRetn = FALSE;
+
+- if (comspec == NULL) {
++ if (!p_CreateProcessA || !p_CreateProcessW)
++ return INVALID_HANDLE_VALUE;
++
++ if (comspec == NULL)
+ comspec = getenv("COMSPEC");
+- }
+ if (comspec == NULL) // should never happen
+ return INVALID_HANDLE_VALUE;
+
+ // Set up members of the PROCESS_INFORMATION structure.
+ ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
+
+- // Set up members of the STARTUPINFO structure.
+-
+- ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
+- siStartInfo.cb = sizeof(STARTUPINFO);
+- // setup new process to use supplied handles for stdin,stdout,stderr
+ // if supplied handles are not used the send a copy of our STD_HANDLE
+ // as appropriate
+- siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
+- siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
++ if (in == INVALID_HANDLE_VALUE)
++ in = GetStdHandle(STD_INPUT_HANDLE);
+
+- if (in != INVALID_HANDLE_VALUE)
+- siStartInfo.hStdInput = in;
+- else
+- siStartInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
++ if (out == INVALID_HANDLE_VALUE)
++ out = GetStdHandle(STD_OUTPUT_HANDLE);
+
+- if (out != INVALID_HANDLE_VALUE)
+- siStartInfo.hStdOutput = out;
+- else
+- siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
+- if (err != INVALID_HANDLE_VALUE)
+- siStartInfo.hStdError = err;
+- else
+- siStartInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
++ if (err == INVALID_HANDLE_VALUE)
++ err = GetStdHandle(STD_ERROR_HANDLE);
+
+- // Create the child process.
+-
+ char *exeFile;
+ const char *argStart;
+
+@@ -1860,43 +1937,32 @@
+ return INVALID_HANDLE_VALUE;
+ }
+
+- int cmdLen = strlen(comspec) + 4 + strlen(exeFile) + strlen(argStart) + 1;
++ POOL_MEM cmdLine(PM_FNAME);
++ Mmsg(cmdLine, "%s /c %s%s", comspec, exeFile, argStart);
+
+- char *cmdLine = (char *)alloca(cmdLen);
+-
+- snprintf(cmdLine, cmdLen, "%s /c %s%s", comspec, exeFile, argStart);
+-
+ free(exeFile);
+
+- Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
++ if (p_CreateProcessW && p_MultiByteToWideChar) {
++ bFuncRetn = CreateChildProcessW(comspec, cmdLine.c_str(), &piProcInfo,
++ in, out, err);
++ } else {
++ bFuncRetn = CreateChildProcessA(comspec, cmdLine.c_str(), &piProcInfo,
++ in, out, err);
++ }
+
+- // try to execute program
+- bFuncRetn = CreateProcessA(comspec,
+- cmdLine, // command line
+- NULL, // process security attributes
+- NULL, // primary thread security attributes
+- TRUE, // handles are inherited
+- 0, // creation flags
+- NULL, // use parent's environment
+- NULL, // use parent's current directory
+- &siStartInfo, // STARTUPINFO pointer
+- &piProcInfo); // receives PROCESS_INFORMATION
+-
+ if (bFuncRetn == 0) {
+ ErrorExit("CreateProcess failed\n");
+ const char *err = errorString();
+- Dmsg3(99, "CreateProcess(%s, %s, ...)=%s\n", comspec, cmdLine, err);
++ Dmsg3(99, "CreateProcess(%s, %s, ...)=%s\n",comspec,cmdLine.c_str(),err);
+ LocalFree((void *)err);
+ return INVALID_HANDLE_VALUE;
+ }
+ // we don't need a handle on the process primary thread so we close
+ // this now.
+ CloseHandle(piProcInfo.hThread);
+-
+ return piProcInfo.hProcess;
+ }
+
+-
+ void
+ ErrorExit (LPCSTR lpszMessage)
+ {
+Index: src/win32/compat/winapi.c
+===================================================================
+--- src/win32/compat/winapi.c (révision 7772)
++++ src/win32/compat/winapi.c (copie de travail)
+@@ -88,6 +88,9 @@
+
+ t_SHGetFolderPath p_SHGetFolderPath = NULL;
+
++t_CreateProcessA p_CreateProcessA = NULL;
++t_CreateProcessW p_CreateProcessW = NULL;
++
+ void
+ InitWinAPIWrapper()
+ {
+@@ -104,6 +107,12 @@
+
+ HMODULE hLib = LoadLibraryA("KERNEL32.DLL");
+ if (hLib) {
++ /* create process calls */
++ p_CreateProcessA = (t_CreateProcessA)
++ GetProcAddress(hLib, "CreateProcessA");
++ p_CreateProcessW = (t_CreateProcessW)
++ GetProcAddress(hLib, "CreateProcessW");
++
+ /* create file calls */
+ p_CreateFileA = (t_CreateFileA)
+ GetProcAddress(hLib, "CreateFileA");
+Index: src/win32/winapi.h
+===================================================================
+--- src/win32/winapi.h (révision 7772)
++++ src/win32/winapi.h (copie de travail)
+@@ -138,6 +138,32 @@
+
+ typedef BOOL (WINAPI * t_AttachConsole) (DWORD);
+
++typedef BOOL (WINAPI *t_CreateProcessA) (
++ LPCSTR,
++ LPSTR,
++ LPSECURITY_ATTRIBUTES,
++ LPSECURITY_ATTRIBUTES,
++ BOOL,
++ DWORD,
++ PVOID,
++ LPCSTR,
++ LPSTARTUPINFOA,
++ LPPROCESS_INFORMATION);
++typedef BOOL (WINAPI *t_CreateProcessW) (
++ LPCWSTR,
++ LPWSTR,
++ LPSECURITY_ATTRIBUTES,
++ LPSECURITY_ATTRIBUTES,
++ BOOL,
++ DWORD,
++ PVOID,
++ LPCWSTR,
++ LPSTARTUPINFOW,
++ LPPROCESS_INFORMATION);
++
++extern t_CreateProcessA DLL_IMP_EXP p_CreateProcessA;
++extern t_CreateProcessW DLL_IMP_EXP p_CreateProcessW;
++
+ extern t_GetFileAttributesA DLL_IMP_EXP p_GetFileAttributesA;
+ extern t_GetFileAttributesW DLL_IMP_EXP p_GetFileAttributesW;
+
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/2.4.x
^
|
+(directory)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-bacula.patch
^
|
(renamed from patches/2.4.0-bacula.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-bacula.patch
^
|
(renamed from patches/2.4.0-bacula.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-bus-error.patch
^
|
(renamed from patches/2.4.0-bus-error.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-bus-error.patch
^
|
(renamed from patches/2.4.0-bus-error.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-recycle.patch
^
|
(renamed from patches/2.4.0-recycle.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-recycle.patch
^
|
(renamed from patches/2.4.0-recycle.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-reschedule.patch
^
|
(renamed from patches/2.4.0-reschedule.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-reschedule.patch
^
|
(renamed from patches/2.4.0-reschedule.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-sd-deadlock.patch
^
|
(renamed from patches/2.4.0-sd-deadlock.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.0-sd-deadlock.patch
^
|
(renamed from patches/2.4.0-sd-deadlock.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-bat-restore.patch
^
|
(renamed from patches/2.4.1-bat-restore.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-bat-restore.patch
^
|
(renamed from patches/2.4.1-bat-restore.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-migration.patch
^
|
(renamed from patches/2.4.1-migration.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-migration.patch
^
|
(renamed from patches/2.4.1-migration.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-mount.patch
^
|
(renamed from patches/2.4.1-mount.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-mount.patch
^
|
(renamed from patches/2.4.1-mount.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-mysql-timeout.patch
^
|
(renamed from patches/2.4.1-mysql-timeout.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-mysql-timeout.patch
^
|
(renamed from patches/2.4.1-mysql-timeout.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-restore-wrong-mediatype.patch
^
|
(renamed from patches/2.4.1-restore-wrong-mediatype.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-restore-wrong-mediatype.patch
^
|
(renamed from patches/2.4.1-restore-wrong-mediatype.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-sd-crash.patch
^
|
(renamed from patches/2.4.1-sd-crash.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-sd-crash.patch
^
|
(renamed from patches/2.4.1-sd-crash.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-wrong-volume.patch
^
|
(renamed from patches/2.4.1-wrong-volume.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.1-wrong-volume.patch
^
|
(renamed from patches/2.4.1-wrong-volume.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-bat.patch
^
|
(renamed from patches/2.4.2-bat.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-bat.patch
^
|
(renamed from patches/2.4.2-bat.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-cancel-non-running-jobs.patch
^
|
(renamed from patches/2.4.2-cancel-non-running-jobs.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-cancel-non-running-jobs.patch
^
|
(renamed from patches/2.4.2-cancel-non-running-jobs.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-estimate-cmd.patch
^
|
(renamed from patches/2.4.2-estimate-cmd.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-estimate-cmd.patch
^
|
(renamed from patches/2.4.2-estimate-cmd.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-inchanger.patch
^
|
(renamed from patches/2.4.2-inchanger.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-inchanger.patch
^
|
(renamed from patches/2.4.2-inchanger.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-jobend-crash.patch
^
|
(renamed from patches/2.4.2-jobend-crash.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-jobend-crash.patch
^
|
(renamed from patches/2.4.2-jobend-crash.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-mig-message.patch
^
|
(renamed from patches/2.4.2-mig-message.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-mig-message.patch
^
|
(renamed from patches/2.4.2-mig-message.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-migrate-poolsize.patch
^
|
(renamed from patches/2.4.2-migrate-poolsize.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-migrate-poolsize.patch
^
|
(renamed from patches/2.4.2-migrate-poolsize.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-migration-deadlock.patch
^
|
(renamed from patches/2.4.2-migration-deadlock.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-migration-deadlock.patch
^
|
(renamed from patches/2.4.2-migration-deadlock.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-null-vol.patch
^
|
(renamed from patches/2.4.2-null-vol.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-null-vol.patch
^
|
(renamed from patches/2.4.2-null-vol.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-storename.patch
^
|
(renamed from patches/2.4.2-storename.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-storename.patch
^
|
(renamed from patches/2.4.2-storename.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-verify.patch
^
|
(renamed from patches/2.4.2-verify.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-verify.patch
^
|
(renamed from patches/2.4.2-verify.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-verifydisk.patch
^
|
(renamed from patches/2.4.2-verifydisk.patch)
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/patches/2.4.x/2.4.2-verifydisk.patch
^
|
(renamed from patches/2.4.2-verifydisk.patch)
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/testing/2.4.3-next-vol.patch
^
|
@@ -0,0 +1,192 @@
+
+ This patch should fix #1173 about problems during volume selection.
+ This is a backport from the trunk
+
+ It can be applied to 2.4.3 (not to previous versions) with:
+
+ cd <bacula-source>
+ patch -p0 <2.4.3-next-vol.patch
+ ./configure <your-options>
+ make
+ ...
+ make install
+
+Index: src/dird/next_vol.c
+===================================================================
+--- src/dird/next_vol.c (révision 7854)
++++ src/dird/next_vol.c (copie de travail)
+@@ -104,21 +104,20 @@
+ * 5. Try pulling a volume from the Scratch pool
+ */
+ ok = get_scratch_volume(jcr, InChanger, mr);
++ Dmsg4(050, "after get scratch volume ok=%d index=%d InChanger=%d Vstat=%s\n",
++ ok, index, InChanger, mr->VolStatus);
+ }
+ /*
+ * If we are using an Autochanger and have not found
+ * a volume, retry looking for any volume.
+ */
+- if (InChanger) {
++ if (!ok && InChanger) {
+ InChanger = false;
+- if (!ok) {
+- continue; /* retry again accepting any volume */
+- }
++ continue; /* retry again accepting any volume */
+ }
+ }
+ }
+
+-
+ if (!ok && create) {
+ /*
+ * 6. Try "creating" a new Volume
+Index: src/dird/autoprune.c
+===================================================================
+--- src/dird/autoprune.c (révision 7854)
++++ src/dird/autoprune.c (copie de travail)
+@@ -185,6 +185,10 @@
+ }
+ ok = is_volume_purged(ua, &lmr);
+
++ if (ok && !lmr.Recycle) {
++ ok = false;
++ }
++
+ /*
+ * Check if this volume is available (InChanger + StorageId)
+ * If not, just skip this volume and try the next one
+@@ -204,13 +208,6 @@
+ memcpy(mr, &lmr, sizeof(lmr));
+ break; /* got a volume */
+ }
+- /*
+- * We purged something but did not get a volume in the current pool.
+- * It must be a scratch volume, so try to get it.
+- */
+- if (ok && get_scratch_volume(jcr, InChanger, mr)) {
+- break; /* got a volume */
+- }
+ ok = false; /* clear OK, in case we fall out */
+ } else {
+ Dmsg2(050, "Nothing pruned MediaId=%d Volume=%s\n", (int)lmr.MediaId, lmr.VolumeName);
+Index: src/dird/recycle.c
+===================================================================
+--- src/dird/recycle.c (révision 7854)
++++ src/dird/recycle.c (copie de travail)
+@@ -40,23 +40,6 @@
+ #include "dird.h"
+ #include "ua.h"
+
+-struct s_oldest_ctx {
+- uint32_t MediaId;
+- char LastWritten[30];
+-};
+-
+-static int oldest_handler(void *ctx, int num_fields, char **row)
+-{
+- struct s_oldest_ctx *oldest = (struct s_oldest_ctx *)ctx;
+-
+- if (row[0]) {
+- oldest->MediaId = str_to_int64(row[0]);
+- bstrncpy(oldest->LastWritten, row[1]?row[1]:"", sizeof(oldest->LastWritten));
+- Dmsg1(100, "New oldest %s\n", row[1]?row[1]:"");
+- }
+- return 1;
+-}
+-
+ /* Forward referenced functions */
+
+ bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
+@@ -71,50 +54,18 @@
+ return false;
+ }
+
+-
+ /*
+ * Look for oldest Purged volume
+ */
+ bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
+ {
+- struct s_oldest_ctx oldest;
+- char ed1[50];
+- POOLMEM *query = get_pool_memory(PM_EMSG);
+- const char *select =
+- "SELECT MediaId,LastWritten FROM Media "
+- "WHERE PoolId=%s AND Recycle=1 AND VolStatus='Purged' "
+- "AND Enabled=1 AND MediaType='%s' %s"
+- "ORDER BY LastWritten ASC,MediaId LIMIT 1";
+-
+- Dmsg0(100, "Enter recycle_oldest_purged_volume\n");
+- oldest.MediaId = 0;
+- if (InChanger) {
+- char changer[100];
+- bsnprintf(changer, sizeof(changer), "AND InChanger=1 AND StorageId=%s ",
+- edit_int64(mr->StorageId, ed1));
+- Mmsg(query, select, edit_int64(mr->PoolId, ed1), mr->MediaType, changer);
+- } else {
+- Mmsg(query, select, edit_int64(mr->PoolId, ed1), mr->MediaType, "");
+- }
+-
+- if (!db_sql_query(jcr->db, query, oldest_handler, (void *)&oldest)) {
+- Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
+- Dmsg0(100, "return 0 recycle_oldest_purged_volume query\n");
+- free_pool_memory(query);
+- return false;
+- }
+- free_pool_memory(query);
+- Dmsg1(100, "Oldest mediaid=%d\n", oldest.MediaId);
+- if (oldest.MediaId != 0) {
+- mr->MediaId = oldest.MediaId;
+- if (db_get_media_record(jcr, jcr->db, mr)) {
+- if (recycle_volume(jcr, mr)) {
+- Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\"\n"), mr->VolumeName);
+- Dmsg1(100, "return 1 recycle_oldest_purged_volume Vol=%s\n", mr->VolumeName);
+- return true;
+- }
++ bstrncpy(mr->VolStatus, "Purged", sizeof(mr->VolStatus));
++ if (db_find_next_volume(jcr, jcr->db, 1, InChanger, mr)) {
++ if (recycle_volume(jcr, mr)) {
++ Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\"\n"), mr->VolumeName);
++ Dmsg1(100, "return 1 recycle_oldest_purged_volume Vol=%s\n", mr->VolumeName);
++ return true;
+ }
+- Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db));
+ }
+ Dmsg0(100, "return 0 recycle_oldest_purged_volume end\n");
+ return false;
+Index: src/cats/sql_find.c
+===================================================================
+--- src/cats/sql_find.c (révision 7854)
++++ src/cats/sql_find.c (copie de travail)
+@@ -292,17 +292,15 @@
+ edit_int64(mr->PoolId, ed1), mr->MediaType);
+ item = 1;
+ } else {
+- char changer[100];
++ POOL_MEM changer(PM_FNAME);
+ /* Find next available volume */
+ if (InChanger) {
+- bsnprintf(changer, sizeof(changer), "AND InChanger=1 AND StorageId=%s",
+- edit_int64(mr->StorageId, ed1));
+- } else {
+- changer[0] = 0;
++ Mmsg(changer, "AND InChanger=1 AND StorageId=%s",
++ edit_int64(mr->StorageId, ed1));
+ }
+ if (strcmp(mr->VolStatus, "Recycle") == 0 ||
+ strcmp(mr->VolStatus, "Purged") == 0) {
+- order = "ORDER BY LastWritten ASC,MediaId"; /* take oldest */
++ order = "AND Recycle=1 ORDER BY LastWritten ASC,MediaId"; /* take oldest that can be recycled */
+ } else {
+ order = "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId"; /* take most recently written */
+ }
+@@ -318,7 +316,7 @@
+ "%s "
+ "%s LIMIT %d",
+ edit_int64(mr->PoolId, ed1), mr->MediaType,
+- mr->VolStatus, changer, order, item);
++ mr->VolStatus, changer.c_str(), order, item);
+ }
+ Dmsg1(050, "fnextvol=%s\n", mdb->cmd);
+ if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
|
[-]
[+]
|
Added |
bacula-2.4.4.tar.gz/patches/testing/sd-deadlock.patch
^
|
@@ -0,0 +1,167 @@
+ This is a first cut at resolving the SD deadlock patch. It does not
+ yet work. It does not properly implmenet the conditional variables
+ for waiting on the lock.
+
+Index: src/stored/wait.c
+===================================================================
+--- src/stored/wait.c (revision 8054)
++++ src/stored/wait.c (working copy)
+@@ -99,7 +99,7 @@
+ dev->print_name(), (int)me->heartbeat_interval, dev->rem_wait_sec, add_wait);
+ start = time(NULL);
+ /* Wait required time */
+- stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_mutex, &timeout);
++ stat = pthread_cond_timedwait(&dev->wait_next_vol, &dev->m_block_mutex, &timeout);
+ Dmsg2(dbglvl, "Wokeup from sleep on device stat=%d blocked=%s\n", stat,
+ dev->print_blocked());
+
+Index: src/stored/lock.c
+===================================================================
+--- src/stored/lock.c (revision 8054)
++++ src/stored/lock.c (working copy)
+@@ -187,7 +187,29 @@
+
+ #endif
+
++#ifndef SD_DEBUG_LOCK
++void DEVICE::dlock()
++{
++ int errstat;
++ if ((errstat=rwl_writelock(&m_lock)) != 0) {
++ berrno be;
++ Emsg2(M_ABORT, 0, "rwl_writelock failure. stat=%d: ERR=%s\n",
++ errstat, be.bstrerror(errstat));
++ }
++}
+
++void DEVICE::dunlock()
++{
++ int errstat;
++ if ((errstat=rwl_writeunlock(&m_lock)) != 0) {
++ berrno be;
++ Emsg2(M_ABORT, 0, "rwl_writelock failure. stat=%d: ERR=%s\n",
++ errstat, be.bstrerror(errstat));
++ }
++}
++#endif
++
++
+ /*
+ * This is a recursive lock that checks if the device is blocked.
+ *
+@@ -204,24 +226,28 @@
+ void DEVICE::r_dlock()
+ {
+ #endif
+- int stat;
+ this->dlock();
+ if (this->blocked() && !pthread_equal(this->no_wait_id, pthread_self())) {
+ this->num_waiting++; /* indicate that I am waiting */
+- while (this->blocked()) {
+- Dmsg3(sd_dbglvl, "r_dlock blked=%s no_wait=%p me=%p\n", this->print_blocked(),
+- this->no_wait_id, pthread_self());
+- if ((stat = pthread_cond_wait(&this->wait, &m_mutex)) != 0) {
+- berrno be;
+- this->dunlock();
+- Emsg1(M_ABORT, 0, _("pthread_cond_wait failure. ERR=%s\n"),
+- be.bstrerror(stat));
+- }
+- }
++ P(m_block_mutex); /* wait until we get it */
++ V(m_block_mutex);
+ this->num_waiting--; /* no longer waiting */
+ }
+ }
+
++void DEVICE::set_blocked(int state)
++{
++ if (state == BST_NOT_BLOCKED) {
++ if (is_blocked()) {
++ V(m_block_mutex);
++ }
++ } else {
++ P(m_block_mutex);
++ no_wait_id = pthread_self();
++ }
++ m_blocked = state;
++}
++
+ /*
+ * Block all other threads from using the device
+ * Device must already be locked. After this call,
+Index: src/stored/dev.c
+===================================================================
+--- src/stored/dev.c (revision 8054)
++++ src/stored/dev.c (working copy)
+@@ -223,9 +223,15 @@
+ dev->errmsg = get_pool_memory(PM_EMSG);
+ *dev->errmsg = 0;
+
+- if ((errstat = pthread_mutex_init(&dev->m_mutex, NULL)) != 0) {
++ if ((errstat=rwl_init(&dev->m_lock)) != 0) {
+ berrno be;
+ dev->dev_errno = errstat;
++ Mmsg1(dev->errmsg, _("Unable to init device lock: ERR=%s\n"), be.bstrerror(errstat));
++ Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
++ }
++ if ((errstat = pthread_mutex_init(&dev->m_block_mutex, NULL)) != 0) {
++ berrno be;
++ dev->dev_errno = errstat;
+ Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+ Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
+ }
+@@ -247,14 +253,6 @@
+ Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+ Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
+ }
+-#ifdef xxx
+- if ((errstat = rwl_init(&dev->lock)) != 0) {
+- berrno be;
+- dev->dev_errno = errstat;
+- Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+- Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
+- }
+-#endif
+
+ dev->clear_opened();
+ dev->attached_dcrs = New(dlist(dcr, &dcr->dev_link));
+@@ -2358,7 +2356,8 @@
+ free_pool_memory(errmsg);
+ errmsg = NULL;
+ }
+- pthread_mutex_destroy(&m_mutex);
++ rwl_destroy(&m_lock);
++ pthread_mutex_destroy(&m_block_mutex);
+ pthread_cond_destroy(&wait);
+ pthread_cond_destroy(&wait_next_vol);
+ pthread_mutex_destroy(&spool_mutex);
+Index: src/stored/dev.h
+===================================================================
+--- src/stored/dev.h (revision 8054)
++++ src/stored/dev.h (working copy)
+@@ -219,7 +219,8 @@
+ public:
+ DEVICE * volatile swap_dev; /* Swap vol from this device */
+ dlist *attached_dcrs; /* attached DCR list */
+- pthread_mutex_t m_mutex; /* access control */
++ brwlock_t m_lock; /* device lock */
++ pthread_mutex_t m_block_mutex; /* block mutex */
+ pthread_mutex_t spool_mutex; /* mutex for updating spool_size */
+ pthread_cond_t wait; /* thread wait variable */
+ pthread_cond_t wait_next_vol; /* wait for tape to be mounted */
+@@ -439,12 +440,12 @@
+ #else
+ void r_dlock(); /* in lock.c */
+ void r_dunlock() { dunlock(); }
+- void dlock() { P(m_mutex); }
+- void dunlock() { V(m_mutex); }
++ void dlock(); /* in lock.c */
++ void dunlock(); /* in lock.c */
+ #endif
+ void dblock(int why); /* in lock.c */
+ void dunblock(bool locked=false); /* in lock.c */
+- void set_blocked(int block) { m_blocked = block; };
++ void set_blocked(int block); /* in lock.c */
+ int blocked() const { return m_blocked; };
+ bool is_blocked() const { return m_blocked != BST_NOT_BLOCKED; };
+ const char *print_blocked() const; /* in dev.c */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/platforms/contrib-rpm/build_rpm.sh
^
|
@@ -25,17 +25,17 @@
RELEASE=1
# build platform for spec
-# set to one of rh7,rh8,rh9,fc1,fc3,fc4,fc5,fc6,fc7,fc8,fc9,wb3,rhel3,rhel4,rhel5,centos3,centos4,centos5,sl3, sl4,sl5,su9,su10,su102,su103,su110,mdk,mdv
-PLATFORM=su110
+# set to one of rh7,rh8,rh9,fc1,fc3,fc4,fc5,fc6,fc7,fc8,fc9,wb3,rhel3,rhel4,rhel5,centos3,centos4,centos5,sl3, sl4,sl5,su9,su10,su102,su103,su110,su111,mdk,mdv
+PLATFORM=su111
# platform designator for file names
# for RedHat/Fedora set to one of rh7,rh8,rh9,fc1,fc3,fc4,fc5,fc6,fc7,fc8,fc9 OR
# for RHEL3/clones wb3, rhel3, sl3 & centos3 set to el3 OR
# for RHEL4/clones rhel4, sl4 & centos4 set to el4 OR
# for RHEL5/clones rhel5, sl5 & centos5 set to el5 OR
-# for SuSE set to su90, su91, su92, su100 or su101 or su102 or su103 or su110 OR
+# for SuSE set to su90, su91, su92, su100 or su101 or su102 or su103 or su110 or su111 OR
# for Mandrake set to 101mdk or 20060mdk
-FILENAME=su110
+FILENAME=su111
# MySQL version
# set to empty (for MySQL 3), 4 or 5
@@ -76,9 +76,11 @@
# to override your language shell variable uncomment and edit this
# export LANG=en_US.UTF-8
-# if you have a problem getting bat to build try these (needed on Fedora 8/9)
-# export QTDIR=/usr/lib/qt4
-# export PATH=/usr/lib/qt4/bin;$PATH
+# this is now in the spec file but when building bat on older versions uncomment
+#export QTDIR=$(pkg-config --variable=prefix QtCore)
+#export QTINC=$(pkg-config --variable=includedir QtCore)
+#export QTLIB=$(pkg-config --variable=libdir QtCore)
+#export PATH=${QTDIR}/bin/:${PATH}
# Make no changes below this point without consensus
@@ -189,3 +191,5 @@
# 12 Jan 2008 add fc8
# 23 May 2008 add fc9
# 28 Jun 2008 add su110
+# 08 Nov 2008 add use of pkgconfig to obtain QT4 paths
+# 31 Dec 2008 add su111
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/platforms/contrib-rpm/rpm_wizard.sh
^
|
@@ -38,7 +38,7 @@
fi
# select build platform
-PLATFORM=`zenity --title "Select Platform" --text "Please choose a build platform." --list --radiolist --column "Select" --column "Platform" False rh7 False rh8 False rh9 False fc1 False fc3 False fc4 False fc5 False fc6 False fc7 False fc8 False fc9 False wb3 False rhel3 False rhel4 False rhel5 False centos3 False centos4 False centos5 False sl3 False sl4 False sl5 False su9 False su10 False su102 False su103 False su110 False mdk False mdv`
+PLATFORM=`zenity --title "Select Platform" --text "Please choose a build platform." --list --radiolist --column "Select" --column "Platform" False rh7 False rh8 False rh9 False fc1 False fc3 False fc4 False fc5 False fc6 False fc7 False fc8 False fc9 False wb3 False rhel3 False rhel4 False rhel5 False centos3 False centos4 False centos5 False sl3 False sl4 False sl5 False su9 False su10 False su102 False su103 False su110 False su111 False mdk False mdv`
RESULT="$?"
if [ "$RESULT" = "1" ];
@@ -117,3 +117,4 @@
# 12 Jan 2008 add fc8 target
# 23 May 2008 add fc9 target
# 28 Jun 2008 add su110 target
+# 31 Dec 2008 add su111 target
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/platforms/mandrake/bacula.spec.in
^
|
@@ -6,7 +6,7 @@
# basic defines for every build
%define _version @VERSION@
%define _release 1
-%define depkgs_version 22Feb08
+%define depkgs_version 11Sep08
%define _rescuever @VERSION@
%define docs_version @VERSION@
@@ -169,6 +169,8 @@
%{?build_su103:%define su103 1}
%define su110 0
%{?build_su110:%define su110 1}
+%define su111 0
+%{?build_su111:%define su111 1}
# Mandrake builds
%define mdk 0
%{?build_mdk:%define mdk 1}
@@ -181,7 +183,7 @@
%{?build_client_only:%define client_only 1}
# test for a platform definition
-%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk}
+%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk}
%{error: You must specify a platform. Please examine the spec file.}
exit 1
%endif
@@ -247,7 +249,7 @@
%if %{wb3} && ! %{rhel3} && ! %{centos3} && ! %{sl3}
%define _dist %(grep White /etc/whitebox-release)
%endif
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%define _dist %(grep -i SuSE /etc/SuSE-release)
%endif
%if %{mdk}
@@ -329,6 +331,9 @@
%if %{gconsole}
BuildRequires: pkgconfig, pango-devel, atk-devel
%endif
+%if %{bat}
+BuildRequires: pkgconfig
+%endif
# Rh qt4 packages don't have a provide for, guess what, qt!
# still broken in fc8, ok in fc9
@@ -445,6 +450,26 @@
BuildRequires: gnome-vfs2-devel >= 2.22
BuildRequires: libpng-devel
%endif
+%if %{su111}
+BuildRequires: termcap
+BuildRequires: glibc-devel >= 2.9
+%endif
+%if %{su111} && %{gconsole}
+BuildRequires: libgnome >= 2.24
+BuildRequires: gtk2-devel >= 2.14
+BuildRequires: libgnomeui-devel >= 2.24
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.3
+BuildRequires: libbonobo-devel >= 2.24
+BuildRequires: libbonoboui-devel >= 2.24
+BuildRequires: bonobo-activation-devel
+BuildRequires: gconf2-devel
+BuildRequires: freetype2-devel
+BuildRequires: cairo-devel
+BuildRequires: fontconfig-devel >= 2.6
+BuildRequires: gnome-vfs2-devel >= 2.24
+BuildRequires: libpng-devel
+%endif
%if %{mdk}
BuildRequires: libtermcap-devel
BuildRequires: libstdc++-static-devel
@@ -573,11 +598,11 @@
BuildRequires: GConf2-devel
BuildRequires: freetype-devel
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
BuildRequires: libtermcap-devel
BuildRequires: glibc-devel >= 2.3
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: ORBit2-devel
@@ -641,7 +666,7 @@
Conflicts: bacula-client
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Conflicts: bacula
%endif
@@ -667,7 +692,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -695,7 +724,7 @@
Requires: mysql >= 4.0
Requires: mysql-server >= 4.0
%endif
-%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk} && %{mysql5}
+%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk} && %{mysql5}
Requires: mysql >= 5.0
Requires: mysql-server >= 5.0
%endif
@@ -728,6 +757,10 @@
Requires: mysql >= 5.0
Requires: mysql-client >= 5.0
%endif
+%if %{mysql} && %{su111} && %{mysql5}
+Requires: mysql >= 5.0
+Requires: mysql-client >= 5.0
+%endif
%if %{mysql} && %{mdk} && ! %{mysql4}
Requires: mysql >= 3.23
@@ -804,7 +837,7 @@
Conflicts: bacula-postgresql
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Provides: bacula
%endif
@@ -830,7 +863,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -981,6 +1018,23 @@
Requires: gnome-vfs2 >= 2.22
Requires: libpng
%endif
+%if %{gconsole} && %{su111}
+Requires: gtk2 >= 2.14
+Requires: libgnome >= 2.24
+Requires: libgnomeui >= 2.24
+Requires: glibc >= 2.9
+Requires: ORBit2
+Requires: libart_lgpl >= 2.3
+Requires: libbonobo >= 2.24
+Requires: libbonoboui >= 2.24
+Requires: bonobo-activation
+Requires: gconf2
+Requires: freetype2
+Requires: cairo
+Requires: fontconfig >= 2.6
+Requires: gnome-vfs2 >= 2.24
+Requires: libpng
+%endif
%if %{gconsole} && %{mdk} && !%{mdv}
Requires: gtk2 >= 2.0
Requires: libgnomeui2
@@ -1082,7 +1136,7 @@
Requires: GConf2
Requires: freetype
%endif
-%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
@@ -1110,7 +1164,10 @@
%if %{gconsole} && %{su110}
Requires: xsu
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && %{su111}
+Requires: xsu
+%endif
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
Requires: usermode
%endif
@@ -1153,6 +1210,10 @@
Requires: gtk2 >= 2.12
%endif
+%if %{wxconsole} && %{su111}
+Requires: gtk2 >= 2.14
+%endif
+
%if %{wxconsole} && %{fc3}
Requires: gtk2 >= 2.4
%endif
@@ -1251,6 +1312,18 @@
Requires: zlib
%endif
+%if %{bat} && %{su111}
+Requires: openssl
+Requires: glibc >= 2.9
+Requires: fontconfig
+Requires: freetype2
+Requires: libgcc
+Requires: libpng
+Requires: qt >= 4.2
+Requires: libstdc++
+Requires: zlib
+%endif
+
%if %{bat} && %{fc5}
Requires: openssl
Requires: glibc >= 2.4
@@ -1330,7 +1403,7 @@
# SuSE turns off stripping of binaries by default. In order to get
# stripped packages we must generate debug package. RedHat and Mandriva
# turn debug packages on by default but strip binaries regardless.
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%debug_package
%endif
@@ -1344,10 +1417,17 @@
%build
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
%endif
+%if %{bat}
+export QTDIR=$(pkg-config --variable=prefix QtCore)
+export QTINC=$(pkg-config --variable=includedir QtCore)
+export QTLIB=$(pkg-config --variable=libdir QtCore)
+export PATH=${QTDIR}/bin/:${PATH}
+%endif
+
cwd=${PWD}
cd %{depkgs}
%if %{sqlite}
@@ -1398,6 +1478,9 @@
%if %{sqlite} && %{su110}
patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
%endif
+%if %{sqlite} && %{su111}
+patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
+%endif
# 64 bit lib location hacks
# as of 1.39.18 it should not be necessary to enable x86_64 as configure is
@@ -1521,7 +1604,7 @@
%define usermode_iftrick 0
%endif
-%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
mkdir -p $RPM_BUILD_ROOT/etc/pam.d
mkdir -p $RPM_BUILD_ROOT/etc/security/console.apps
mkdir -p $RPM_BUILD_ROOT/usr/bin
@@ -1600,7 +1683,7 @@
rm -f $RPM_BUILD_ROOT%{_sbindir}/static-bacula-fd
# install the init scripts
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1610,7 +1693,7 @@
cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
%endif
-%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk}
+%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk}
cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1652,6 +1735,12 @@
cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
%endif
+%if %{gconsole} && %{su111}
+cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
+cp -p scripts/bacula.desktop.gnome2.xsu $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
+cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
+cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
+%endif
%if %{wxconsole} && %{su10}
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
@@ -1668,6 +1757,10 @@
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
%endif
+%if %{wxconsole} && %{su111}
+cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
+cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
+%endif
%if %{bat} && %{su102}
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
@@ -1680,6 +1773,10 @@
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
%endif
+%if %{bat} && %{su111}
+cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
+cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
+%endif
%if %{rh8} || %{rh9} || %{wb3} || %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc6} || %{fc7} || %{fc8} || %{fc9} || %{mdk}
%define iftrick 1
%else
@@ -2173,7 +2270,6 @@
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/mtx
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsitape
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/tapeinfo
-%attr(-, root, %{storage_daemon_group}) %{_sbindir}/nsmhack
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsieject
%{_mandir}/man1/loaderinfo.1.%{manpage_ext}
%{_mandir}/man1/mtx.1.%{manpage_ext}
@@ -2304,7 +2400,7 @@
%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bgnome-console
%config(noreplace,missingok) /etc/security/console.apps/bgnome-console
@@ -2349,7 +2445,7 @@
%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
%endif
-%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bwx-console
%config(noreplace,missingok) /etc/security/console.apps/bwx-console
@@ -2394,7 +2490,7 @@
%{_mandir}/man1/bat.1.%{manpage_ext}
%endif
-%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bat
%config(noreplace,missingok) /etc/security/console.apps/bat
@@ -2429,6 +2525,12 @@
%endif
%changelog
+* Wed Dec 31 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add su111 target
+* Sat Nov 08 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- set paths for QT using pkgconfig
+* Sat Oct 11 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
* Sun Sep 07 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
- adjust /opt/bacula install
- add build switch to supress rescue package
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/platforms/redhat/bacula.spec.in
^
|
@@ -6,7 +6,7 @@
# basic defines for every build
%define _version @VERSION@
%define _release 1
-%define depkgs_version 22Feb08
+%define depkgs_version 11Sep08
%define _rescuever @VERSION@
%define docs_version @VERSION@
@@ -169,6 +169,8 @@
%{?build_su103:%define su103 1}
%define su110 0
%{?build_su110:%define su110 1}
+%define su111 0
+%{?build_su111:%define su111 1}
# Mandrake builds
%define mdk 0
%{?build_mdk:%define mdk 1}
@@ -181,7 +183,7 @@
%{?build_client_only:%define client_only 1}
# test for a platform definition
-%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk}
+%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk}
%{error: You must specify a platform. Please examine the spec file.}
exit 1
%endif
@@ -247,7 +249,7 @@
%if %{wb3} && ! %{rhel3} && ! %{centos3} && ! %{sl3}
%define _dist %(grep White /etc/whitebox-release)
%endif
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%define _dist %(grep -i SuSE /etc/SuSE-release)
%endif
%if %{mdk}
@@ -329,6 +331,9 @@
%if %{gconsole}
BuildRequires: pkgconfig, pango-devel, atk-devel
%endif
+%if %{bat}
+BuildRequires: pkgconfig
+%endif
# Rh qt4 packages don't have a provide for, guess what, qt!
# still broken in fc8, ok in fc9
@@ -445,6 +450,26 @@
BuildRequires: gnome-vfs2-devel >= 2.22
BuildRequires: libpng-devel
%endif
+%if %{su111}
+BuildRequires: termcap
+BuildRequires: glibc-devel >= 2.9
+%endif
+%if %{su111} && %{gconsole}
+BuildRequires: libgnome >= 2.24
+BuildRequires: gtk2-devel >= 2.14
+BuildRequires: libgnomeui-devel >= 2.24
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.3
+BuildRequires: libbonobo-devel >= 2.24
+BuildRequires: libbonoboui-devel >= 2.24
+BuildRequires: bonobo-activation-devel
+BuildRequires: gconf2-devel
+BuildRequires: freetype2-devel
+BuildRequires: cairo-devel
+BuildRequires: fontconfig-devel >= 2.6
+BuildRequires: gnome-vfs2-devel >= 2.24
+BuildRequires: libpng-devel
+%endif
%if %{mdk}
BuildRequires: libtermcap-devel
BuildRequires: libstdc++-static-devel
@@ -573,11 +598,11 @@
BuildRequires: GConf2-devel
BuildRequires: freetype-devel
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
BuildRequires: libtermcap-devel
BuildRequires: glibc-devel >= 2.3
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: ORBit2-devel
@@ -641,7 +666,7 @@
Conflicts: bacula-client
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Conflicts: bacula
%endif
@@ -667,7 +692,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -695,7 +724,7 @@
Requires: mysql >= 4.0
Requires: mysql-server >= 4.0
%endif
-%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk} && %{mysql5}
+%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk} && %{mysql5}
Requires: mysql >= 5.0
Requires: mysql-server >= 5.0
%endif
@@ -728,6 +757,10 @@
Requires: mysql >= 5.0
Requires: mysql-client >= 5.0
%endif
+%if %{mysql} && %{su111} && %{mysql5}
+Requires: mysql >= 5.0
+Requires: mysql-client >= 5.0
+%endif
%if %{mysql} && %{mdk} && ! %{mysql4}
Requires: mysql >= 3.23
@@ -804,7 +837,7 @@
Conflicts: bacula-postgresql
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Provides: bacula
%endif
@@ -830,7 +863,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -981,6 +1018,23 @@
Requires: gnome-vfs2 >= 2.22
Requires: libpng
%endif
+%if %{gconsole} && %{su111}
+Requires: gtk2 >= 2.14
+Requires: libgnome >= 2.24
+Requires: libgnomeui >= 2.24
+Requires: glibc >= 2.9
+Requires: ORBit2
+Requires: libart_lgpl >= 2.3
+Requires: libbonobo >= 2.24
+Requires: libbonoboui >= 2.24
+Requires: bonobo-activation
+Requires: gconf2
+Requires: freetype2
+Requires: cairo
+Requires: fontconfig >= 2.6
+Requires: gnome-vfs2 >= 2.24
+Requires: libpng
+%endif
%if %{gconsole} && %{mdk} && !%{mdv}
Requires: gtk2 >= 2.0
Requires: libgnomeui2
@@ -1082,7 +1136,7 @@
Requires: GConf2
Requires: freetype
%endif
-%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
@@ -1110,7 +1164,10 @@
%if %{gconsole} && %{su110}
Requires: xsu
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && %{su111}
+Requires: xsu
+%endif
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
Requires: usermode
%endif
@@ -1153,6 +1210,10 @@
Requires: gtk2 >= 2.12
%endif
+%if %{wxconsole} && %{su111}
+Requires: gtk2 >= 2.14
+%endif
+
%if %{wxconsole} && %{fc3}
Requires: gtk2 >= 2.4
%endif
@@ -1251,6 +1312,18 @@
Requires: zlib
%endif
+%if %{bat} && %{su111}
+Requires: openssl
+Requires: glibc >= 2.9
+Requires: fontconfig
+Requires: freetype2
+Requires: libgcc
+Requires: libpng
+Requires: qt >= 4.2
+Requires: libstdc++
+Requires: zlib
+%endif
+
%if %{bat} && %{fc5}
Requires: openssl
Requires: glibc >= 2.4
@@ -1330,7 +1403,7 @@
# SuSE turns off stripping of binaries by default. In order to get
# stripped packages we must generate debug package. RedHat and Mandriva
# turn debug packages on by default but strip binaries regardless.
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%debug_package
%endif
@@ -1344,10 +1417,17 @@
%build
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
%endif
+%if %{bat}
+export QTDIR=$(pkg-config --variable=prefix QtCore)
+export QTINC=$(pkg-config --variable=includedir QtCore)
+export QTLIB=$(pkg-config --variable=libdir QtCore)
+export PATH=${QTDIR}/bin/:${PATH}
+%endif
+
cwd=${PWD}
cd %{depkgs}
%if %{sqlite}
@@ -1398,6 +1478,9 @@
%if %{sqlite} && %{su110}
patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
%endif
+%if %{sqlite} && %{su111}
+patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
+%endif
# 64 bit lib location hacks
# as of 1.39.18 it should not be necessary to enable x86_64 as configure is
@@ -1521,7 +1604,7 @@
%define usermode_iftrick 0
%endif
-%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
mkdir -p $RPM_BUILD_ROOT/etc/pam.d
mkdir -p $RPM_BUILD_ROOT/etc/security/console.apps
mkdir -p $RPM_BUILD_ROOT/usr/bin
@@ -1600,7 +1683,7 @@
rm -f $RPM_BUILD_ROOT%{_sbindir}/static-bacula-fd
# install the init scripts
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1610,7 +1693,7 @@
cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
%endif
-%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk}
+%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk}
cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1652,6 +1735,12 @@
cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
%endif
+%if %{gconsole} && %{su111}
+cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
+cp -p scripts/bacula.desktop.gnome2.xsu $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
+cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
+cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
+%endif
%if %{wxconsole} && %{su10}
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
@@ -1668,6 +1757,10 @@
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
%endif
+%if %{wxconsole} && %{su111}
+cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
+cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
+%endif
%if %{bat} && %{su102}
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
@@ -1680,6 +1773,10 @@
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
%endif
+%if %{bat} && %{su111}
+cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
+cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
+%endif
%if %{rh8} || %{rh9} || %{wb3} || %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc6} || %{fc7} || %{fc8} || %{fc9} || %{mdk}
%define iftrick 1
%else
@@ -2173,7 +2270,6 @@
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/mtx
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsitape
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/tapeinfo
-%attr(-, root, %{storage_daemon_group}) %{_sbindir}/nsmhack
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsieject
%{_mandir}/man1/loaderinfo.1.%{manpage_ext}
%{_mandir}/man1/mtx.1.%{manpage_ext}
@@ -2304,7 +2400,7 @@
%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bgnome-console
%config(noreplace,missingok) /etc/security/console.apps/bgnome-console
@@ -2349,7 +2445,7 @@
%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
%endif
-%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bwx-console
%config(noreplace,missingok) /etc/security/console.apps/bwx-console
@@ -2394,7 +2490,7 @@
%{_mandir}/man1/bat.1.%{manpage_ext}
%endif
-%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bat
%config(noreplace,missingok) /etc/security/console.apps/bat
@@ -2429,6 +2525,12 @@
%endif
%changelog
+* Wed Dec 31 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add su111 target
+* Sat Nov 08 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- set paths for QT using pkgconfig
+* Sat Oct 11 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
* Sun Sep 07 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
- adjust /opt/bacula install
- add build switch to supress rescue package
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/platforms/suse/bacula.spec.in
^
|
@@ -6,7 +6,7 @@
# basic defines for every build
%define _version @VERSION@
%define _release 1
-%define depkgs_version 22Feb08
+%define depkgs_version 11Sep08
%define _rescuever @VERSION@
%define docs_version @VERSION@
@@ -169,6 +169,8 @@
%{?build_su103:%define su103 1}
%define su110 0
%{?build_su110:%define su110 1}
+%define su111 0
+%{?build_su111:%define su111 1}
# Mandrake builds
%define mdk 0
%{?build_mdk:%define mdk 1}
@@ -181,7 +183,7 @@
%{?build_client_only:%define client_only 1}
# test for a platform definition
-%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk}
+%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk}
%{error: You must specify a platform. Please examine the spec file.}
exit 1
%endif
@@ -247,7 +249,7 @@
%if %{wb3} && ! %{rhel3} && ! %{centos3} && ! %{sl3}
%define _dist %(grep White /etc/whitebox-release)
%endif
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%define _dist %(grep -i SuSE /etc/SuSE-release)
%endif
%if %{mdk}
@@ -329,6 +331,9 @@
%if %{gconsole}
BuildRequires: pkgconfig, pango-devel, atk-devel
%endif
+%if %{bat}
+BuildRequires: pkgconfig
+%endif
# Rh qt4 packages don't have a provide for, guess what, qt!
# still broken in fc8, ok in fc9
@@ -445,6 +450,26 @@
BuildRequires: gnome-vfs2-devel >= 2.22
BuildRequires: libpng-devel
%endif
+%if %{su111}
+BuildRequires: termcap
+BuildRequires: glibc-devel >= 2.9
+%endif
+%if %{su111} && %{gconsole}
+BuildRequires: libgnome >= 2.24
+BuildRequires: gtk2-devel >= 2.14
+BuildRequires: libgnomeui-devel >= 2.24
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.3
+BuildRequires: libbonobo-devel >= 2.24
+BuildRequires: libbonoboui-devel >= 2.24
+BuildRequires: bonobo-activation-devel
+BuildRequires: gconf2-devel
+BuildRequires: freetype2-devel
+BuildRequires: cairo-devel
+BuildRequires: fontconfig-devel >= 2.6
+BuildRequires: gnome-vfs2-devel >= 2.24
+BuildRequires: libpng-devel
+%endif
%if %{mdk}
BuildRequires: libtermcap-devel
BuildRequires: libstdc++-static-devel
@@ -573,11 +598,11 @@
BuildRequires: GConf2-devel
BuildRequires: freetype-devel
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
BuildRequires: libtermcap-devel
BuildRequires: glibc-devel >= 2.3
%endif
-%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
+%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && %{gconsole}
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: ORBit2-devel
@@ -641,7 +666,7 @@
Conflicts: bacula-client
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Conflicts: bacula
%endif
@@ -667,7 +692,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -695,7 +724,7 @@
Requires: mysql >= 4.0
Requires: mysql-server >= 4.0
%endif
-%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk} && %{mysql5}
+%if %{mysql} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk} && %{mysql5}
Requires: mysql >= 5.0
Requires: mysql-server >= 5.0
%endif
@@ -728,6 +757,10 @@
Requires: mysql >= 5.0
Requires: mysql-client >= 5.0
%endif
+%if %{mysql} && %{su111} && %{mysql5}
+Requires: mysql >= 5.0
+Requires: mysql-client >= 5.0
+%endif
%if %{mysql} && %{mdk} && ! %{mysql4}
Requires: mysql >= 3.23
@@ -804,7 +837,7 @@
Conflicts: bacula-postgresql
Obsoletes: bacula-rescue
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
Provides: bacula
%endif
@@ -830,7 +863,11 @@
Requires: glibc >= 2.8
Requires: termcap
%endif
-%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
+%if %{su111}
+Requires: glibc >= 2.9
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{fc5} && ! %{fc6} && ! %{fc7} && ! %{fc8} && ! %{fc9}
Requires: glibc >= 2.3
Requires: libtermcap
%endif
@@ -981,6 +1018,23 @@
Requires: gnome-vfs2 >= 2.22
Requires: libpng
%endif
+%if %{gconsole} && %{su111}
+Requires: gtk2 >= 2.14
+Requires: libgnome >= 2.24
+Requires: libgnomeui >= 2.24
+Requires: glibc >= 2.9
+Requires: ORBit2
+Requires: libart_lgpl >= 2.3
+Requires: libbonobo >= 2.24
+Requires: libbonoboui >= 2.24
+Requires: bonobo-activation
+Requires: gconf2
+Requires: freetype2
+Requires: cairo
+Requires: fontconfig >= 2.6
+Requires: gnome-vfs2 >= 2.24
+Requires: libpng
+%endif
%if %{gconsole} && %{mdk} && !%{mdv}
Requires: gtk2 >= 2.0
Requires: libgnomeui2
@@ -1082,7 +1136,7 @@
Requires: GConf2
Requires: freetype
%endif
-%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
+%if %{gconsole} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
@@ -1110,7 +1164,10 @@
%if %{gconsole} && %{su110}
Requires: xsu
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && %{su111}
+Requires: xsu
+%endif
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
Requires: usermode
%endif
@@ -1153,6 +1210,10 @@
Requires: gtk2 >= 2.12
%endif
+%if %{wxconsole} && %{su111}
+Requires: gtk2 >= 2.14
+%endif
+
%if %{wxconsole} && %{fc3}
Requires: gtk2 >= 2.4
%endif
@@ -1251,6 +1312,18 @@
Requires: zlib
%endif
+%if %{bat} && %{su111}
+Requires: openssl
+Requires: glibc >= 2.9
+Requires: fontconfig
+Requires: freetype2
+Requires: libgcc
+Requires: libpng
+Requires: qt >= 4.2
+Requires: libstdc++
+Requires: zlib
+%endif
+
%if %{bat} && %{fc5}
Requires: openssl
Requires: glibc >= 2.4
@@ -1330,7 +1403,7 @@
# SuSE turns off stripping of binaries by default. In order to get
# stripped packages we must generate debug package. RedHat and Mandriva
# turn debug packages on by default but strip binaries regardless.
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
%debug_package
%endif
@@ -1344,10 +1417,17 @@
%build
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
%endif
+%if %{bat}
+export QTDIR=$(pkg-config --variable=prefix QtCore)
+export QTINC=$(pkg-config --variable=includedir QtCore)
+export QTLIB=$(pkg-config --variable=libdir QtCore)
+export PATH=${QTDIR}/bin/:${PATH}
+%endif
+
cwd=${PWD}
cd %{depkgs}
%if %{sqlite}
@@ -1398,6 +1478,9 @@
%if %{sqlite} && %{su110}
patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
%endif
+%if %{sqlite} && %{su111}
+patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
+%endif
# 64 bit lib location hacks
# as of 1.39.18 it should not be necessary to enable x86_64 as configure is
@@ -1521,7 +1604,7 @@
%define usermode_iftrick 0
%endif
-%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{usermode_iftrick} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
mkdir -p $RPM_BUILD_ROOT/etc/pam.d
mkdir -p $RPM_BUILD_ROOT/etc/security/console.apps
mkdir -p $RPM_BUILD_ROOT/usr/bin
@@ -1600,7 +1683,7 @@
rm -f $RPM_BUILD_ROOT%{_sbindir}/static-bacula-fd
# install the init scripts
-%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110}
+%if %{su9} || %{su10} || %{su102} || %{su103} || %{su110} || %{su111}
cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1610,7 +1693,7 @@
cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
%endif
-%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{mdk}
+%if ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111} && ! %{mdk}
cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -1652,6 +1735,12 @@
cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
%endif
+%if %{gconsole} && %{su111}
+cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
+cp -p scripts/bacula.desktop.gnome2.xsu $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
+cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
+cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
+%endif
%if %{wxconsole} && %{su10}
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
@@ -1668,6 +1757,10 @@
cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
%endif
+%if %{wxconsole} && %{su111}
+cp -p src/wx-console/wxwin16x16.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/wxwin16x16.xpm
+cp -p scripts/wxconsole.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/wxconsole.desktop
+%endif
%if %{bat} && %{su102}
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
@@ -1680,6 +1773,10 @@
cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
%endif
+%if %{bat} && %{su111}
+cp -p src/qt-console/images/bat_icon.png $RPM_BUILD_ROOT/usr/share/pixmaps/bat_icon.png
+cp -p scripts/bat.desktop.xsu $RPM_BUILD_ROOT/usr/share/applications/bat.desktop
+%endif
%if %{rh8} || %{rh9} || %{wb3} || %{fc1} || %{fc3} || %{fc4} || %{fc5} || %{fc6} || %{fc7} || %{fc8} || %{fc9} || %{mdk}
%define iftrick 1
%else
@@ -2173,7 +2270,6 @@
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/mtx
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsitape
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/tapeinfo
-%attr(-, root, %{storage_daemon_group}) %{_sbindir}/nsmhack
%attr(-, root, %{storage_daemon_group}) %{_sbindir}/scsieject
%{_mandir}/man1/loaderinfo.1.%{manpage_ext}
%{_mandir}/man1/mtx.1.%{manpage_ext}
@@ -2304,7 +2400,7 @@
%{_mandir}/man1/bacula-tray-monitor.1.%{manpage_ext}
%endif
-%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bgnome-console
%config(noreplace,missingok) /etc/security/console.apps/bgnome-console
@@ -2349,7 +2445,7 @@
%{_mandir}/man1/bacula-bwxconsole.1.%{manpage_ext}
%endif
-%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{wxconsole} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bwx-console
%config(noreplace,missingok) /etc/security/console.apps/bwx-console
@@ -2394,7 +2490,7 @@
%{_mandir}/man1/bat.1.%{manpage_ext}
%endif
-%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110}
+%if %{bat} && ! %{su9} && ! %{su10} && ! %{su102} && ! %{su103} && ! %{su110} && ! %{su111}
# add the console helper files
%config(noreplace,missingok) /etc/pam.d/bat
%config(noreplace,missingok) /etc/security/console.apps/bat
@@ -2429,6 +2525,12 @@
%endif
%changelog
+* Wed Dec 31 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add su111 target
+* Sat Nov 08 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- set paths for QT using pkgconfig
+* Sat Oct 11 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- release 2.4.3 update depkgs to 11Sep08 remove file nmshack from mtx package
* Sun Sep 07 2008 D. Scott Barninger <barninger@fairfieldcomputers.com>
- adjust /opt/bacula install
- add build switch to supress rescue package
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/po/bacula.pot
^
|
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2008-10-10 20:22+0200\n"
+"POT-Creation-Date: 2008-12-24 10:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -418,7 +418,7 @@
msgstr ""
#: src/dird/backup.c:87 src/dird/migrate.c:230 src/dird/migrate.c:231
-#: src/dird/job.c:917 src/dird/job.c:964
+#: src/dird/job.c:919 src/dird/job.c:966
msgid "Pool resource"
msgstr ""
@@ -445,7 +445,7 @@
msgid "No Job status returned from FD.\n"
msgstr ""
-#: src/dird/backup.c:358 src/dird/migrate.c:1098 src/dird/admin.c:89
+#: src/dird/backup.c:358 src/dird/migrate.c:1108 src/dird/admin.c:89
#, c-format
msgid "Error getting Job record for Job report: ERR=%s"
msgstr ""
@@ -455,7 +455,7 @@
msgid "Error getting Client record for Job report: ERR=%s"
msgstr ""
-#: src/dird/backup.c:371 src/dird/migrate.c:1129
+#: src/dird/backup.c:371 src/dird/migrate.c:1138
#, c-format
msgid "Error getting Media record for Volume \"%s\": ERR=%s"
msgstr ""
@@ -1355,12 +1355,12 @@
msgid "Could not get or create a Pool record.\n"
msgstr ""
-#: src/dird/migrate.c:138 src/dird/migrate.c:154
-msgid "No previous Job found to migrate.\n"
+#: src/dird/migrate.c:127
+msgid "Could not get or create the FileSet record.\n"
msgstr ""
-#: src/dird/migrate.c:144
-msgid "Could not get or create the FileSet record.\n"
+#: src/dird/migrate.c:144 src/dird/migrate.c:154
+msgid "No previous Job found to migrate.\n"
msgstr ""
#: src/dird/migrate.c:156
@@ -1395,7 +1395,7 @@
msgid "Job Pool's NextPool resource"
msgstr ""
-#: src/dird/migrate.c:278 src/dird/migrate.c:845
+#: src/dird/migrate.c:278 src/dird/migrate.c:837
#, c-format
msgid "Could not get job record for JobId %s to migrate. ERR=%s"
msgstr ""
@@ -1415,123 +1415,123 @@
msgid "Read storage \"%s\" same as write storage.\n"
msgstr ""
-#: src/dird/migrate.c:670
+#: src/dird/migrate.c:662
msgid "No Migration SQL selection pattern specified.\n"
msgstr ""
-#: src/dird/migrate.c:677 src/dird/migrate.c:697 src/dird/migrate.c:718
-#: src/dird/migrate.c:754 src/dird/migrate.c:782 src/dird/migrate.c:898
-#: src/dird/migrate.c:931 src/dird/migrate.c:1028
+#: src/dird/migrate.c:669 src/dird/migrate.c:689 src/dird/migrate.c:710
+#: src/dird/migrate.c:746 src/dird/migrate.c:774 src/dird/migrate.c:890
+#: src/dird/migrate.c:923 src/dird/migrate.c:1020
#, c-format
msgid "SQL failed. ERR=%s\n"
msgstr ""
-#: src/dird/migrate.c:701 src/dird/migrate.c:708 src/dird/migrate.c:722
-#: src/dird/migrate.c:786
+#: src/dird/migrate.c:693 src/dird/migrate.c:700 src/dird/migrate.c:714
+#: src/dird/migrate.c:778
msgid "No Volumes found to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:736 src/dird/migrate.c:821 src/dird/migrate.c:834
+#: src/dird/migrate.c:728 src/dird/migrate.c:813 src/dird/migrate.c:826
msgid "Invalid JobId found.\n"
msgstr ""
-#: src/dird/migrate.c:793
+#: src/dird/migrate.c:785
msgid "Unknown Migration Selection Type.\n"
msgstr ""
-#: src/dird/migrate.c:805 src/dird/migrate.c:824 src/dird/migrate.c:837
+#: src/dird/migrate.c:797 src/dird/migrate.c:816 src/dird/migrate.c:829
msgid "No JobIds found to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:809
+#: src/dird/migrate.c:801
#, c-format
msgid "The following %u JobId%s were chosen to be migrated: %s\n"
msgstr ""
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:842
#, c-format
msgid "Migration using JobId=%s Job=%s\n"
msgstr ""
-#: src/dird/migrate.c:881
+#: src/dird/migrate.c:873
msgid "Could not start migration job.\n"
msgstr ""
-#: src/dird/migrate.c:883
+#: src/dird/migrate.c:875
#, c-format
msgid "Migration JobId %d started.\n"
msgstr ""
-#: src/dird/migrate.c:902
+#: src/dird/migrate.c:894
#, c-format
msgid "No %s found to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:906
+#: src/dird/migrate.c:898
#, c-format
msgid "SQL error. Expected 1 MediaId got %d\n"
msgstr ""
-#: src/dird/migrate.c:935 src/dird/migrate.c:1033
+#: src/dird/migrate.c:927 src/dird/migrate.c:1025
#, c-format
msgid "No %ss found to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:957
+#: src/dird/migrate.c:949
#, c-format
msgid "No Migration %s selection pattern specified.\n"
msgstr ""
-#: src/dird/migrate.c:968
+#: src/dird/migrate.c:960
#, c-format
msgid "SQL to get %s failed. ERR=%s\n"
msgstr ""
-#: src/dird/migrate.c:973
+#: src/dird/migrate.c:965
#, c-format
msgid "Query of Pool \"%s\" returned no Jobs to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:982
+#: src/dird/migrate.c:974
#, c-format
msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
msgstr ""
-#: src/dird/migrate.c:1011
+#: src/dird/migrate.c:1003
msgid "Regex pattern matched no Jobs to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:1137
+#: src/dird/migrate.c:1146
#, c-format
msgid "%s OK -- with warnings"
msgstr ""
-#: src/dird/migrate.c:1139
+#: src/dird/migrate.c:1148
#, c-format
msgid "%s OK"
msgstr ""
-#: src/dird/migrate.c:1144
+#: src/dird/migrate.c:1153
#, c-format
msgid "*** %s Error ***"
msgstr ""
-#: src/dird/migrate.c:1154
+#: src/dird/migrate.c:1163
#, c-format
msgid "%s Canceled"
msgstr ""
-#: src/dird/migrate.c:1163
+#: src/dird/migrate.c:1172
#, c-format
msgid "Inappropriate %s term code"
msgstr ""
-#: src/dird/migrate.c:1173
+#: src/dird/migrate.c:1182
#, c-format
msgid "%s -- no files to migrate"
msgstr ""
-#: src/dird/migrate.c:1189
+#: src/dird/migrate.c:1198
#, c-format
msgid ""
"Bacula %s %s (%s): %s\n"
@@ -1564,17 +1564,17 @@
"\n"
msgstr ""
-#: src/dird/migrate.c:1296
+#: src/dird/migrate.c:1305
#, c-format
msgid "No Next Pool specification found in Pool \"%s\".\n"
msgstr ""
-#: src/dird/migrate.c:1302
+#: src/dird/migrate.c:1311
#, c-format
msgid "No Storage specification found in Next Pool \"%s\".\n"
msgstr ""
-#: src/dird/migrate.c:1308
+#: src/dird/migrate.c:1317
msgid "Storage from Pool's NextPool resource"
msgstr ""
@@ -2178,23 +2178,23 @@
msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
msgstr ""
-#: src/dird/ua_purge.c:481
+#: src/dird/ua_purge.c:484
#, c-format
msgid ""
"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
msgstr ""
-#: src/dird/ua_purge.c:522
+#: src/dird/ua_purge.c:525
#, c-format
msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
msgstr ""
-#: src/dird/ua_purge.c:535
+#: src/dird/ua_purge.c:538
#, c-format
msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
msgstr ""
-#: src/dird/ua_purge.c:540
+#: src/dird/ua_purge.c:543
#, c-format
msgid "Cannot purge Volume with VolStatus=%s\n"
msgstr ""
@@ -2578,7 +2578,7 @@
msgstr ""
#: src/dird/ua_status.c:308 src/dird/job.c:146 src/dird/job.c:152
-#: src/dird/job.c:944 src/dird/job.c:956 src/dird/ua_cmds.c:780
+#: src/dird/job.c:946 src/dird/job.c:958 src/dird/ua_cmds.c:780
#: src/dird/ua_cmds.c:1467 src/dird/ua_dotcmds.c:174
msgid "unknown source"
msgstr ""
@@ -2889,7 +2889,7 @@
msgstr ""
#: src/dird/job.c:397 src/dird/job.c:399 src/dird/job.c:440 src/dird/job.c:442
-#: src/dird/job.c:920 src/dird/job.c:962 src/dird/job.c:971
+#: src/dird/job.c:922 src/dird/job.c:964 src/dird/job.c:973
msgid "Job resource"
msgstr ""
@@ -2901,7 +2901,7 @@
msgid "Max run time exceeded. Job canceled.\n"
msgstr ""
-#: src/dird/job.c:601 src/dird/job.c:907
+#: src/dird/job.c:601 src/dird/job.c:909
msgid "Run pool override"
msgstr ""
@@ -2948,19 +2948,19 @@
msgid "Error updating job record. %s"
msgstr ""
-#: src/dird/job.c:912
+#: src/dird/job.c:914
msgid "Run storage override"
msgstr ""
-#: src/dird/job.c:1033 src/dird/ua_run.c:1215
+#: src/dird/job.c:1035 src/dird/ua_run.c:1215
msgid "No storage specified.\n"
msgstr ""
-#: src/dird/job.c:1200
+#: src/dird/job.c:1202
msgid "Could not start clone job.\n"
msgstr ""
-#: src/dird/job.c:1202
+#: src/dird/job.c:1204
#, c-format
msgid "Clone JobId %d started.\n"
msgstr ""
@@ -6734,7 +6734,7 @@
"%s\n"
msgstr ""
-#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1031
+#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1030
#: src/cats/sql_get.c:185 src/cats/sql_get.c:236 src/cats/sql_get.c:604
#: src/cats/sql_get.c:680 src/cats/sql_get.c:951
#, c-format
@@ -6921,82 +6921,82 @@
msgid "Create DB Media record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:493
+#: src/cats/sql_create.c:492
#, c-format
msgid "More than one Client!: %d\n"
msgstr ""
-#: src/cats/sql_create.c:498
+#: src/cats/sql_create.c:497
#, c-format
msgid "error fetching Client row: %s\n"
msgstr ""
-#: src/cats/sql_create.c:525
+#: src/cats/sql_create.c:524
#, c-format
msgid "Create DB Client record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:568
+#: src/cats/sql_create.c:567
#, c-format
msgid "Create DB Counters record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:601
+#: src/cats/sql_create.c:600
#, c-format
msgid "More than one FileSet!: %d\n"
msgstr ""
-#: src/cats/sql_create.c:606
+#: src/cats/sql_create.c:605
#, c-format
msgid "error fetching FileSet row: ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:636
+#: src/cats/sql_create.c:635
#, c-format
msgid "Create DB FileSet record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:857
+#: src/cats/sql_create.c:856
#, c-format
msgid "Could not init batch database: \"%s\".\n"
msgstr ""
-#: src/cats/sql_create.c:864
+#: src/cats/sql_create.c:863
#, c-format
msgid "Could not open database \"%s\": ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:886 src/cats/sql_create.c:927
+#: src/cats/sql_create.c:885 src/cats/sql_create.c:926
#, c-format
msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
msgstr ""
-#: src/cats/sql_create.c:991
+#: src/cats/sql_create.c:990
#, c-format
msgid "Create db File record %s failed. ERR=%s"
msgstr ""
-#: src/cats/sql_create.c:1024 src/cats/sql_get.c:229
+#: src/cats/sql_create.c:1023 src/cats/sql_get.c:229
#, c-format
msgid "More than one Path!: %s for path: %s\n"
msgstr ""
-#: src/cats/sql_create.c:1055
+#: src/cats/sql_create.c:1054
#, c-format
msgid "Create db Path record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:1088
+#: src/cats/sql_create.c:1087
#, c-format
msgid "More than one Filename! %s for file: %s\n"
msgstr ""
-#: src/cats/sql_create.c:1094
+#: src/cats/sql_create.c:1093
#, c-format
msgid "Error fetching row for file=%s: ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:1110
+#: src/cats/sql_create.c:1109
#, c-format
msgid "Create db Filename record %s failed. ERR=%s\n"
msgstr ""
@@ -7607,7 +7607,7 @@
msgid "End Session"
msgstr ""
-#: src/stored/read_record.c:407 src/stored/label.c:1053
+#: src/stored/read_record.c:407 src/stored/label.c:1055
msgid "End of Media"
msgstr ""
@@ -7655,21 +7655,21 @@
msgid "Device switch. New device %s chosen.\n"
msgstr ""
-#: src/stored/reserve.c:509
+#: src/stored/reserve.c:510
#, c-format
msgid "Hey! num_writers=%d!!!!\n"
msgstr ""
-#: src/stored/reserve.c:752
+#: src/stored/reserve.c:754
msgid "3939 Could not get dcr\n"
msgstr ""
-#: src/stored/reserve.c:855 src/stored/reserve.c:866
+#: src/stored/reserve.c:857 src/stored/reserve.c:868
#, c-format
msgid "Failed command: %s\n"
msgstr ""
-#: src/stored/reserve.c:856
+#: src/stored/reserve.c:858
#, c-format
msgid ""
"\n"
@@ -7677,7 +7677,7 @@
"Device resources.\n"
msgstr ""
-#: src/stored/reserve.c:1172 src/stored/dircmd.c:601
+#: src/stored/reserve.c:1174 src/stored/dircmd.c:601
#, c-format
msgid ""
"\n"
@@ -7685,80 +7685,80 @@
"does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1176 src/stored/dircmd.c:579
+#: src/stored/reserve.c:1178 src/stored/dircmd.c:579
#, c-format
msgid ""
"\n"
" Device \"%s\" requested by DIR could not be opened or does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1188
+#: src/stored/reserve.c:1190
#, c-format
msgid "3926 Could not get dcr for device: %s\n"
msgstr ""
-#: src/stored/reserve.c:1311
+#: src/stored/reserve.c:1313
#, c-format
msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
-#: src/stored/reserve.c:1321
+#: src/stored/reserve.c:1323
#, c-format
msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
msgstr ""
-#: src/stored/reserve.c:1365
+#: src/stored/reserve.c:1367
#, c-format
msgid "3603 JobId=%u device %s is busy reading.\n"
msgstr ""
-#: src/stored/reserve.c:1374
+#: src/stored/reserve.c:1376
#, c-format
msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
-#: src/stored/reserve.c:1411
+#: src/stored/reserve.c:1413
#, c-format
msgid ""
"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive %"
"s.\n"
msgstr ""
-#: src/stored/reserve.c:1437
+#: src/stored/reserve.c:1439
#, c-format
msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
msgstr ""
-#: src/stored/reserve.c:1492
+#: src/stored/reserve.c:1494
#, c-format
msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
msgstr ""
-#: src/stored/reserve.c:1500
+#: src/stored/reserve.c:1502
#, c-format
msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
msgstr ""
-#: src/stored/reserve.c:1523
+#: src/stored/reserve.c:1525
#, c-format
msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
msgstr ""
-#: src/stored/reserve.c:1579
+#: src/stored/reserve.c:1581
#, c-format
msgid "Logic error!!!! JobId=%u Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1580
+#: src/stored/reserve.c:1582
#, c-format
msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1583
+#: src/stored/reserve.c:1585
msgid "Logic error!!!! Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1586
+#: src/stored/reserve.c:1588
#, c-format
msgid "3911 JobId=%u failed reserve drive %s.\n"
msgstr ""
@@ -7832,11 +7832,11 @@
msgid "EOT label not copied.\n"
msgstr ""
-#: src/stored/bcopy.c:334 src/stored/label.c:1047 src/stored/bls.c:423
+#: src/stored/bcopy.c:334 src/stored/label.c:1049 src/stored/bls.c:423
msgid "Begin Job Session"
msgstr ""
-#: src/stored/bcopy.c:338 src/stored/label.c:1050 src/stored/bls.c:427
+#: src/stored/bcopy.c:338 src/stored/label.c:1052 src/stored/bls.c:427
msgid "End Job Session"
msgstr ""
@@ -7844,7 +7844,7 @@
msgid "End of Medium"
msgstr ""
-#: src/stored/bcopy.c:346 src/stored/label.c:1059 src/stored/bls.c:434
+#: src/stored/bcopy.c:346 src/stored/label.c:1061 src/stored/bls.c:434
msgid "Unknown"
msgstr ""
@@ -8041,57 +8041,57 @@
msgid "Cannot write Volume label to block for device %s\n"
msgstr ""
-#: src/stored/label.c:350 src/stored/label.c:448
+#: src/stored/label.c:350 src/stored/label.c:449
#, c-format
msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:472
+#: src/stored/label.c:473
#, c-format
msgid "Rewind error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:480
+#: src/stored/label.c:481
#, c-format
msgid "Truncate error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:486
+#: src/stored/label.c:487
#, c-format
msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:509
+#: src/stored/label.c:510
#, c-format
msgid "Unable to write device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:538
+#: src/stored/label.c:540
#, c-format
msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
msgstr ""
-#: src/stored/label.c:541
+#: src/stored/label.c:543
#, c-format
msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
msgstr ""
-#: src/stored/label.c:740
+#: src/stored/label.c:742
#, c-format
msgid "Bad Volume session label = %d\n"
msgstr ""
-#: src/stored/label.c:795
+#: src/stored/label.c:797
#, c-format
msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
msgstr ""
-#: src/stored/label.c:922
+#: src/stored/label.c:924
#, c-format
msgid "Unknown %d"
msgstr ""
-#: src/stored/label.c:926
+#: src/stored/label.c:928
#, c-format
msgid ""
"\n"
@@ -8108,17 +8108,17 @@
"HostName : %s\n"
msgstr ""
-#: src/stored/label.c:948
+#: src/stored/label.c:950
#, c-format
msgid "Date label written: %s\n"
msgstr ""
-#: src/stored/label.c:954
+#: src/stored/label.c:956
#, c-format
msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:974
+#: src/stored/label.c:976
#, c-format
msgid ""
"\n"
@@ -8131,7 +8131,7 @@
"ClientName : %s\n"
msgstr ""
-#: src/stored/label.c:987
+#: src/stored/label.c:989
#, c-format
msgid ""
"Job (unique name) : %s\n"
@@ -8140,7 +8140,7 @@
"JobLevel : %c\n"
msgstr ""
-#: src/stored/label.c:996
+#: src/stored/label.c:998
#, c-format
msgid ""
"JobFiles : %s\n"
@@ -8153,48 +8153,48 @@
"JobStatus : %c\n"
msgstr ""
-#: src/stored/label.c:1017
+#: src/stored/label.c:1019
#, c-format
msgid "Date written : %s\n"
msgstr ""
-#: src/stored/label.c:1022
+#: src/stored/label.c:1024
#, c-format
msgid "Date written : %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:1041
+#: src/stored/label.c:1043
msgid "Fresh Volume"
msgstr ""
-#: src/stored/label.c:1044
+#: src/stored/label.c:1046
msgid "Volume"
msgstr ""
-#: src/stored/label.c:1056
+#: src/stored/label.c:1058
msgid "End of Tape"
msgstr ""
-#: src/stored/label.c:1076 src/stored/label.c:1084 src/stored/label.c:1117
+#: src/stored/label.c:1078 src/stored/label.c:1086 src/stored/label.c:1119
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
msgstr ""
-#: src/stored/label.c:1081
+#: src/stored/label.c:1083
msgid "End of physical tape.\n"
msgstr ""
-#: src/stored/label.c:1096 src/stored/label.c:1105
+#: src/stored/label.c:1098 src/stored/label.c:1107
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
msgstr ""
-#: src/stored/label.c:1098
+#: src/stored/label.c:1100
#, c-format
msgid " Job=%s Date=%s Level=%c Type=%c\n"
msgstr ""
-#: src/stored/label.c:1107
+#: src/stored/label.c:1109
#, c-format
msgid " Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
msgstr ""
@@ -10906,16 +10906,16 @@
msgid "FD connect failed: Job name not found: %s\n"
msgstr ""
-#: src/stored/job.c:240
+#: src/stored/job.c:238
#, c-format
msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
msgstr ""
-#: src/stored/job.c:251
+#: src/stored/job.c:255
msgid "Unable to authenticate File daemon\n"
msgstr ""
-#: src/stored/job.c:373
+#: src/stored/job.c:377
msgid "In free_jcr(), but still attached to device!!!!\n"
msgstr ""
@@ -10933,22 +10933,22 @@
msgid "Didn't get vol info vol=%s: ERR=%s"
msgstr ""
-#: src/stored/askdir.c:415
+#: src/stored/askdir.c:428
#, c-format
msgid "Error creating JobMedia record: ERR=%s\n"
msgstr ""
-#: src/stored/askdir.c:422
+#: src/stored/askdir.c:435
#, c-format
msgid "Error creating JobMedia record: %s\n"
msgstr ""
-#: src/stored/askdir.c:489
+#: src/stored/askdir.c:502
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
msgstr ""
-#: src/stored/askdir.c:500
+#: src/stored/askdir.c:513
#, c-format
msgid ""
"Job %s waiting. Cannot find any appendable volumes.\n"
@@ -10958,25 +10958,25 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:526 src/stored/askdir.c:628
+#: src/stored/askdir.c:539 src/stored/askdir.c:641
#, c-format
msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
msgstr ""
-#: src/stored/askdir.c:536
+#: src/stored/askdir.c:549
msgid "pthread error in mount_next_volume.\n"
msgstr ""
-#: src/stored/askdir.c:570
+#: src/stored/askdir.c:583
msgid "Cannot request another volume: no volume name given.\n"
msgstr ""
-#: src/stored/askdir.c:576
+#: src/stored/askdir.c:589
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
msgstr ""
-#: src/stored/askdir.c:593
+#: src/stored/askdir.c:606
#, c-format
msgid ""
"Please mount Volume \"%s\" or label a new one for:\n"
@@ -10986,7 +10986,7 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:599
+#: src/stored/askdir.c:612
#, c-format
msgid ""
"Please mount Volume \"%s\" for:\n"
@@ -10996,7 +10996,7 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:638
+#: src/stored/askdir.c:651
msgid "pthread error in mount_volume\n"
msgstr ""
@@ -13442,7 +13442,7 @@
msgid "NULL jcr.\n"
msgstr ""
-#: src/lib/jcr.c:445
+#: src/lib/jcr.c:444
#, c-format
msgid "JCR use_count=%d JobId=%d\n"
msgstr ""
@@ -13604,83 +13604,48 @@
msgid "rwl_writeunlock by non-owner.\n"
msgstr ""
-#: src/lib/rwlock.c:369
-#, c-format
-msgid "Write lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:377
-#, c-format
-msgid "Write unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:388
-#, c-format
-msgid "Read lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:396
-#, c-format
-msgid "Read unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:405
+#: src/lib/rwlock.c:427
#, c-format
msgid "Thread %d found unchanged elements %d times\n"
msgstr ""
-#: src/lib/rwlock.c:438
-#, c-format
-msgid "Init rwlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:454
-#, c-format
-msgid "Create thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:466
-#, c-format
-msgid "Join thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:469
+#: src/lib/rwlock.c:497
#, c-format
msgid "%02d: interval %d, writes %d, reads %d\n"
msgstr ""
-#: src/lib/rwlock.c:479
+#: src/lib/rwlock.c:507
#, c-format
msgid "data %02d: value %d, %d writes\n"
msgstr ""
-#: src/lib/rwlock.c:484
+#: src/lib/rwlock.c:512
#, c-format
msgid "Total: %d thread writes, %d data writes\n"
msgstr ""
-#: src/lib/rwlock.c:556
+#: src/lib/rwlock.c:584
msgid "Try write lock"
msgstr ""
-#: src/lib/rwlock.c:562
+#: src/lib/rwlock.c:590
msgid "Try read lock"
msgstr ""
-#: src/lib/rwlock.c:617
+#: src/lib/rwlock.c:645
msgid "Create thread"
msgstr ""
-#: src/lib/rwlock.c:627
+#: src/lib/rwlock.c:655
msgid "Join thread"
msgstr ""
-#: src/lib/rwlock.c:629
+#: src/lib/rwlock.c:657
#, c-format
msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
msgstr ""
-#: src/lib/rwlock.c:641
+#: src/lib/rwlock.c:669
#, c-format
msgid "data %02d: value %d, %d updates\n"
msgstr ""
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/po/de.po
^
|
@@ -10,7 +10,7 @@
msgstr ""
"Project-Id-Version: de\n"
"Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2008-10-10 20:22+0200\n"
+"POT-Creation-Date: 2008-12-24 10:08+0100\n"
"PO-Revision-Date: 2007-06-25 20:38+0200\n"
"Last-Translator: Philipp Storz <philipp.storz@dass-it.de>\n"
"Language-Team: \n"
@@ -429,7 +429,7 @@
msgstr ""
#: src/dird/backup.c:87 src/dird/migrate.c:230 src/dird/migrate.c:231
-#: src/dird/job.c:917 src/dird/job.c:964
+#: src/dird/job.c:919 src/dird/job.c:966
msgid "Pool resource"
msgstr "Pool Ressource"
@@ -456,7 +456,7 @@
msgid "No Job status returned from FD.\n"
msgstr "FD hat keinen Jobstatus zurückgegeben.\n"
-#: src/dird/backup.c:358 src/dird/migrate.c:1098 src/dird/admin.c:89
+#: src/dird/backup.c:358 src/dird/migrate.c:1108 src/dird/admin.c:89
#, fuzzy, c-format
msgid "Error getting Job record for Job report: ERR=%s"
msgstr "Fehler beim Holen des job Eintrags für den job Bericht: %s"
@@ -466,7 +466,7 @@
msgid "Error getting Client record for Job report: ERR=%s"
msgstr "Fehler beim holen des Datensatzes für Volume \"%s\": ERR=%s"
-#: src/dird/backup.c:371 src/dird/migrate.c:1129
+#: src/dird/backup.c:371 src/dird/migrate.c:1138
#, c-format
msgid "Error getting Media record for Volume \"%s\": ERR=%s"
msgstr "Fehler beim holen des Datensatzes für Volume \"%s\": ERR=%s"
@@ -1413,14 +1413,14 @@
msgid "Could not get or create a Pool record.\n"
msgstr "Konnte keinen Pool Eintrag holen oder erzeugen.\n"
-#: src/dird/migrate.c:138 src/dird/migrate.c:154
-msgid "No previous Job found to migrate.\n"
-msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
-
-#: src/dird/migrate.c:144
+#: src/dird/migrate.c:127
msgid "Could not get or create the FileSet record.\n"
msgstr "Konnte FileSet Eintrag weder holen noch erzeugen.\n"
+#: src/dird/migrate.c:144 src/dird/migrate.c:154
+msgid "No previous Job found to migrate.\n"
+msgstr "Keinen vorherigen Job zum migrieren gefunden.\n"
+
#: src/dird/migrate.c:156
msgid "Previous Job has no data to migrate.\n"
msgstr "Vorheriger Job hat keine Daten zu migrieren.\n"
@@ -1453,7 +1453,7 @@
msgid "Job Pool's NextPool resource"
msgstr "\"NextPool\" Ressource des Job Pools"
-#: src/dird/migrate.c:278 src/dird/migrate.c:845
+#: src/dird/migrate.c:278 src/dird/migrate.c:837
#, c-format
msgid "Could not get job record for JobId %s to migrate. ERR=%s"
msgstr "Konnte job record für JobId %s zum migrieren nicht holen. ERR=%s"
@@ -1473,123 +1473,123 @@
msgid "Read storage \"%s\" same as write storage.\n"
msgstr "Lese storage \"%s\" ist gleich mit Schreib storage.\n"
-#: src/dird/migrate.c:670
+#: src/dird/migrate.c:662
msgid "No Migration SQL selection pattern specified.\n"
msgstr "Kein \"Migration SQL selection pattern\" spezifiziert.\n"
-#: src/dird/migrate.c:677 src/dird/migrate.c:697 src/dird/migrate.c:718
-#: src/dird/migrate.c:754 src/dird/migrate.c:782 src/dird/migrate.c:898
-#: src/dird/migrate.c:931 src/dird/migrate.c:1028
+#: src/dird/migrate.c:669 src/dird/migrate.c:689 src/dird/migrate.c:710
+#: src/dird/migrate.c:746 src/dird/migrate.c:774 src/dird/migrate.c:890
+#: src/dird/migrate.c:923 src/dird/migrate.c:1020
#, c-format
msgid "SQL failed. ERR=%s\n"
msgstr "SQL fehlgeschlagen ERR=%s\n"
-#: src/dird/migrate.c:701 src/dird/migrate.c:708 src/dird/migrate.c:722
-#: src/dird/migrate.c:786
+#: src/dird/migrate.c:693 src/dird/migrate.c:700 src/dird/migrate.c:714
+#: src/dird/migrate.c:778
msgid "No Volumes found to migrate.\n"
msgstr "Keine Volumes zum Migrieren gefunden.\n"
-#: src/dird/migrate.c:736 src/dird/migrate.c:821 src/dird/migrate.c:834
+#: src/dird/migrate.c:728 src/dird/migrate.c:813 src/dird/migrate.c:826
msgid "Invalid JobId found.\n"
msgstr "Ungültige JobId gefunden.\n"
-#: src/dird/migrate.c:793
+#: src/dird/migrate.c:785
msgid "Unknown Migration Selection Type.\n"
msgstr "Unbekannter \"Migration Selection Type\".\n"
-#: src/dird/migrate.c:805 src/dird/migrate.c:824 src/dird/migrate.c:837
+#: src/dird/migrate.c:797 src/dird/migrate.c:816 src/dird/migrate.c:829
msgid "No JobIds found to migrate.\n"
msgstr "Keine JobIds zum migrieren gefunden.\n"
-#: src/dird/migrate.c:809
+#: src/dird/migrate.c:801
#, fuzzy, c-format
msgid "The following %u JobId%s were chosen to be migrated: %s\n"
msgstr "Die folgende %u JobId%s wird migriert werden: %s\n"
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:842
#, c-format
msgid "Migration using JobId=%s Job=%s\n"
msgstr "Migration benutzt JobId=%s Job=%s\n"
-#: src/dird/migrate.c:881
+#: src/dird/migrate.c:873
msgid "Could not start migration job.\n"
msgstr "Konnte Migrationsjob nicht starten.\n"
-#: src/dird/migrate.c:883
+#: src/dird/migrate.c:875
#, c-format
msgid "Migration JobId %d started.\n"
msgstr "Migration JobId %d gestartet.\n"
-#: src/dird/migrate.c:902
+#: src/dird/migrate.c:894
#, fuzzy, c-format
msgid "No %s found to migrate.\n"
msgstr "Keine %ss zum Migrieren gefunden.\n"
-#: src/dird/migrate.c:906
+#: src/dird/migrate.c:898
#, c-format
msgid "SQL error. Expected 1 MediaId got %d\n"
msgstr "SQL Fehler. Erwartet 1 MediaId erhalten: %d\n"
-#: src/dird/migrate.c:935 src/dird/migrate.c:1033
+#: src/dird/migrate.c:927 src/dird/migrate.c:1025
#, c-format
msgid "No %ss found to migrate.\n"
msgstr "Keine %ss zum Migrieren gefunden.\n"
-#: src/dird/migrate.c:957
+#: src/dird/migrate.c:949
#, c-format
msgid "No Migration %s selection pattern specified.\n"
msgstr "Kein Migration %s selection pattern spezifiziert.\n"
-#: src/dird/migrate.c:968
+#: src/dird/migrate.c:960
#, c-format
msgid "SQL to get %s failed. ERR=%s\n"
msgstr "SQL um %s zu holen fehlgeschlagen. ERR=%s\n"
-#: src/dird/migrate.c:973
+#: src/dird/migrate.c:965
#, c-format
msgid "Query of Pool \"%s\" returned no Jobs to migrate.\n"
msgstr "Abfrage nach Pool \"%s\" ergab keine Jobs für die Migration.\n"
-#: src/dird/migrate.c:982
+#: src/dird/migrate.c:974
#, c-format
msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
-#: src/dird/migrate.c:1011
+#: src/dird/migrate.c:1003
msgid "Regex pattern matched no Jobs to migrate.\n"
msgstr "Regex pattern hat auf keine Jobs für die Migration zugetroffen.\n"
-#: src/dird/migrate.c:1137
+#: src/dird/migrate.c:1146
#, c-format
msgid "%s OK -- with warnings"
msgstr "%s OK -- mit Warnungen"
-#: src/dird/migrate.c:1139
+#: src/dird/migrate.c:1148
#, c-format
msgid "%s OK"
msgstr "%s OK"
-#: src/dird/migrate.c:1144
+#: src/dird/migrate.c:1153
#, c-format
msgid "*** %s Error ***"
msgstr "*** %s Fehler ***"
-#: src/dird/migrate.c:1154
+#: src/dird/migrate.c:1163
#, c-format
msgid "%s Canceled"
msgstr "%s Abgebrochen"
-#: src/dird/migrate.c:1163
+#: src/dird/migrate.c:1172
#, c-format
msgid "Inappropriate %s term code"
msgstr "Unzutreffender %s Beendigungskode"
-#: src/dird/migrate.c:1173
+#: src/dird/migrate.c:1182
#, c-format
msgid "%s -- no files to migrate"
msgstr "%s -- keine Dateien zur Migration."
-#: src/dird/migrate.c:1189
+#: src/dird/migrate.c:1198
#, fuzzy, c-format
msgid ""
"Bacula %s %s (%s): %s\n"
@@ -1649,17 +1649,17 @@
" Beendigungsstatus: %s\n"
"\n"
-#: src/dird/migrate.c:1296
+#: src/dird/migrate.c:1305
#, c-format
msgid "No Next Pool specification found in Pool \"%s\".\n"
msgstr "Keine \"Next Pool\" Spezifikation in Pool \"%s\" gefunden.\n"
-#: src/dird/migrate.c:1302
+#: src/dird/migrate.c:1311
#, c-format
msgid "No Storage specification found in Next Pool \"%s\".\n"
msgstr "Keine \"Storage\" Spezifikation in \"Next Pool\" \"%s\" gefunden.\n"
-#: src/dird/migrate.c:1308
+#: src/dird/migrate.c:1317
msgid "Storage from Pool's NextPool resource"
msgstr "Storage aus der \"NextPool\" Ressource des Pools."
@@ -2293,23 +2293,23 @@
msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
msgstr ""
-#: src/dird/ua_purge.c:481
+#: src/dird/ua_purge.c:484
#, c-format
msgid ""
"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
msgstr ""
-#: src/dird/ua_purge.c:522
+#: src/dird/ua_purge.c:525
#, c-format
msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
msgstr ""
-#: src/dird/ua_purge.c:535
+#: src/dird/ua_purge.c:538
#, c-format
msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
msgstr ""
-#: src/dird/ua_purge.c:540
+#: src/dird/ua_purge.c:543
#, c-format
msgid "Cannot purge Volume with VolStatus=%s\n"
msgstr ""
@@ -2699,7 +2699,7 @@
msgstr ""
#: src/dird/ua_status.c:308 src/dird/job.c:146 src/dird/job.c:152
-#: src/dird/job.c:944 src/dird/job.c:956 src/dird/ua_cmds.c:780
+#: src/dird/job.c:946 src/dird/job.c:958 src/dird/ua_cmds.c:780
#: src/dird/ua_cmds.c:1467 src/dird/ua_dotcmds.c:174
msgid "unknown source"
msgstr "unbekannte Quelle"
@@ -3012,7 +3012,7 @@
msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
#: src/dird/job.c:397 src/dird/job.c:399 src/dird/job.c:440 src/dird/job.c:442
-#: src/dird/job.c:920 src/dird/job.c:962 src/dird/job.c:971
+#: src/dird/job.c:922 src/dird/job.c:964 src/dird/job.c:973
msgid "Job resource"
msgstr "Job Ressource"
@@ -3024,7 +3024,7 @@
msgid "Max run time exceeded. Job canceled.\n"
msgstr "\"Max run time\" überschritten, Job abgebrochen.\n"
-#: src/dird/job.c:601 src/dird/job.c:907
+#: src/dird/job.c:601 src/dird/job.c:909
#, fuzzy
msgid "Run pool override"
msgstr "von \"Run pool\" überschrieben"
@@ -3073,20 +3073,20 @@
msgid "Error updating job record. %s"
msgstr "Fehler beim Aktualisieren des job Eintrags. %s"
-#: src/dird/job.c:912
+#: src/dird/job.c:914
#, fuzzy
msgid "Run storage override"
msgstr "Run storage override"
-#: src/dird/job.c:1033 src/dird/ua_run.c:1215
+#: src/dird/job.c:1035 src/dird/ua_run.c:1215
msgid "No storage specified.\n"
msgstr "Kein storage angegeben.\n"
-#: src/dird/job.c:1200
+#: src/dird/job.c:1202
msgid "Could not start clone job.\n"
msgstr "Konnte clone job nicht starten.\n"
-#: src/dird/job.c:1202
+#: src/dird/job.c:1204
#, c-format
msgid "Clone JobId %d started.\n"
msgstr "Clone JobId %d gestartet.\n"
@@ -6996,7 +6996,7 @@
"löschen von %s fehlgeschlagen:\n"
"%s\n"
-#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1031
+#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1030
#: src/cats/sql_get.c:185 src/cats/sql_get.c:236 src/cats/sql_get.c:604
#: src/cats/sql_get.c:680 src/cats/sql_get.c:951
#, c-format
@@ -7192,82 +7192,82 @@
msgid "Create DB Media record %s failed. ERR=%s\n"
msgstr "Erzeugung DB Media Eintrag %s fehlgeschlagen. ERR=%s\n"
-#: src/cats/sql_create.c:493
+#: src/cats/sql_create.c:492
#, c-format
msgid "More than one Client!: %d\n"
msgstr "Mehr als ein Client!: %d\n"
-#: src/cats/sql_create.c:498
+#: src/cats/sql_create.c:497
#, c-format
msgid "error fetching Client row: %s\n"
msgstr "Fehler beim holen der Client Zeile: %s\n"
-#: src/cats/sql_create.c:525
+#: src/cats/sql_create.c:524
#, c-format
msgid "Create DB Client record %s failed. ERR=%s\n"
msgstr "Erzeugung des DB Client Eintrags %s fehlgeschlagen. ERR=%s\n"
-#: src/cats/sql_create.c:568
+#: src/cats/sql_create.c:567
#, c-format
msgid "Create DB Counters record %s failed. ERR=%s\n"
msgstr "Erzeugung des DB Counters Eintrag %s fehlgeschlagen. ERR=%s\n"
-#: src/cats/sql_create.c:601
+#: src/cats/sql_create.c:600
#, c-format
msgid "More than one FileSet!: %d\n"
msgstr "Mehr als ein FileSet!: %d\n"
-#: src/cats/sql_create.c:606
+#: src/cats/sql_create.c:605
#, c-format
msgid "error fetching FileSet row: ERR=%s\n"
msgstr "Fehler beim holen der FileSet Zeile: ERR=%s\n"
-#: src/cats/sql_create.c:636
+#: src/cats/sql_create.c:635
#, c-format
msgid "Create DB FileSet record %s failed. ERR=%s\n"
msgstr "Erzeugung des DB FileSet Eintrags %s fehlgeschlagen. ERR=%s\n"
-#: src/cats/sql_create.c:857
+#: src/cats/sql_create.c:856
#, fuzzy, c-format
msgid "Could not init batch database: \"%s\".\n"
msgstr "Konnte Datenbank \"%s\" nicht öffen.\n"
-#: src/cats/sql_create.c:864
+#: src/cats/sql_create.c:863
#, fuzzy, c-format
msgid "Could not open database \"%s\": ERR=%s\n"
msgstr "Konnte Datenbank \"%s\" nicht öffen.\n"
-#: src/cats/sql_create.c:886 src/cats/sql_create.c:927
+#: src/cats/sql_create.c:885 src/cats/sql_create.c:926
#, c-format
msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
msgstr "Versuche \"non-attributes\" in catalog einzufügen. Stream=%d\n"
-#: src/cats/sql_create.c:991
+#: src/cats/sql_create.c:990
#, c-format
msgid "Create db File record %s failed. ERR=%s"
msgstr "Erzeugung des db File Eintrags %s fehlgeschlagen. ERR=%s"
-#: src/cats/sql_create.c:1024 src/cats/sql_get.c:229
+#: src/cats/sql_create.c:1023 src/cats/sql_get.c:229
#, c-format
msgid "More than one Path!: %s for path: %s\n"
msgstr "Mehr als ein Pfad!: %s für Pfad: %s\n"
-#: src/cats/sql_create.c:1055
+#: src/cats/sql_create.c:1054
#, c-format
msgid "Create db Path record %s failed. ERR=%s\n"
msgstr "Erzeugung des db Path Eintrags %s fehlgeschlagen. ERR=%s\n"
-#: src/cats/sql_create.c:1088
+#: src/cats/sql_create.c:1087
#, c-format
msgid "More than one Filename! %s for file: %s\n"
msgstr "Mehr als ein Dateiname! %s für Datei: %s\n"
-#: src/cats/sql_create.c:1094
+#: src/cats/sql_create.c:1093
#, c-format
msgid "Error fetching row for file=%s: ERR=%s\n"
msgstr "Fehler beim Holen der Zeile für Datei=%s: ERR=%s\n"
-#: src/cats/sql_create.c:1110
+#: src/cats/sql_create.c:1109
#, c-format
msgid "Create db Filename record %s failed. ERR=%s\n"
msgstr "Erzeugung des db Filename Eintrags %s fehlgeschlagen. ERR=%s\n"
@@ -7885,7 +7885,7 @@
msgid "End Session"
msgstr ""
-#: src/stored/read_record.c:407 src/stored/label.c:1053
+#: src/stored/read_record.c:407 src/stored/label.c:1055
msgid "End of Media"
msgstr ""
@@ -7933,21 +7933,21 @@
msgid "Device switch. New device %s chosen.\n"
msgstr ""
-#: src/stored/reserve.c:509
+#: src/stored/reserve.c:510
#, c-format
msgid "Hey! num_writers=%d!!!!\n"
msgstr ""
-#: src/stored/reserve.c:752
+#: src/stored/reserve.c:754
msgid "3939 Could not get dcr\n"
msgstr ""
-#: src/stored/reserve.c:855 src/stored/reserve.c:866
+#: src/stored/reserve.c:857 src/stored/reserve.c:868
#, c-format
msgid "Failed command: %s\n"
msgstr ""
-#: src/stored/reserve.c:856
+#: src/stored/reserve.c:858
#, c-format
msgid ""
"\n"
@@ -7955,7 +7955,7 @@
"Device resources.\n"
msgstr ""
-#: src/stored/reserve.c:1172 src/stored/dircmd.c:601
+#: src/stored/reserve.c:1174 src/stored/dircmd.c:601
#, c-format
msgid ""
"\n"
@@ -7963,80 +7963,80 @@
"does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1176 src/stored/dircmd.c:579
+#: src/stored/reserve.c:1178 src/stored/dircmd.c:579
#, c-format
msgid ""
"\n"
" Device \"%s\" requested by DIR could not be opened or does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1188
+#: src/stored/reserve.c:1190
#, c-format
msgid "3926 Could not get dcr for device: %s\n"
msgstr ""
-#: src/stored/reserve.c:1311
+#: src/stored/reserve.c:1313
#, c-format
msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
-#: src/stored/reserve.c:1321
+#: src/stored/reserve.c:1323
#, c-format
msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
msgstr ""
-#: src/stored/reserve.c:1365
+#: src/stored/reserve.c:1367
#, c-format
msgid "3603 JobId=%u device %s is busy reading.\n"
msgstr ""
-#: src/stored/reserve.c:1374
+#: src/stored/reserve.c:1376
#, c-format
msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
-#: src/stored/reserve.c:1411
+#: src/stored/reserve.c:1413
#, c-format
msgid ""
"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive %"
"s.\n"
msgstr ""
-#: src/stored/reserve.c:1437
+#: src/stored/reserve.c:1439
#, c-format
msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
msgstr ""
-#: src/stored/reserve.c:1492
+#: src/stored/reserve.c:1494
#, c-format
msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
msgstr ""
-#: src/stored/reserve.c:1500
+#: src/stored/reserve.c:1502
#, c-format
msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
msgstr ""
-#: src/stored/reserve.c:1523
+#: src/stored/reserve.c:1525
#, c-format
msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
msgstr ""
-#: src/stored/reserve.c:1579
+#: src/stored/reserve.c:1581
#, c-format
msgid "Logic error!!!! JobId=%u Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1580
+#: src/stored/reserve.c:1582
#, c-format
msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1583
+#: src/stored/reserve.c:1585
msgid "Logic error!!!! Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1586
+#: src/stored/reserve.c:1588
#, c-format
msgid "3911 JobId=%u failed reserve drive %s.\n"
msgstr ""
@@ -8124,11 +8124,11 @@
msgid "EOT label not copied.\n"
msgstr ""
-#: src/stored/bcopy.c:334 src/stored/label.c:1047 src/stored/bls.c:423
+#: src/stored/bcopy.c:334 src/stored/label.c:1049 src/stored/bls.c:423
msgid "Begin Job Session"
msgstr ""
-#: src/stored/bcopy.c:338 src/stored/label.c:1050 src/stored/bls.c:427
+#: src/stored/bcopy.c:338 src/stored/label.c:1052 src/stored/bls.c:427
msgid "End Job Session"
msgstr ""
@@ -8136,7 +8136,7 @@
msgid "End of Medium"
msgstr ""
-#: src/stored/bcopy.c:346 src/stored/label.c:1059 src/stored/bls.c:434
+#: src/stored/bcopy.c:346 src/stored/label.c:1061 src/stored/bls.c:434
msgid "Unknown"
msgstr ""
@@ -8347,57 +8347,57 @@
msgid "Cannot write Volume label to block for device %s\n"
msgstr ""
-#: src/stored/label.c:350 src/stored/label.c:448
+#: src/stored/label.c:350 src/stored/label.c:449
#, fuzzy, c-format
msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
-#: src/stored/label.c:472
+#: src/stored/label.c:473
#, c-format
msgid "Rewind error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:480
+#: src/stored/label.c:481
#, c-format
msgid "Truncate error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:486
+#: src/stored/label.c:487
#, c-format
msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:509
+#: src/stored/label.c:510
#, c-format
msgid "Unable to write device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:538
+#: src/stored/label.c:540
#, c-format
msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
msgstr ""
-#: src/stored/label.c:541
+#: src/stored/label.c:543
#, c-format
msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
msgstr ""
-#: src/stored/label.c:740
+#: src/stored/label.c:742
#, c-format
msgid "Bad Volume session label = %d\n"
msgstr ""
-#: src/stored/label.c:795
+#: src/stored/label.c:797
#, c-format
msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
msgstr ""
-#: src/stored/label.c:922
+#: src/stored/label.c:924
#, c-format
msgid "Unknown %d"
msgstr ""
-#: src/stored/label.c:926
+#: src/stored/label.c:928
#, c-format
msgid ""
"\n"
@@ -8414,17 +8414,17 @@
"HostName : %s\n"
msgstr ""
-#: src/stored/label.c:948
+#: src/stored/label.c:950
#, c-format
msgid "Date label written: %s\n"
msgstr ""
-#: src/stored/label.c:954
+#: src/stored/label.c:956
#, c-format
msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:974
+#: src/stored/label.c:976
#, c-format
msgid ""
"\n"
@@ -8437,7 +8437,7 @@
"ClientName : %s\n"
msgstr ""
-#: src/stored/label.c:987
+#: src/stored/label.c:989
#, c-format
msgid ""
"Job (unique name) : %s\n"
@@ -8446,7 +8446,7 @@
"JobLevel : %c\n"
msgstr ""
-#: src/stored/label.c:996
+#: src/stored/label.c:998
#, c-format
msgid ""
"JobFiles : %s\n"
@@ -8459,48 +8459,48 @@
"JobStatus : %c\n"
msgstr ""
-#: src/stored/label.c:1017
+#: src/stored/label.c:1019
#, c-format
msgid "Date written : %s\n"
msgstr ""
-#: src/stored/label.c:1022
+#: src/stored/label.c:1024
#, c-format
msgid "Date written : %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:1041
+#: src/stored/label.c:1043
msgid "Fresh Volume"
msgstr ""
-#: src/stored/label.c:1044
+#: src/stored/label.c:1046
msgid "Volume"
msgstr ""
-#: src/stored/label.c:1056
+#: src/stored/label.c:1058
msgid "End of Tape"
msgstr ""
-#: src/stored/label.c:1076 src/stored/label.c:1084 src/stored/label.c:1117
+#: src/stored/label.c:1078 src/stored/label.c:1086 src/stored/label.c:1119
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
msgstr ""
-#: src/stored/label.c:1081
+#: src/stored/label.c:1083
msgid "End of physical tape.\n"
msgstr ""
-#: src/stored/label.c:1096 src/stored/label.c:1105
+#: src/stored/label.c:1098 src/stored/label.c:1107
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
msgstr ""
-#: src/stored/label.c:1098
+#: src/stored/label.c:1100
#, c-format
msgid " Job=%s Date=%s Level=%c Type=%c\n"
msgstr ""
-#: src/stored/label.c:1107
+#: src/stored/label.c:1109
#, c-format
msgid " Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
msgstr ""
@@ -11243,16 +11243,16 @@
msgid "FD connect failed: Job name not found: %s\n"
msgstr "Job nicht gefunden: %s\n"
-#: src/stored/job.c:240
+#: src/stored/job.c:238
#, c-format
msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
msgstr ""
-#: src/stored/job.c:251
+#: src/stored/job.c:255
msgid "Unable to authenticate File daemon\n"
msgstr ""
-#: src/stored/job.c:373
+#: src/stored/job.c:377
msgid "In free_jcr(), but still attached to device!!!!\n"
msgstr ""
@@ -11270,22 +11270,22 @@
msgid "Didn't get vol info vol=%s: ERR=%s"
msgstr ""
-#: src/stored/askdir.c:415
+#: src/stored/askdir.c:428
#, c-format
msgid "Error creating JobMedia record: ERR=%s\n"
msgstr ""
-#: src/stored/askdir.c:422
+#: src/stored/askdir.c:435
#, c-format
msgid "Error creating JobMedia record: %s\n"
msgstr ""
-#: src/stored/askdir.c:489
+#: src/stored/askdir.c:502
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
msgstr ""
-#: src/stored/askdir.c:500
+#: src/stored/askdir.c:513
#, c-format
msgid ""
"Job %s waiting. Cannot find any appendable volumes.\n"
@@ -11295,25 +11295,25 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:526 src/stored/askdir.c:628
+#: src/stored/askdir.c:539 src/stored/askdir.c:641
#, c-format
msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
msgstr ""
-#: src/stored/askdir.c:536
+#: src/stored/askdir.c:549
msgid "pthread error in mount_next_volume.\n"
msgstr ""
-#: src/stored/askdir.c:570
+#: src/stored/askdir.c:583
msgid "Cannot request another volume: no volume name given.\n"
msgstr ""
-#: src/stored/askdir.c:576
+#: src/stored/askdir.c:589
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
msgstr ""
-#: src/stored/askdir.c:593
+#: src/stored/askdir.c:606
#, c-format
msgid ""
"Please mount Volume \"%s\" or label a new one for:\n"
@@ -11323,7 +11323,7 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:599
+#: src/stored/askdir.c:612
#, c-format
msgid ""
"Please mount Volume \"%s\" for:\n"
@@ -11333,7 +11333,7 @@
" Media type: %s\n"
msgstr ""
-#: src/stored/askdir.c:638
+#: src/stored/askdir.c:651
msgid "pthread error in mount_volume\n"
msgstr ""
@@ -13791,7 +13791,7 @@
msgid "NULL jcr.\n"
msgstr ""
-#: src/lib/jcr.c:445
+#: src/lib/jcr.c:444
#, c-format
msgid "JCR use_count=%d JobId=%d\n"
msgstr ""
@@ -13953,83 +13953,48 @@
msgid "rwl_writeunlock by non-owner.\n"
msgstr ""
-#: src/lib/rwlock.c:369
-#, c-format
-msgid "Write lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:377
-#, c-format
-msgid "Write unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:388
-#, c-format
-msgid "Read lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:396
-#, c-format
-msgid "Read unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:405
+#: src/lib/rwlock.c:427
#, c-format
msgid "Thread %d found unchanged elements %d times\n"
msgstr ""
-#: src/lib/rwlock.c:438
-#, c-format
-msgid "Init rwlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:454
-#, c-format
-msgid "Create thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:466
-#, c-format
-msgid "Join thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:469
+#: src/lib/rwlock.c:497
#, c-format
msgid "%02d: interval %d, writes %d, reads %d\n"
msgstr ""
-#: src/lib/rwlock.c:479
+#: src/lib/rwlock.c:507
#, c-format
msgid "data %02d: value %d, %d writes\n"
msgstr ""
-#: src/lib/rwlock.c:484
+#: src/lib/rwlock.c:512
#, c-format
msgid "Total: %d thread writes, %d data writes\n"
msgstr ""
-#: src/lib/rwlock.c:556
+#: src/lib/rwlock.c:584
msgid "Try write lock"
msgstr ""
-#: src/lib/rwlock.c:562
+#: src/lib/rwlock.c:590
msgid "Try read lock"
msgstr ""
-#: src/lib/rwlock.c:617
+#: src/lib/rwlock.c:645
msgid "Create thread"
msgstr ""
-#: src/lib/rwlock.c:627
+#: src/lib/rwlock.c:655
msgid "Join thread"
msgstr ""
-#: src/lib/rwlock.c:629
+#: src/lib/rwlock.c:657
#, c-format
msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
msgstr ""
-#: src/lib/rwlock.c:641
+#: src/lib/rwlock.c:669
#, c-format
msgid "data %02d: value %d, %d updates\n"
msgstr ""
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/po/fr.po
^
|
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: Bacula 1.38\n"
"Report-Msgid-Bugs-To: bacula-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2008-10-10 20:22+0200\n"
+"POT-Creation-Date: 2008-12-24 10:08+0100\n"
"PO-Revision-Date: 2008-01-24 22:54+0100\n"
"Last-Translator: Eric Bollengier <eric@eb.homelinux.org>\n"
"Language-Team: French <bacula-devel-fr@lists.sourceforge.net>\n"
@@ -432,7 +432,7 @@
msgstr "La ressource Pool « %s » est introuvable pour le volume « %s »\n"
#: src/dird/backup.c:87 src/dird/migrate.c:230 src/dird/migrate.c:231
-#: src/dird/job.c:917 src/dird/job.c:964
+#: src/dird/job.c:919 src/dird/job.c:966
msgid "Pool resource"
msgstr "Ressource Pool"
@@ -459,7 +459,7 @@
msgid "No Job status returned from FD.\n"
msgstr ""
-#: src/dird/backup.c:358 src/dird/migrate.c:1098 src/dird/admin.c:89
+#: src/dird/backup.c:358 src/dird/migrate.c:1108 src/dird/admin.c:89
#, fuzzy, c-format
msgid "Error getting Job record for Job report: ERR=%s"
msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
@@ -469,7 +469,7 @@
msgid "Error getting Client record for Job report: ERR=%s"
msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
-#: src/dird/backup.c:371 src/dird/migrate.c:1129
+#: src/dird/backup.c:371 src/dird/migrate.c:1138
#, c-format
msgid "Error getting Media record for Volume \"%s\": ERR=%s"
msgstr ""
@@ -1413,15 +1413,15 @@
msgid "Could not get or create a Pool record.\n"
msgstr "Impossible de récupérer ou de créer un Pool dans le catalogue.\n"
-#: src/dird/migrate.c:138 src/dird/migrate.c:154
-msgid "No previous Job found to migrate.\n"
-msgstr "Aucun Job trouvé pour la migration.\n"
-
-#: src/dird/migrate.c:144
+#: src/dird/migrate.c:127
#, fuzzy
msgid "Could not get or create the FileSet record.\n"
msgstr "Impossible de créer la structure BSOCK cliente.\n"
+#: src/dird/migrate.c:144 src/dird/migrate.c:154
+msgid "No previous Job found to migrate.\n"
+msgstr "Aucun Job trouvé pour la migration.\n"
+
#: src/dird/migrate.c:156
#, fuzzy
msgid "Previous Job has no data to migrate.\n"
@@ -1457,7 +1457,7 @@
msgid "Job Pool's NextPool resource"
msgstr "Sélectionnez le Pool"
-#: src/dird/migrate.c:278 src/dird/migrate.c:845
+#: src/dird/migrate.c:278 src/dird/migrate.c:837
#, fuzzy, c-format
msgid "Could not get job record for JobId %s to migrate. ERR=%s"
msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
@@ -1477,125 +1477,125 @@
msgid "Read storage \"%s\" same as write storage.\n"
msgstr ""
-#: src/dird/migrate.c:670
+#: src/dird/migrate.c:662
msgid "No Migration SQL selection pattern specified.\n"
msgstr ""
-#: src/dird/migrate.c:677 src/dird/migrate.c:697 src/dird/migrate.c:718
-#: src/dird/migrate.c:754 src/dird/migrate.c:782 src/dird/migrate.c:898
-#: src/dird/migrate.c:931 src/dird/migrate.c:1028
+#: src/dird/migrate.c:669 src/dird/migrate.c:689 src/dird/migrate.c:710
+#: src/dird/migrate.c:746 src/dird/migrate.c:774 src/dird/migrate.c:890
+#: src/dird/migrate.c:923 src/dird/migrate.c:1020
#, fuzzy, c-format
msgid "SQL failed. ERR=%s\n"
msgstr "fopen %s en erreur : ERR=%s\n"
-#: src/dird/migrate.c:701 src/dird/migrate.c:708 src/dird/migrate.c:722
-#: src/dird/migrate.c:786
+#: src/dird/migrate.c:693 src/dird/migrate.c:700 src/dird/migrate.c:714
+#: src/dird/migrate.c:778
msgid "No Volumes found to migrate.\n"
msgstr "Aucun volume trouvé pour la migration.\n"
-#: src/dird/migrate.c:736 src/dird/migrate.c:821 src/dird/migrate.c:834
+#: src/dird/migrate.c:728 src/dird/migrate.c:813 src/dird/migrate.c:826
#, fuzzy
msgid "Invalid JobId found.\n"
msgstr "Période invalide.\n"
-#: src/dird/migrate.c:793
+#: src/dird/migrate.c:785
msgid "Unknown Migration Selection Type.\n"
msgstr ""
-#: src/dird/migrate.c:805 src/dird/migrate.c:824 src/dird/migrate.c:837
+#: src/dird/migrate.c:797 src/dird/migrate.c:816 src/dird/migrate.c:829
#, fuzzy
msgid "No JobIds found to migrate.\n"
msgstr "Aucun volume trouvé pour la restauration.\n"
-#: src/dird/migrate.c:809
+#: src/dird/migrate.c:801
#, fuzzy, c-format
msgid "The following %u JobId%s were chosen to be migrated: %s\n"
msgstr "Les fichiers suivants sont absents :\n"
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:842
#, c-format
msgid "Migration using JobId=%s Job=%s\n"
msgstr "Migration utilisant JobId=%s Job=%s\n"
-#: src/dird/migrate.c:881
+#: src/dird/migrate.c:873
msgid "Could not start migration job.\n"
msgstr ""
-#: src/dird/migrate.c:883
+#: src/dird/migrate.c:875
#, c-format
msgid "Migration JobId %d started.\n"
msgstr ""
-#: src/dird/migrate.c:902
+#: src/dird/migrate.c:894
#, fuzzy, c-format
msgid "No %s found to migrate.\n"
msgstr "Aucun volume trouvé pour la restauration.\n"
-#: src/dird/migrate.c:906
+#: src/dird/migrate.c:898
#, c-format
msgid "SQL error. Expected 1 MediaId got %d\n"
msgstr ""
-#: src/dird/migrate.c:935 src/dird/migrate.c:1033
+#: src/dird/migrate.c:927 src/dird/migrate.c:1025
#, fuzzy, c-format
msgid "No %ss found to migrate.\n"
msgstr "Aucun volume trouvé pour la restauration.\n"
-#: src/dird/migrate.c:957
+#: src/dird/migrate.c:949
#, c-format
msgid "No Migration %s selection pattern specified.\n"
msgstr ""
-#: src/dird/migrate.c:968
+#: src/dird/migrate.c:960
#, fuzzy, c-format
msgid "SQL to get %s failed. ERR=%s\n"
msgstr "fopen %s en erreur : ERR=%s\n"
-#: src/dird/migrate.c:973
+#: src/dird/migrate.c:965
#, c-format
msgid "Query of Pool \"%s\" returned no Jobs to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:982
+#: src/dird/migrate.c:974
#, fuzzy, c-format
msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
msgstr "Impossible d'ouvrir %s : ERR=%s\n"
-#: src/dird/migrate.c:1011
+#: src/dird/migrate.c:1003
msgid "Regex pattern matched no Jobs to migrate.\n"
msgstr ""
-#: src/dird/migrate.c:1137
+#: src/dird/migrate.c:1146
#, c-format
msgid "%s OK -- with warnings"
msgstr ""
-#: src/dird/migrate.c:1139
+#: src/dird/migrate.c:1148
#, c-format
msgid "%s OK"
msgstr ""
-#: src/dird/migrate.c:1144
+#: src/dird/migrate.c:1153
#, c-format
msgid "*** %s Error ***"
msgstr "*** %s Erreur ***"
-#: src/dird/migrate.c:1154
+#: src/dird/migrate.c:1163
#, c-format
msgid "%s Canceled"
msgstr "%s Annulé"
-#: src/dird/migrate.c:1163
+#: src/dird/migrate.c:1172
#, c-format
msgid "Inappropriate %s term code"
msgstr ""
-#: src/dird/migrate.c:1173
+#: src/dird/migrate.c:1182
#, fuzzy, c-format
msgid "%s -- no files to migrate"
msgstr "Aucun volume trouvé pour la restauration.\n"
-#: src/dird/migrate.c:1189
+#: src/dird/migrate.c:1198
#, fuzzy, c-format
msgid ""
"Bacula %s %s (%s): %s\n"
@@ -1657,17 +1657,17 @@
" Statut de fin du SD : %s\n"
" Statut de fin : %s\n"
-#: src/dird/migrate.c:1296
+#: src/dird/migrate.c:1305
#, c-format
msgid "No Next Pool specification found in Pool \"%s\".\n"
msgstr ""
-#: src/dird/migrate.c:1302
+#: src/dird/migrate.c:1311
#, c-format
msgid "No Storage specification found in Next Pool \"%s\".\n"
msgstr ""
-#: src/dird/migrate.c:1308
+#: src/dird/migrate.c:1317
#, fuzzy
msgid "Storage from Pool's NextPool resource"
msgstr "Sélectionnez le Pool"
@@ -2320,28 +2320,28 @@
msgid "%d File%s on Volume \"%s\" purged from catalog.\n"
msgstr "%d fichier%s du volume « %s » purgé du catalogue.\n"
-#: src/dird/ua_purge.c:481
+#: src/dird/ua_purge.c:484
#, c-format
msgid ""
"There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
msgstr ""
"Il n'y a plus de job associé avec le volume « %s ». Il est marqué purgé.\n"
-#: src/dird/ua_purge.c:522
+#: src/dird/ua_purge.c:525
#, c-format
msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
msgstr ""
"Impossible de déplacer le volume recyclé, le Pool « %s » est plein. MaxVols=%"
"d\n"
-#: src/dird/ua_purge.c:535
+#: src/dird/ua_purge.c:538
#, c-format
msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
msgstr ""
"Il n'y a pas de job associé avec le volume « %s ». Il est marqué comme "
"Purged.\n"
-#: src/dird/ua_purge.c:540
+#: src/dird/ua_purge.c:543
#, c-format
msgid "Cannot purge Volume with VolStatus=%s\n"
msgstr "Impossible de purger un volume dans l'état (VolStatus) %s\n"
@@ -2762,7 +2762,7 @@
msgstr "====\n"
#: src/dird/ua_status.c:308 src/dird/job.c:146 src/dird/job.c:152
-#: src/dird/job.c:944 src/dird/job.c:956 src/dird/ua_cmds.c:780
+#: src/dird/job.c:946 src/dird/job.c:958 src/dird/ua_cmds.c:780
#: src/dird/ua_cmds.c:1467 src/dird/ua_dotcmds.c:174
msgid "unknown source"
msgstr "source inconnue"
@@ -3090,7 +3090,7 @@
msgstr "Impossible de se connecter au client.\n"
#: src/dird/job.c:397 src/dird/job.c:399 src/dird/job.c:440 src/dird/job.c:442
-#: src/dird/job.c:920 src/dird/job.c:962 src/dird/job.c:971
+#: src/dird/job.c:922 src/dird/job.c:964 src/dird/job.c:973
#, fuzzy
msgid "Job resource"
msgstr "Pool à partir de sa définition"
@@ -3103,7 +3103,7 @@
msgid "Max run time exceeded. Job canceled.\n"
msgstr "Temps d'exécution maximum atteind. Abandon du job.\n"
-#: src/dird/job.c:601 src/dird/job.c:907
+#: src/dird/job.c:601 src/dird/job.c:909
msgid "Run pool override"
msgstr ""
@@ -3150,19 +3150,19 @@
msgid "Error updating job record. %s"
msgstr ""
-#: src/dird/job.c:912
+#: src/dird/job.c:914
msgid "Run storage override"
msgstr ""
-#: src/dird/job.c:1033 src/dird/ua_run.c:1215
+#: src/dird/job.c:1035 src/dird/ua_run.c:1215
msgid "No storage specified.\n"
msgstr "Pas de storage sélectionné.\n"
-#: src/dird/job.c:1200
+#: src/dird/job.c:1202
msgid "Could not start clone job.\n"
msgstr ""
-#: src/dird/job.c:1202
+#: src/dird/job.c:1204
#, c-format
msgid "Clone JobId %d started.\n"
msgstr ""
@@ -7194,7 +7194,7 @@
"%s\n"
msgstr ""
-#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1031
+#: src/cats/sql.c:251 src/cats/sql.c:258 src/cats/sql_create.c:1030
#: src/cats/sql_get.c:185 src/cats/sql_get.c:236 src/cats/sql_get.c:604
#: src/cats/sql_get.c:680 src/cats/sql_get.c:951
#, c-format
@@ -7384,82 +7384,82 @@
msgid "Create DB Media record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:493
+#: src/cats/sql_create.c:492
#, c-format
msgid "More than one Client!: %d\n"
msgstr ""
-#: src/cats/sql_create.c:498
+#: src/cats/sql_create.c:497
#, c-format
msgid "error fetching Client row: %s\n"
msgstr ""
-#: src/cats/sql_create.c:525
+#: src/cats/sql_create.c:524
#, c-format
msgid "Create DB Client record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:568
+#: src/cats/sql_create.c:567
#, c-format
msgid "Create DB Counters record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:601
+#: src/cats/sql_create.c:600
#, c-format
msgid "More than one FileSet!: %d\n"
msgstr ""
-#: src/cats/sql_create.c:606
+#: src/cats/sql_create.c:605
#, c-format
msgid "error fetching FileSet row: ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:636
+#: src/cats/sql_create.c:635
#, c-format
msgid "Create DB FileSet record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:857
+#: src/cats/sql_create.c:856
#, fuzzy, c-format
msgid "Could not init batch database: \"%s\".\n"
msgstr "Impossible d'ouvrir la base de données « %s ».\n"
-#: src/cats/sql_create.c:864
+#: src/cats/sql_create.c:863
#, fuzzy, c-format
msgid "Could not open database \"%s\": ERR=%s\n"
msgstr "Impossible d'ouvrir la base de données « %s ».\n"
-#: src/cats/sql_create.c:886 src/cats/sql_create.c:927
+#: src/cats/sql_create.c:885 src/cats/sql_create.c:926
#, c-format
msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
msgstr ""
-#: src/cats/sql_create.c:991
+#: src/cats/sql_create.c:990
#, c-format
msgid "Create db File record %s failed. ERR=%s"
msgstr ""
-#: src/cats/sql_create.c:1024 src/cats/sql_get.c:229
+#: src/cats/sql_create.c:1023 src/cats/sql_get.c:229
#, c-format
msgid "More than one Path!: %s for path: %s\n"
msgstr ""
-#: src/cats/sql_create.c:1055
+#: src/cats/sql_create.c:1054
#, c-format
msgid "Create db Path record %s failed. ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:1088
+#: src/cats/sql_create.c:1087
#, c-format
msgid "More than one Filename! %s for file: %s\n"
msgstr ""
-#: src/cats/sql_create.c:1094
+#: src/cats/sql_create.c:1093
#, c-format
msgid "Error fetching row for file=%s: ERR=%s\n"
msgstr ""
-#: src/cats/sql_create.c:1110
+#: src/cats/sql_create.c:1109
#, c-format
msgid "Create db Filename record %s failed. ERR=%s\n"
msgstr ""
@@ -8107,7 +8107,7 @@
msgid "End Session"
msgstr ""
-#: src/stored/read_record.c:407 src/stored/label.c:1053
+#: src/stored/read_record.c:407 src/stored/label.c:1055
msgid "End of Media"
msgstr ""
@@ -8155,22 +8155,22 @@
msgid "Device switch. New device %s chosen.\n"
msgstr ""
-#: src/stored/reserve.c:509
+#: src/stored/reserve.c:510
#, c-format
msgid "Hey! num_writers=%d!!!!\n"
msgstr ""
-#: src/stored/reserve.c:752
+#: src/stored/reserve.c:754
#, fuzzy
msgid "3939 Could not get dcr\n"
msgstr "Impossible de créer la structure BSOCK cliente.\n"
-#: src/stored/reserve.c:855 src/stored/reserve.c:866
+#: src/stored/reserve.c:857 src/stored/reserve.c:868
#, c-format
msgid "Failed command: %s\n"
msgstr "Erreur sur la commande : %s\n"
-#: src/stored/reserve.c:856
+#: src/stored/reserve.c:858
#, c-format
msgid ""
"\n"
@@ -8178,7 +8178,7 @@
"Device resources.\n"
msgstr ""
-#: src/stored/reserve.c:1172 src/stored/dircmd.c:601
+#: src/stored/reserve.c:1174 src/stored/dircmd.c:601
#, c-format
msgid ""
"\n"
@@ -8186,42 +8186,42 @@
"does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1176 src/stored/dircmd.c:579
+#: src/stored/reserve.c:1178 src/stored/dircmd.c:579
#, c-format
msgid ""
"\n"
" Device \"%s\" requested by DIR could not be opened or does not exist.\n"
msgstr ""
-#: src/stored/reserve.c:1188
+#: src/stored/reserve.c:1190
#, c-format
msgid "3926 Could not get dcr for device: %s\n"
msgstr ""
-#: src/stored/reserve.c:1311
+#: src/stored/reserve.c:1313
#, c-format
msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
"3601 JobId=%u device %s est BLOQUÉ car il a été demonté par l'utilisateur.\n"
-#: src/stored/reserve.c:1321
+#: src/stored/reserve.c:1323
#, c-format
msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
msgstr "3602 JobId=%u device %s est occupé (à lire ou écrire).\n"
-#: src/stored/reserve.c:1365
+#: src/stored/reserve.c:1367
#, c-format
msgid "3603 JobId=%u device %s is busy reading.\n"
msgstr "3603 JobId=%u device %s est occupé en lecture.\n"
-#: src/stored/reserve.c:1374
+#: src/stored/reserve.c:1376
#, c-format
msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
msgstr ""
"3604 JobId=%u device %s est bloqué car il a été démonté par l'utilisateur "
"(unmount).\n"
-#: src/stored/reserve.c:1411
+#: src/stored/reserve.c:1413
#, fuzzy, c-format
msgid ""
"3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive %"
@@ -8230,46 +8230,46 @@
"3608 JobId=%u voulait le Pool=« %s », mais c'est le Pool=« %s » qui est dans "
"le drive %s.\n"
-#: src/stored/reserve.c:1437
+#: src/stored/reserve.c:1439
#, fuzzy, c-format
msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
msgstr ""
"3607 JobId=%u voulait Vol=« %s », c'est le Vol=« %s » qui est dans le drive %"
"s.\n"
-#: src/stored/reserve.c:1492
+#: src/stored/reserve.c:1494
#, c-format
msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
msgstr ""
"3605 JobId=%u voulait libérer le lecteur, mais le device %s est occupé.\n"
-#: src/stored/reserve.c:1500
+#: src/stored/reserve.c:1502
#, c-format
msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
msgstr "3606 JobId=%u voulait un lecteur monté, mais le lecteur %s est vide.\n"
-#: src/stored/reserve.c:1523
+#: src/stored/reserve.c:1525
#, c-format
msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
msgstr ""
"3607 JobId=%u voulait Vol=« %s », c'est le Vol=« %s » qui est dans le drive %"
"s.\n"
-#: src/stored/reserve.c:1579
+#: src/stored/reserve.c:1581
#, c-format
msgid "Logic error!!!! JobId=%u Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1580
+#: src/stored/reserve.c:1582
#, c-format
msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1583
+#: src/stored/reserve.c:1585
msgid "Logic error!!!! Should not get here.\n"
msgstr ""
-#: src/stored/reserve.c:1586
+#: src/stored/reserve.c:1588
#, c-format
msgid "3911 JobId=%u failed reserve drive %s.\n"
msgstr ""
@@ -8358,11 +8358,11 @@
msgid "EOT label not copied.\n"
msgstr ""
-#: src/stored/bcopy.c:334 src/stored/label.c:1047 src/stored/bls.c:423
+#: src/stored/bcopy.c:334 src/stored/label.c:1049 src/stored/bls.c:423
msgid "Begin Job Session"
msgstr ""
-#: src/stored/bcopy.c:338 src/stored/label.c:1050 src/stored/bls.c:427
+#: src/stored/bcopy.c:338 src/stored/label.c:1052 src/stored/bls.c:427
msgid "End Job Session"
msgstr ""
@@ -8370,7 +8370,7 @@
msgid "End of Medium"
msgstr ""
-#: src/stored/bcopy.c:346 src/stored/label.c:1059 src/stored/bls.c:434
+#: src/stored/bcopy.c:346 src/stored/label.c:1061 src/stored/bls.c:434
msgid "Unknown"
msgstr ""
@@ -8583,60 +8583,60 @@
msgid "Cannot write Volume label to block for device %s\n"
msgstr "Impossible d'écrire le label du Volume sur le Device %s\n"
-#: src/stored/label.c:350 src/stored/label.c:448
+#: src/stored/label.c:350 src/stored/label.c:449
#, fuzzy, c-format
msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
msgstr "Impossible de supprimer le volume « %s ». ERR=%s"
-#: src/stored/label.c:472
+#: src/stored/label.c:473
#, c-format
msgid "Rewind error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:480
+#: src/stored/label.c:481
#, c-format
msgid "Truncate error on device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:486
+#: src/stored/label.c:487
#, fuzzy, c-format
msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
msgstr ""
"Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
-#: src/stored/label.c:509
+#: src/stored/label.c:510
#, c-format
msgid "Unable to write device %s: ERR=%s\n"
msgstr ""
-#: src/stored/label.c:538
+#: src/stored/label.c:540
#, c-format
msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
msgstr ""
"Recyclage du volume « %s » sur le lecteur %s, les précédentes données sont "
"perdues.\n"
-#: src/stored/label.c:541
+#: src/stored/label.c:543
#, c-format
msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
msgstr "Écriture du label sur le Volume pré-labélisé « %s » sur le lecteur %s\n"
-#: src/stored/label.c:740
+#: src/stored/label.c:742
#, fuzzy, c-format
msgid "Bad Volume session label = %d\n"
msgstr "Le Volume n'a pas de label.\n"
-#: src/stored/label.c:795
+#: src/stored/label.c:797
#, c-format
msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
msgstr ""
-#: src/stored/label.c:922
+#: src/stored/label.c:924
#, c-format
msgid "Unknown %d"
msgstr ""
-#: src/stored/label.c:926
+#: src/stored/label.c:928
#, c-format
msgid ""
"\n"
@@ -8653,17 +8653,17 @@
"HostName : %s\n"
msgstr ""
-#: src/stored/label.c:948
+#: src/stored/label.c:950
#, c-format
msgid "Date label written: %s\n"
msgstr ""
-#: src/stored/label.c:954
+#: src/stored/label.c:956
#, c-format
msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:974
+#: src/stored/label.c:976
#, c-format
msgid ""
"\n"
@@ -8676,7 +8676,7 @@
"ClientName : %s\n"
msgstr ""
-#: src/stored/label.c:987
+#: src/stored/label.c:989
#, c-format
msgid ""
"Job (unique name) : %s\n"
@@ -8685,7 +8685,7 @@
"JobLevel : %c\n"
msgstr ""
-#: src/stored/label.c:996
+#: src/stored/label.c:998
#, c-format
msgid ""
"JobFiles : %s\n"
@@ -8698,48 +8698,48 @@
"JobStatus : %c\n"
msgstr ""
-#: src/stored/label.c:1017
+#: src/stored/label.c:1019
#, c-format
msgid "Date written : %s\n"
msgstr ""
-#: src/stored/label.c:1022
+#: src/stored/label.c:1024
#, c-format
msgid "Date written : %04d-%02d-%02d at %02d:%02d\n"
msgstr ""
-#: src/stored/label.c:1041
+#: src/stored/label.c:1043
msgid "Fresh Volume"
msgstr ""
-#: src/stored/label.c:1044
+#: src/stored/label.c:1046
msgid "Volume"
msgstr ""
-#: src/stored/label.c:1056
+#: src/stored/label.c:1058
msgid "End of Tape"
msgstr ""
-#: src/stored/label.c:1076 src/stored/label.c:1084 src/stored/label.c:1117
+#: src/stored/label.c:1078 src/stored/label.c:1086 src/stored/label.c:1119
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
msgstr ""
-#: src/stored/label.c:1081
+#: src/stored/label.c:1083
msgid "End of physical tape.\n"
msgstr ""
-#: src/stored/label.c:1096 src/stored/label.c:1105
+#: src/stored/label.c:1098 src/stored/label.c:1107
#, c-format
msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
msgstr ""
-#: src/stored/label.c:1098
+#: src/stored/label.c:1100
#, c-format
msgid " Job=%s Date=%s Level=%c Type=%c\n"
msgstr ""
-#: src/stored/label.c:1107
+#: src/stored/label.c:1109
#, c-format
msgid " Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
msgstr ""
@@ -11566,16 +11566,16 @@
msgid "FD connect failed: Job name not found: %s\n"
msgstr "Job non trouvé : %s\n"
-#: src/stored/job.c:240
+#: src/stored/job.c:238
#, c-format
msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
msgstr ""
-#: src/stored/job.c:251
+#: src/stored/job.c:255
msgid "Unable to authenticate File daemon\n"
msgstr ""
-#: src/stored/job.c:373
+#: src/stored/job.c:377
msgid "In free_jcr(), but still attached to device!!!!\n"
msgstr ""
@@ -11593,24 +11593,24 @@
msgid "Didn't get vol info vol=%s: ERR=%s"
msgstr ""
-#: src/stored/askdir.c:415
+#: src/stored/askdir.c:428
#, c-format
msgid "Error creating JobMedia record: ERR=%s\n"
msgstr ""
-#: src/stored/askdir.c:422
+#: src/stored/askdir.c:435
#, c-format
msgid "Error creating JobMedia record: %s\n"
msgstr ""
-#: src/stored/askdir.c:489
+#: src/stored/askdir.c:502
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
msgstr ""
"Le job %s a été annulé alors qu'il attendait un montage sur le Storage "
"Device « %s ».\n"
-#: src/stored/askdir.c:500
+#: src/stored/askdir.c:513
#, c-format
msgid ""
"Job %s waiting. Cannot find any appendable volumes.\n"
@@ -11625,27 +11625,27 @@
" Pool : %s\n"
" Type du Media : %s\n"
-#: src/stored/askdir.c:526 src/stored/askdir.c:628
+#: src/stored/askdir.c:539 src/stored/askdir.c:641
#, c-format
msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
msgstr ""
-#: src/stored/askdir.c:536
+#: src/stored/askdir.c:549
msgid "pthread error in mount_next_volume.\n"
msgstr ""
-#: src/stored/askdir.c:570
+#: src/stored/askdir.c:583
msgid "Cannot request another volume: no volume name given.\n"
msgstr ""
-#: src/stored/askdir.c:576
+#: src/stored/askdir.c:589
#, c-format
msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
msgstr ""
"Le Job %s a été annulé pendant qu'il attendait le montage sur le Storage "
"Device %s.\n"
-#: src/stored/askdir.c:593
+#: src/stored/askdir.c:606
#, c-format
msgid ""
"Please mount Volume \"%s\" or label a new one for:\n"
@@ -11660,7 +11660,7 @@
" Pool : %s\n"
" Type du Media : %s\n"
-#: src/stored/askdir.c:599
+#: src/stored/askdir.c:612
#, fuzzy, c-format
msgid ""
"Please mount Volume \"%s\" for:\n"
@@ -11675,7 +11675,7 @@
" Pool : %s\n"
" Type du Media : %s\n"
-#: src/stored/askdir.c:638
+#: src/stored/askdir.c:651
msgid "pthread error in mount_volume\n"
msgstr ""
@@ -14195,7 +14195,7 @@
msgid "NULL jcr.\n"
msgstr "NULL jcr.\n"
-#: src/lib/jcr.c:445
+#: src/lib/jcr.c:444
#, c-format
msgid "JCR use_count=%d JobId=%d\n"
msgstr "JCR use_count=%d JobId=%d\n"
@@ -14363,83 +14363,48 @@
msgid "rwl_writeunlock by non-owner.\n"
msgstr ""
-#: src/lib/rwlock.c:369
-#, c-format
-msgid "Write lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:377
-#, c-format
-msgid "Write unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:388
-#, c-format
-msgid "Read lock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:396
-#, c-format
-msgid "Read unlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:405
+#: src/lib/rwlock.c:427
#, c-format
msgid "Thread %d found unchanged elements %d times\n"
msgstr ""
-#: src/lib/rwlock.c:438
-#, c-format
-msgid "Init rwlock failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:454
-#, c-format
-msgid "Create thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:466
-#, c-format
-msgid "Join thread failed. ERR=%s\n"
-msgstr ""
-
-#: src/lib/rwlock.c:469
+#: src/lib/rwlock.c:497
#, c-format
msgid "%02d: interval %d, writes %d, reads %d\n"
msgstr ""
-#: src/lib/rwlock.c:479
+#: src/lib/rwlock.c:507
#, c-format
msgid "data %02d: value %d, %d writes\n"
msgstr ""
-#: src/lib/rwlock.c:484
+#: src/lib/rwlock.c:512
#, c-format
msgid "Total: %d thread writes, %d data writes\n"
msgstr ""
-#: src/lib/rwlock.c:556
+#: src/lib/rwlock.c:584
msgid "Try write lock"
msgstr ""
-#: src/lib/rwlock.c:562
+#: src/lib/rwlock.c:590
msgid "Try read lock"
msgstr ""
-#: src/lib/rwlock.c:617
+#: src/lib/rwlock.c:645
msgid "Create thread"
msgstr ""
-#: src/lib/rwlock.c:627
+#: src/lib/rwlock.c:655
msgid "Join thread"
msgstr ""
-#: src/lib/rwlock.c:629
+#: src/lib/rwlock.c:657
#, c-format
msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
msgstr ""
-#: src/lib/rwlock.c:641
+#: src/lib/rwlock.c:669
#, c-format
msgid "data %02d: value %d, %d updates\n"
msgstr ""
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/scripts/btraceback.in
^
|
@@ -10,11 +10,14 @@
#
PNAME=`basename $1`
PNAME="${PNAME} on `hostname`"
+WD="@working_dir@"
if test `uname -s` = SunOS ; then
- gcore -o @working_dir@/${PNAME} $2
- dbx $1 $2 <@scriptdir@/btraceback.dbx 2>&1 \
+ gcore -o ${WD}/${PNAME} $2
+ dbx $1 $2 <@scriptdir@/btraceback.dbx >${WD}/bacula.$$.traceback 2>&1
+ cat ${WD}/bacula.$$.traceback \
| @sbindir@/bsmtp -h @smtp_host@ -f @dump_email@ -s "Bacula DBX traceback of ${PNAME}" @dump_email@
else
- gdb -quiet -batch -x @scriptdir@/btraceback.gdb $1 $2 2>&1 \
+ gdb -quiet -batch -x @scriptdir@/btraceback.gdb $1 $2 >${WD}/bacula.$$.traceback 2>&1
+ cat ${WD}/bacula.$$.traceback \
| @sbindir@/bsmtp -h @smtp_host@ -f @dump_email@ -s "Bacula GDB traceback of ${PNAME}" @dump_email@
fi
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/cats/make_mysql_tables.in
^
|
@@ -3,7 +3,7 @@
# shell script to create Bacula MySQL tables
#
bindir=@SQL_BINDIR@
-db_name=${db_name-@db_name@}
+db_name=${db_name:-"@db_name@"}
if $bindir/mysql $* -f <<END-OF-DATA
USE ${db_name};
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/cats/make_postgresql_tables.in
^
|
@@ -3,7 +3,7 @@
# shell script to create Bacula PostgreSQL tables
#
bindir=@SQL_BINDIR@
-db_name=${db_name-@db_name@}
+db_name=${db_name:-"@db_name@"}
$bindir/psql -f - -d ${db_name} $* <<END-OF-DATA
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/cats/sql_create.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, March 2000
*
- * Version $Id: sql_create.c 6748 2008-04-06 12:34:20Z kerns $
+ * Version $Id: sql_create.c 7920 2008-10-27 19:13:49Z ricozz $
*/
/* The following is necessary so that we do not include
@@ -459,14 +459,13 @@
"WHERE MediaId=%d", dt, mr->MediaId);
stat = UPDATE_DB(jcr, mdb, mdb->cmd);
}
+ /*
+ * Make sure that if InChanger is non-zero any other identical slot
+ * has InChanger zero.
+ */
+ db_make_inchanger_unique(jcr, mdb, mr);
}
- /*
- * Make sure that if InChanger is non-zero any other identical slot
- * has InChanger zero.
- */
- db_make_inchanger_unique(jcr, mdb, mr);
-
db_unlock(mdb);
return stat;
}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/cats/sql_update.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, March 2000
*
- * Version $Id: sql_update.c 7508 2008-08-26 13:14:38Z kerns $
+ * Version $Id: sql_update.c 8228 2008-12-22 15:12:10Z kerns $
*/
/* The following is necessary so that we do not include
@@ -126,16 +126,6 @@
}
/*
- * Given an incoming integer, set the string buffer to either NULL or the value
- *
- */
-static void edit_num_or_null(char *s, size_t n, uint64_t id) {
- char ed1[50];
- bsnprintf(s, n, id ? "%s" : "NULL", edit_int64(id, ed1));
-}
-
-
-/*
* Update the Job record at end of Job
*
* Returns: 0 on failure
@@ -151,13 +141,7 @@
int stat;
char ed1[30], ed2[30], ed3[50];
btime_t JobTDate;
- char PoolId[50], FileSetId[50], ClientId[50], PriorJobId[50];
-
-
- /* some values are set to zero, which translates to NULL in SQL */
- edit_num_or_null(PoolId, sizeof(PoolId), jr->PoolId);
- edit_num_or_null(FileSetId, sizeof(FileSetId), jr->FileSetId);
- edit_num_or_null(ClientId, sizeof(ClientId), jr->ClientId);
+ char PriorJobId[50];
if (jr->PriorJobId) {
bstrncpy(PriorJobId, edit_int64(jr->PriorJobId, ed1), sizeof(PriorJobId));
@@ -181,12 +165,12 @@
db_lock(mdb);
Mmsg(mdb->cmd,
"UPDATE Job SET JobStatus='%c',EndTime='%s',"
-"ClientId=%s,JobBytes=%s,JobFiles=%u,JobErrors=%u,VolSessionId=%u,"
-"VolSessionTime=%u,PoolId=%s,FileSetId=%s,JobTDate=%s,"
+"ClientId=%u,JobBytes=%s,JobFiles=%u,JobErrors=%u,VolSessionId=%u,"
+"VolSessionTime=%u,PoolId=%u,FileSetId=%u,JobTDate=%s,"
"RealEndTime='%s',PriorJobId=%s WHERE JobId=%s",
- (char)(jr->JobStatus), dt, ClientId, edit_uint64(jr->JobBytes, ed1),
+ (char)(jr->JobStatus), dt, jr->ClientId, edit_uint64(jr->JobBytes, ed1),
jr->JobFiles, jr->JobErrors, jr->VolSessionId, jr->VolSessionTime,
- PoolId, FileSetId, edit_uint64(JobTDate, ed2),
+ jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2),
rdt,
PriorJobId,
edit_int64(jr->JobId, ed3));
@@ -445,14 +429,28 @@
db_make_inchanger_unique(JCR *jcr, B_DB *mdb, MEDIA_DBR *mr)
{
char ed1[50], ed2[50];
- if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0 &&
- mr->MediaId != 0) {
- Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0 WHERE "
- "Slot=%d AND StorageId=%s AND MediaId!=%s",
- mr->Slot,
- edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
- Dmsg1(400, "%s\n", mdb->cmd);
- UPDATE_DB(jcr, mdb, mdb->cmd);
+ if (mr->InChanger != 0 && mr->Slot != 0 && mr->StorageId != 0) {
+
+ if (mr->MediaId != 0) {
+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s AND MediaId!=%s",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), edit_int64(mr->MediaId, ed2));
+
+ } else if (mr->VolumeName[0]) { /* We have a volume name */
+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s AND VolumeName!='%s'",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
+
+ } else { /* used by ua_label to reset all volume with this slot */
+ Mmsg(mdb->cmd, "UPDATE Media SET InChanger=0, Slot=0 WHERE "
+ "Slot=%d AND StorageId=%s",
+ mr->Slot,
+ edit_int64(mr->StorageId, ed1), mr->VolumeName);
+ }
+ Dmsg1(100, "%s\n", mdb->cmd);
+ UPDATE_DB(jcr, mdb, mdb->cmd);
}
}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/console/Makefile.in
^
|
@@ -1,5 +1,5 @@
#
-# Version $Id: Makefile.in 4914 2007-05-27 09:34:40Z kerns $
+# Version $Id: Makefile.in 7829 2008-10-17 12:07:32Z kerns $
#
@MCOMMON@
@@ -80,7 +80,7 @@
install: all
@if test -f ${DESTDIR}${sbindir}/console; then \
echo " "; \
- echo "Warning!!! ${DESTDIR}${sbindir}console found."; \
+ echo "Warning!!! ${DESTDIR}${sbindir}/console found."; \
echo " console has been renamed bconsole, so console"; \
echo " is no longer used, and you might want to delete it."; \
echo " "; \
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/dird/job.c
^
|
@@ -31,7 +31,7 @@
*
* Kern Sibbald, October MM
*
- * Version $Id: job.c 7744 2008-10-10 10:58:59Z ricozz $
+ * Version $Id: job.c 8012 2008-11-07 16:26:48Z kerns $
*/
#include "bacula.h"
@@ -758,17 +758,17 @@
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static time_t last_start_time = 0;
static int seq = 0;
- time_t now;
+ time_t now = time(NULL);
struct tm tm;
char dt[MAX_TIME_LENGTH];
char name[MAX_NAME_LENGTH];
char *p;
+ int len;
/* Guarantee unique start time -- maximum one per second, and
* thus unique Job Name
*/
P(mutex); /* lock creation of jobs */
- now = time(NULL);
seq++;
if (seq > 59) { /* wrap as if it is seconds */
seq = 0;
@@ -783,9 +783,10 @@
/* Form Unique JobName */
(void)localtime_r(&now, &tm);
/* Use only characters that are permitted in Windows filenames */
- strftime(dt, sizeof(dt), "%Y-%m-%d_%H.%M", &tm);
+ strftime(dt, sizeof(dt), "%Y-%m-%d_%H.%M.%S", &tm);
+ len = strlen(dt) + 5; /* dt + .%02d EOS */
bstrncpy(name, base_name, sizeof(name));
- name[sizeof(name)-22] = 0; /* truncate if too long */
+ name[sizeof(name)-len] = 0; /* truncate if too long */
bsnprintf(jcr->Job, sizeof(jcr->Job), "%s.%s.%02d", name, dt, seq); /* add date & time */
/* Convert spaces into underscores */
for (p=jcr->Job; *p; p++) {
@@ -793,6 +794,7 @@
*p = '_';
}
}
+ Dmsg2(100, "JobId=%u created Job=%s\n", jcr->JobId, jcr->Job);
}
/* Called directly from job rescheduling */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/dird/migrate.c
^
|
@@ -39,7 +39,7 @@
* to do the backup.
* When the Storage daemon finishes the job, update the DB.
*
- * Version $Id: migrate.c 7736 2008-10-08 16:50:49Z kerns $
+ * Version $Id: migrate.c 8153 2008-12-13 20:20:22Z kerns $
*/
#include "bacula.h"
@@ -122,6 +122,12 @@
Dmsg2(dbglevel, "Read pool=%s (From %s)\n", jcr->rpool->name(), jcr->rpool_source);
+ if (!get_or_create_fileset_record(jcr)) {
+ Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
+ Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
+ return false;
+ }
+
/* If we find a job or jobs to migrate it is previous_jr.JobId */
count = get_job_to_migrate(jcr);
if (count < 0) {
@@ -139,12 +145,6 @@
return true; /* no work */
}
- if (!get_or_create_fileset_record(jcr)) {
- Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
- Jmsg(jcr, M_FATAL, 0, _("Could not get or create the FileSet record.\n"));
- return false;
- }
-
create_restore_bootstrap_file(jcr);
if (jcr->previous_jr.JobId == 0 || jcr->ExpectedFiles == 0) {
@@ -377,7 +377,7 @@
* to avoid two threads from using the BSOCK structure at
* the same time.
*/
- if (!bnet_fsend(sd, "run")) {
+ if (!sd->fsend("run")) {
return false;
}
@@ -402,14 +402,6 @@
}
migration_cleanup(jcr, jcr->JobStatus);
- if (mig_jcr) {
- char jobid[50];
- UAContext *ua = new_ua_context(jcr);
- edit_uint64(jcr->previous_jr.JobId, jobid);
- /* Purge all old file records, but leave Job record */
- purge_files_from_jobs(ua, jobid);
- free_ua_context(ua);
- }
return true;
}
@@ -520,6 +512,7 @@
"SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool,Client"
" WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
" AND Job.ClientId=Client.ClientId AND Job.Type='B'"
+ " AND Job.JobStatus = 'T'"
" ORDER by Job.StartTime";
/* Get Volume names in Pool */
@@ -533,9 +526,9 @@
"SELECT DISTINCT Job.JobId,Job.StartTime FROM Media,JobMedia,Job"
" WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
" AND JobMedia.JobId=Job.JobId AND Job.Type='B'"
+ " AND Job.JobStatus = 'T' AND Media.Enabled=1"
" ORDER by Job.StartTime";
-
const char *sql_smallest_vol =
"SELECT Media.MediaId FROM Media,Pool,JobMedia WHERE"
" Media.MediaId in (SELECT DISTINCT MediaId from JobMedia) AND"
@@ -570,7 +563,6 @@
const char *sql_job_bytes =
"SELECT SUM(JobBytes) FROM Job WHERE JobId IN (%s)";
-
/* Get Media Ids in Pool */
const char *sql_mediaids =
"SELECT MediaId FROM Media,Pool WHERE"
@@ -1070,6 +1062,11 @@
* mig_jcr is jcr of the newly migrated job.
*/
if (mig_jcr) {
+ char old_jobid[50], new_jobid[50];
+
+ edit_uint64(jcr->previous_jr.JobId, old_jobid);
+ edit_uint64(mig_jcr->jr.JobId, new_jobid);
+
mig_jcr->JobFiles = jcr->JobFiles = jcr->SDJobFiles;
mig_jcr->JobBytes = jcr->JobBytes = jcr->SDJobBytes;
mig_jcr->VolSessionId = jcr->VolSessionId;
@@ -1084,14 +1081,27 @@
"JobTDate=%s WHERE JobId=%s",
jcr->previous_jr.cStartTime, jcr->previous_jr.cEndTime,
edit_uint64(jcr->previous_jr.JobTDate, ec1),
- edit_uint64(mig_jcr->jr.JobId, ec2));
+ new_jobid);
db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
- /* Now mark the previous job as migrated if it terminated normally */
- if (jcr->JobStatus == JS_Terminated) {
+ /*
+ * If we terminated a migration normally:
+ * - mark the previous job as migrated
+ * - move any Log records to the new JobId
+ * - Purge the File records from the previous job
+ */
+ if (jcr->JobType == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
- (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, ec1));
+ (char)JT_MIGRATED_JOB, old_jobid);
db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+ UAContext *ua = new_ua_context(jcr);
+ /* Move JobLog to new JobId */
+ Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
+ new_jobid, old_jobid);
+ db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+ /* Purge all old file records, but leave Job record */
+ purge_files_from_jobs(ua, old_jobid);
+ free_ua_context(ua);
}
if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
@@ -1100,7 +1110,6 @@
set_jcr_job_status(jcr, JS_ErrorTerminated);
}
-
update_bootstrap_file(mig_jcr);
if (!db_get_job_volume_names(mig_jcr, mig_jcr->db, mig_jcr->jr.JobId, &mig_jcr->VolumeName)) {
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/dird/ua_prune.c
^
|
@@ -32,7 +32,7 @@
*
* Kern Sibbald, February MMII
*
- * Version $Id: ua_prune.c 6813 2008-04-14 08:24:39Z kerns $
+ * Version $Id: ua_prune.c 8105 2008-12-02 18:49:00Z ricozz $
*/
#include "bacula.h"
@@ -202,7 +202,7 @@
now = (utime_t)time(NULL);
/* Select Jobs -- for counting */
- Mmsg(query, count_select_job, edit_uint64(now - period, ed1),
+ Mmsg(query, count_select_job, edit_int64(now - period, ed1),
edit_int64(cr.ClientId, ed2));
Dmsg3(050, "select now=%u period=%u sql=%s\n", (uint32_t)now,
(uint32_t)period, query.c_str());
@@ -230,7 +230,7 @@
del.JobId = (JobId_t *)malloc(sizeof(JobId_t) * del.max_ids);
/* Now process same set but making a delete list */
- Mmsg(query, select_job, edit_uint64(now - period, ed1),
+ Mmsg(query, select_job, edit_int64(now - period, ed1),
edit_int64(cr.ClientId, ed2));
db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)&del);
@@ -318,7 +318,7 @@
* Select all files that are older than the JobRetention period
* and stuff them into the "DeletionCandidates" table.
*/
- edit_uint64(now - period, ed1);
+ edit_int64(now - period, ed1);
Mmsg(query, insert_delcand, (char)JobType, ed1,
edit_int64(cr.ClientId, ed2));
if (!db_sql_query(ua->db, query.c_str(), NULL, (void *)NULL)) {
@@ -435,18 +435,16 @@
return 0; /* cannot prune Archived volumes */
}
- db_lock(ua->db);
-
/*
* Now add to the list of JobIds for Jobs written to this Volume
*/
edit_int64(mr->MediaId, ed1);
period = mr->VolRetention;
now = (utime_t)time(NULL);
- edit_uint64(now-period, ed2);
+ edit_int64(now-period, ed2);
Mmsg(query, sel_JobMedia, ed1, ed2);
- Dmsg3(250, "Now=%d period=%d now-period=%d\n", (int)now, (int)period,
- (int)(now-period));
+ Dmsg3(250, "Now=%d period=%d now-period=%s\n", (int)now, (int)period,
+ ed2);
Dmsg1(050, "Query=%s\n", query.c_str());
if (!db_sql_query(ua->db, query.c_str(), file_delete_handler, (void *)del)) {
@@ -468,6 +466,7 @@
break;
}
}
+ endeach_jcr(jcr);
if (skip) {
continue;
}
@@ -476,6 +475,5 @@
}
bail_out:
- db_unlock(ua->db);
return count;
}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/dird/ua_purge.c
^
|
@@ -35,7 +35,7 @@
*
* Kern Sibbald, February MMII
*
- * Version $Id: ua_purge.c 5124 2007-07-06 20:03:36Z kerns $
+ * Version $Id: ua_purge.c 8055 2008-11-18 19:48:37Z kerns $
*/
#include "bacula.h"
@@ -463,6 +463,9 @@
bool purged = false;
char ed1[50];
+ if (mr->FirstWritten == 0 || mr->LastWritten == 0) {
+ goto bail_out; /* not written cannot purge */
+ }
if (strcmp(mr->VolStatus, "Purged") == 0) {
purged = true;
goto bail_out;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/filed/backup.c
^
|
@@ -31,7 +31,7 @@
*
* Kern Sibbald, March MM
*
- * Version $Id: backup.c 6867 2008-05-01 16:33:28Z kerns $
+ * Version $Id: backup.c 7949 2008-10-30 12:06:26Z kerns $
*
*/
@@ -769,8 +769,8 @@
if (ff_pkt->flags & FO_SPARSE) {
ser_declare;
bool haveBlock = true;
- if (sd->msglen == rsize &&
- fileAddr+sd->msglen < (uint64_t)ff_pkt->statp.st_size ||
+ if ((sd->msglen == rsize &&
+ fileAddr+sd->msglen < (uint64_t)ff_pkt->statp.st_size) ||
((ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO) &&
(uint64_t)ff_pkt->statp.st_size == 0)) {
haveBlock = !is_buf_zero(rbuf, rsize);
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/lib/Makefile.in
^
|
@@ -1,4 +1,4 @@
-# $Id: Makefile.in 5721 2007-10-04 15:01:59Z kerns $
+# $Id: Makefile.in 7977 2008-11-05 11:15:23Z kerns $
@MCOMMON@
python = @PYTHON_INCDIR@
@@ -82,10 +82,10 @@
@echo "Compiling $<"
$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(python) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
-rwlock_test:
+rwlock_test: rwlock.c
rm -f rwlock.o
$(CXX) -DTEST_RWLOCK $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
- $(CXX) $(LDFLAGS) -L. -o $@ rwlock.o $(LIBS) $(DLIB) -lbac -lm
+ $(CXX) $(LDFLAGS) -L. -o $@ rwlock.o $(LIBS) $(DLIB) -lbac $(OPENSSL_LIBS) -lm
rm -f rwlock.o
$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/lib/base64.c
^
|
@@ -20,7 +20,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
@@ -30,7 +30,7 @@
*
* Written by Kern E. Sibbald, March MM.
*
- * Version $Id: base64.c 7272 2008-07-01 10:18:27Z kerns $
+ * Version $Id: base64.c 7949 2008-10-30 12:06:26Z kerns $
*/
@@ -177,7 +177,7 @@
if (rem && j < buflen) {
mask = (1 << rem) - 1;
if (compatible) {
- buf[j++] = base64_digits[(reg & mask) << 6 - rem];
+ buf[j++] = base64_digits[(reg & mask) << (6 - rem)];
} else {
buf[j++] = base64_digits[reg & mask];
}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/lib/bnet_server.c
^
|
@@ -1,7 +1,7 @@
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
@@ -20,7 +20,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
@@ -29,7 +29,7 @@
* Originally written by Kern Sibbald for inclusion in apcupsd,
* but heavily modified for Bacula
*
- * Version $Id: bnet_server.c 5270 2007-07-31 12:45:41Z kerns $
+ * Version $Id: bnet_server.c 8012 2008-11-07 16:26:48Z kerns $
*/
#include "bacula.h"
@@ -137,7 +137,7 @@
be.bstrerror());
}
}
- listen(fd_ptr->fd, 5); /* tell system we are ready */
+ listen(fd_ptr->fd, 20); /* tell system we are ready */
sockfds.append(fd_ptr);
}
/* Start work queue thread */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/lib/jcr.c
^
|
@@ -31,7 +31,7 @@
*
* Kern E. Sibbald, December 2000
*
- * Version $Id: jcr.c 7631 2008-09-24 18:18:30Z kerns $
+ * Version $Id: jcr.c 8101 2008-12-02 17:39:23Z ricozz $
*
* These routines are thread safe.
*
@@ -438,7 +438,6 @@
#endif
- dequeue_messages(jcr);
lock_jcr_chain();
jcr->dec_use_count(); /* decrement use count */
if (jcr->use_count() < 0) {
@@ -455,6 +454,7 @@
remove_jcr(jcr); /* remove Jcr from chain */
unlock_jcr_chain();
+ dequeue_messages(jcr);
job_end_pop(jcr); /* pop and call hooked routines */
Dmsg1(3400, "End job=%d\n", jcr->JobId);
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/lib/rwlock.c
^
|
@@ -33,7 +33,7 @@
*
* Kern Sibbald, January MMI
*
- * Version $Id: rwlock.c 7299 2008-07-03 15:09:49Z kerns $
+ * Version $Id: rwlock.c 7980 2008-11-05 14:33:44Z kerns $
*
* This code adapted from "Programming with POSIX Threads", by
* David R. Butenhof
@@ -318,9 +318,9 @@
#ifdef TEST_RWLOCK
-#define THREADS 5
+#define THREADS 300
#define DATASIZE 15
-#define ITERATIONS 10000
+#define ITERATIONS 1000000
/*
* Keep statics for each thread.
@@ -342,8 +342,8 @@
int writes;
} data_t;
-thread_t threads[THREADS];
-data_t data[DATASIZE];
+static thread_t threads[THREADS];
+static data_t data[DATASIZE];
/*
* Thread start routine that uses read/write locks.
@@ -362,11 +362,21 @@
* update operation (write lock instead of read
* lock).
*/
- if ((iteration % self->interval) == 0) {
+// if ((iteration % self->interval) == 0) {
status = rwl_writelock(&data[element].lock);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Write lock failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Write lock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
+ }
+ data[element].data = self->thread_num;
+ data[element].writes++;
+ self->writes++;
+ status = rwl_writelock(&data[element].lock);
+ if (status != 0) {
+ berrno be;
+ printf("Write lock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
data[element].data = self->thread_num;
data[element].writes++;
@@ -374,8 +384,17 @@
status = rwl_writeunlock(&data[element].lock);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Write unlock failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Write unlock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
+ status = rwl_writeunlock(&data[element].lock);
+ if (status != 0) {
+ berrno be;
+ printf("Write unlock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
+ }
+
+#ifdef xxx
} else {
/*
* Look at the current data element to see whether
@@ -385,7 +404,8 @@
status = rwl_readlock(&data[element].lock);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Read lock failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Read lock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
self->reads++;
if (data[element].data == self->thread_num)
@@ -393,9 +413,11 @@
status = rwl_readunlock(&data[element].lock);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Read unlock failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Read unlock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
}
+#endif
element++;
if (element >= DATASIZE) {
element = 0;
@@ -435,7 +457,8 @@
status = rwl_init (&data[data_count].lock);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Init rwlock failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Init rwlock failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
}
@@ -446,12 +469,16 @@
threads[count].thread_num = count + 1;
threads[count].writes = 0;
threads[count].reads = 0;
- threads[count].interval = rand_r (&seed) % 71;
+ threads[count].interval = rand_r(&seed) % 71;
+ if (threads[count].interval <= 0) {
+ threads[count].interval = 1;
+ }
status = pthread_create (&threads[count].thread_id,
NULL, thread_routine, (void*)&threads[count]);
- if (status != 0) {
+ if (status != 0 || (int)threads[count].thread_id == 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Create thread failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Create thread failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
}
@@ -463,7 +490,8 @@
status = pthread_join (threads[count].thread_id, NULL);
if (status != 0) {
berrno be;
- Emsg1(M_ABORT, 0, _("Join thread failed. ERR=%s\n"), be.bstrerror(status));
+ printf("Join thread failed. ERR=%s\n", be.bstrerror(status));
+ exit(1);
}
thread_writes += threads[count].writes;
printf (_("%02d: interval %d, writes %d, reads %d\n"),
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/acquire.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, August MMII
*
- * Version $Id: acquire.c 7501 2008-08-24 09:39:52Z kerns $
+ * Version $Id: acquire.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h" /* pull in global headers */
@@ -451,7 +451,7 @@
Dmsg2(200, "dir_create_jobmedia. Release vol=%s dev=%s\n",
dev->VolCatInfo.VolCatName, dev->print_name());
if (!dev->at_weot() && !dir_create_jobmedia_record(dcr)) {
- Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+ Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
dcr->VolCatInfo.VolCatName, jcr->Job);
}
/* If no more writers, and no errors, and wrote something, write an EOF */
@@ -647,8 +647,8 @@
/* Detach this dcr only if attached */
if (dcr->attached_to_dev && dev) {
- dev->dlock();
dcr->unreserve_device();
+ dev->dlock();
dcr->dev->attached_dcrs->remove(dcr); /* detach dcr from device */
dcr->attached_to_dev = false;
// remove_dcr_from_dcrs(dcr); /* remove dcr from jcr list */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/askdir.c
^
|
@@ -31,7 +31,7 @@
*
* Kern Sibbald, December 2000
*
- * Version $Id: askdir.c 7098 2008-06-03 13:01:08Z kerns $
+ * Version $Id: askdir.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h" /* pull in global headers */
@@ -387,7 +387,7 @@
/*
* After writing a Volume, create the JobMedia record.
*/
-bool dir_create_jobmedia_record(DCR *dcr)
+bool dir_create_jobmedia_record(DCR *dcr, bool zero)
{
JCR *jcr = dcr->jcr;
BSOCK *dir = jcr->dir_bsock;
@@ -398,18 +398,31 @@
return true;
}
+ /* Throw out records where FI is zero -- i.e. nothing done */
+ if (!zero && dcr->VolFirstIndex == 0 &&
+ (dcr->StartBlock != 0 || dcr->EndBlock != 0)) {
+ Dmsg0(1000, "JobMedia problem FI=0 StartBlock!=0\n");
+ return true;
+ }
+
if (!dcr->WroteVol) {
return true; /* nothing written to tape */
}
dcr->WroteVol = false;
- dir->fsend(Create_job_media, jcr->Job,
- dcr->VolFirstIndex, dcr->VolLastIndex,
- dcr->StartFile, dcr->EndFile,
- dcr->StartBlock, dcr->EndBlock,
- dcr->Copy, dcr->Stripe,
- edit_uint64(dcr->VolMediaId, ed1));
- Dmsg1(100, ">dird %s", dir->msg);
+ if (zero) {
+ /* Send dummy place holder to avoid purging */
+ dir->fsend(Create_job_media, jcr->Job,
+ 0 , 0, 0, 0, 0, 0, 0, 0, edit_uint64(dcr->VolMediaId, ed1));
+ } else {
+ dir->fsend(Create_job_media, jcr->Job,
+ dcr->VolFirstIndex, dcr->VolLastIndex,
+ dcr->StartFile, dcr->EndFile,
+ dcr->StartBlock, dcr->EndBlock,
+ dcr->Copy, dcr->Stripe,
+ edit_uint64(dcr->VolMediaId, ed1));
+ }
+ Dmsg1(100, ">dird %s", dir->msg);
if (dir->recv() <= 0) {
Dmsg0(190, "create_jobmedia error bnet_recv\n");
Jmsg(jcr, M_FATAL, 0, _("Error creating JobMedia record: ERR=%s\n"),
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/bcopy.c
^
|
@@ -32,7 +32,7 @@
* Kern E. Sibbald, October 2002
*
*
- * Version $Id: bcopy.c 7424 2008-07-23 15:21:42Z kerns $
+ * Version $Id: bcopy.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h"
@@ -358,7 +358,7 @@
/* Dummies to replace askdir.c */
bool dir_find_next_appendable_volume(DCR *dcr) { return 1;}
bool dir_update_volume_info(DCR *dcr, bool relabel, bool update_LastWritten) { return 1; }
-bool dir_create_jobmedia_record(DCR *dcr) { return 1; }
+bool dir_create_jobmedia_record(DCR *dcr, bool zero) { return 1; }
bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr) { return 1; }
bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
bool dir_send_job_status(JCR *jcr) {return 1;}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/block.c
^
|
@@ -32,7 +32,7 @@
* Kern Sibbald, March MMI
* added BB02 format October MMII
*
- * Version $Id: block.c 6636 2008-03-19 18:01:45Z kerns $
+ * Version $Id: block.c 8240 2008-12-23 15:50:58Z kerns $
*
*/
@@ -365,7 +365,7 @@
/* Create a jobmedia record for this job */
if (!dir_create_jobmedia_record(dcr)) {
dev->dev_errno = EIO;
- Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+ Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
dcr->VolCatInfo.VolCatName, jcr->Job);
set_new_volume_parameters(dcr);
stat = false;
@@ -719,7 +719,7 @@
if (!dir_create_jobmedia_record(dcr)) {
Dmsg0(190, "Error from create JobMedia\n");
dev->dev_errno = EIO;
- Jmsg(dcr->jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+ Jmsg2(dcr->jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
dcr->VolCatInfo.VolCatName, dcr->jcr->Job);
ok = false;
goto bail_out;
@@ -795,7 +795,7 @@
if (!dir_create_jobmedia_record(dcr)) {
Dmsg0(190, "Error from create_job_media.\n");
dev->dev_errno = EIO;
- Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+ Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
dcr->VolCatInfo.VolCatName, jcr->Job);
terminate_writing_volume(dcr);
dev->dev_errno = EIO;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/bls.c
^
|
@@ -31,7 +31,7 @@
*
* Kern Sibbald, MM
*
- * Version $Id: bls.c 6636 2008-03-19 18:01:45Z kerns $
+ * Version $Id: bls.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h"
@@ -446,7 +446,7 @@
/* Dummies to replace askdir.c */
bool dir_find_next_appendable_volume(DCR *dcr) { return 1;}
bool dir_update_volume_info(DCR *dcr, bool relabel, bool update_LastWritten) { return 1; }
-bool dir_create_jobmedia_record(DCR *dcr) { return 1; }
+bool dir_create_jobmedia_record(DCR *dcr, bool zero) { return 1; }
bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr) { return 1; }
bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
bool dir_send_job_status(JCR *jcr) {return 1;}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/bscan.c
^
|
@@ -34,7 +34,7 @@
* Kern E. Sibbald, December 2001
*
*
- * Version $Id: bscan.c 7237 2008-06-25 22:14:10Z kerns $
+ * Version $Id: bscan.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h"
@@ -1286,7 +1286,7 @@
/* Dummies to replace askdir.c */
bool dir_find_next_appendable_volume(DCR *dcr) { return 1;}
bool dir_update_volume_info(DCR *dcr, bool relabel, bool update_LastWritten) { return 1; }
-bool dir_create_jobmedia_record(DCR *dcr) { return 1; }
+bool dir_create_jobmedia_record(DCR *dcr, bool zero) { return 1; }
bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr) { return 1; }
bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec) { return 1;}
bool dir_send_job_status(JCR *jcr) {return 1;}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/btape.c
^
|
@@ -37,7 +37,7 @@
* Note, this program reads stored.conf, and will only
* talk to devices that are configured.
*
- * Version $Id: btape.c 6710 2008-04-01 09:31:06Z kerns $
+ * Version $Id: btape.c 8240 2008-12-23 15:50:58Z kerns $
*
*/
@@ -2661,7 +2661,7 @@
return 1;
}
-bool dir_create_jobmedia_record(DCR *dcr)
+bool dir_create_jobmedia_record(DCR *dcr, bool zero)
{
dcr->WroteVol = false;
return 1;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/job.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, MM
*
- * Version $Id: job.c 7291 2008-07-02 20:49:44Z kerns $
+ * Version $Id: job.c 8012 2008-11-07 16:26:48Z kerns $
*
*/
@@ -228,21 +228,25 @@
if (!(jcr=get_jcr_by_full_name(job_name))) {
Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name);
Dmsg1(3, "**** Job \"%s\" not found\n", job_name);
+ fd->close();
return;
}
- jcr->file_bsock = fd;
- jcr->file_bsock->set_jcr(jcr);
-
Dmsg1(110, "Found Job %s\n", job_name);
if (jcr->authenticated) {
Jmsg2(jcr, M_FATAL, 0, _("Hey!!!! JobId %u Job %s already authenticated.\n"),
(uint32_t)jcr->JobId, jcr->Job);
+ Dmsg2(50, "Hey!!!! JobId %u Job %s already authenticated.\n",
+ (uint32_t)jcr->JobId, jcr->Job);
+ fd->close();
free_jcr(jcr);
return;
}
+ jcr->file_bsock = fd;
+ jcr->file_bsock->set_jcr(jcr);
+
/*
* Authenticate the File daemon
*/
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/label.c
^
|
@@ -32,7 +32,7 @@
* Kern Sibbald, MM
*
*
- * Version $Id: label.c 7309 2008-07-05 05:52:04Z kerns $
+ * Version $Id: label.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h" /* pull in global headers */
@@ -435,7 +435,8 @@
/*
* Write a volume label. This is ONLY called if we have a valid Bacula
- * label of type PRE_LABEL;
+ * label of type PRE_LABEL or we are recyling an existing Volume.
+ *
* Returns: true if OK
* false if unable to write it
*/
@@ -522,6 +523,7 @@
if (recycle) {
dev->VolCatInfo.VolCatMounts++;
dev->VolCatInfo.VolCatRecycles++;
+ dir_create_jobmedia_record(dcr, true);
} else {
dev->VolCatInfo.VolCatMounts = 1;
dev->VolCatInfo.VolCatRecycles = 0;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/protos.h
^
|
@@ -28,7 +28,7 @@
/*
* Protypes for stored -- Kern Sibbald MM
*
- * Version $Id: protos.h 6923 2008-05-09 05:39:49Z kerns $
+ * Version $Id: protos.h 8240 2008-12-23 15:50:58Z kerns $
*/
/* From stored.c */
@@ -55,7 +55,7 @@
bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode);
bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec);
bool dir_send_job_status(JCR *jcr);
-bool dir_create_jobmedia_record(DCR *dcr);
+bool dir_create_jobmedia_record(DCR *dcr, bool zero=false);
bool dir_update_device(JCR *jcr, DEVICE *dev);
bool dir_update_changer(JCR *jcr, AUTOCHANGER *changer);
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/reserve.c
^
|
@@ -32,7 +32,7 @@
*
* Split from job.c and acquire.c June 2005
*
- * Version $Id: reserve.c 7329 2008-07-07 09:31:09Z kerns $
+ * Version $Id: reserve.c 8107 2008-12-03 08:48:58Z kerns $
*
*/
@@ -498,6 +498,7 @@
void DCR::unreserve_device()
{
lock_volumes();
+ dev->dlock();
if (is_reserved()) {
clear_reserved();
reserved_volume = false;
@@ -513,6 +514,7 @@
volume_unused(this);
}
}
+ dev->dunlock();
unlock_volumes();
}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/spool.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, March 2004
*
- * Version $Id: spool.c 6710 2008-04-01 09:31:06Z kerns $
+ * Version $Id: spool.c 8240 2008-12-23 15:50:58Z kerns $
*/
#include "bacula.h"
@@ -299,7 +299,7 @@
}
if (!dir_create_jobmedia_record(dcr)) {
- Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+ Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
dcr->VolCatInfo.VolCatName, jcr->Job);
}
/* Set new file/block parameters for current dcr */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/stored/status.c
^
|
@@ -30,7 +30,7 @@
*
* Kern Sibbald, May MMIII
*
- * Version $Id: status.c 7433 2008-07-25 06:16:09Z kerns $
+ * Version $Id: status.c 7949 2008-10-30 12:06:26Z kerns $
*
*/
@@ -378,7 +378,7 @@
}
dcr = jcr->dcr;
rdcr = jcr->read_dcr;
- if ((dcr && dcr->device) || rdcr && rdcr->device) {
+ if ((dcr && dcr->device) || (rdcr && rdcr->device)) {
bstrncpy(JobName, jcr->Job, sizeof(JobName));
/* There are three periods after the Job name */
char *p;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/version.h
^
|
@@ -1,11 +1,11 @@
/*
- * Version $Id: version.h 7745 2008-10-10 11:51:37Z kerns $
+ * Version $Id: version.h 8276 2009-01-03 08:38:38Z kerns $
*/
#undef VERSION
-#define VERSION "2.4.3"
-#define BDATE "10 October 2008"
-#define LSMDATE "10Oct08"
+#define VERSION "2.4.4"
+#define BDATE "28 December 2008"
+#define LSMDATE "28Dec08"
#define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n"
#define BYEAR "2008" /* year for copyright messages in progs */
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/win32/compat/compat.cpp
^
|
@@ -20,7 +20,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
@@ -34,12 +34,13 @@
//
// Author : Christopher S. Hull
// Created On : Sat Jan 31 15:55:00 2004
-// $Id: compat.cpp 7001 2008-05-21 11:59:00Z kerns $
+// $Id: compat.cpp 8202 2008-12-20 13:22:14Z kerns $
#include "bacula.h"
#include "compat.h"
#include "jcr.h"
+#include "findlib/find.h"
#define b_errno_win32 (1<<29)
@@ -58,6 +59,10 @@
static t_pVSSPathConvert g_pVSSPathConvert;
static t_pVSSPathConvertW g_pVSSPathConvertW;
+/* Forward referenced functions */
+static const char *errorString(void);
+
+
void SetVSSPathConvert(t_pVSSPathConvert pPathConvert, t_pVSSPathConvertW pPathConvertW)
{
g_pVSSPathConvert = pPathConvert;
@@ -486,12 +491,44 @@
}
#endif
-int fcntl(int fd, int cmd)
+#ifndef LOAD_WITH_ALTERED_SEARCH_PATH
+#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
+#endif
+
+void *dlopen(const char *file, int mode)
{
- return 0;
+ void *handle;
+
+ handle = LoadLibraryEx(file, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ return handle;
+}
+
+void *dlsym(void *handle, const char *name)
+{
+ void *symaddr;
+ symaddr = (void *)GetProcAddress((HMODULE)handle, name);
+ return symaddr;
}
-int chmod(const char *, mode_t)
+int dlclose(void *handle)
+{
+ if (handle && !FreeLibrary((HMODULE)handle)) {
+ errno = b_errno_win32;
+ return 1; /* failed */
+ }
+ return 0; /* OK */
+}
+
+char *dlerror(void)
+{
+ static char buf[200];
+ const char *err = errorString();
+ bstrncpy(buf, (char *)err, sizeof(buf));
+ LocalFree((void *)err);
+ return buf;
+}
+
+int fcntl(int fd, int cmd)
{
return 0;
}
@@ -548,8 +585,7 @@
return (time_t) (mstime & 0xffffffff);
}
-static const char *
-errorString(void)
+static const char *errorString(void)
{
LPVOID lpMsgBuf;
@@ -604,6 +640,7 @@
sb->st_ctime = now;
sb->st_mtime = now;
sb->st_atime = now;
+ sb->st_rdev = 0;
return 0;
}
@@ -614,6 +651,7 @@
POOLMEM* pwszBuf = get_pool_memory (PM_FNAME);
make_win32_path_UTF8_2_wchar(&pwszBuf, file);
+ Dmsg1(100, "FindFirstFileW=%s\n", file);
h = p_FindFirstFileW((LPCWSTR)pwszBuf, &info_w);
free_pool_memory(pwszBuf);
@@ -627,6 +665,7 @@
// use ASCII
} else if (p_FindFirstFileA) {
+ Dmsg1(100, "FindFirstFileA=%s\n", file);
h = p_FindFirstFileA(file, &info_a);
pdwFileAttributes = &info_a.dwFileAttributes;
@@ -636,11 +675,17 @@
pftLastAccessTime = &info_a.ftLastAccessTime;
pftLastWriteTime = &info_a.ftLastWriteTime;
pftCreationTime = &info_a.ftCreationTime;
+ } else {
+ Dmsg0(100, "No findFirstFile A or W found\n");
}
if (h == INVALID_HANDLE_VALUE) {
const char *err = errorString();
- Dmsg2(99, "FindFirstFile(%s):%s\n", file, err);
+ /*
+ * Note, in creating leading paths, it is normal that
+ * the file does not exist.
+ */
+ Dmsg2(2099, "FindFirstFile(%s):%s\n", file, err);
LocalFree((void *)err);
errno = b_errno_win32;
return -1;
@@ -694,7 +739,7 @@
if (!GetFileInformationByHandle((HANDLE)fd, &info)) {
const char *err = errorString();
- Dmsg1(99, "GetfileInformationByHandle: %s\n", err);
+ Dmsg1(2099, "GetfileInformationByHandle: %s\n", err);
LocalFree((void *)err);
errno = b_errno_win32;
return -1;
@@ -740,7 +785,7 @@
static int
stat2(const char *file, struct stat *sb)
{
- HANDLE h;
+ HANDLE h = INVALID_HANDLE_VALUE;
int rval = 0;
char tmpbuf[5000];
conv_unix_to_win32_path(file, tmpbuf, 5000);
@@ -752,26 +797,31 @@
make_win32_path_UTF8_2_wchar(&pwszBuf, tmpbuf);
attr = p_GetFileAttributesW((LPCWSTR) pwszBuf);
+ if (p_CreateFileW) {
+ h = CreateFileW((LPCWSTR)pwszBuf, GENERIC_READ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+ }
free_pool_memory(pwszBuf);
} else if (p_GetFileAttributesA) {
attr = p_GetFileAttributesA(tmpbuf);
+ h = CreateFileA(tmpbuf, GENERIC_READ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
}
if (attr == (DWORD)-1) {
const char *err = errorString();
- Dmsg2(99, "GetFileAttributes(%s): %s\n", tmpbuf, err);
+ Dmsg2(2099, "GetFileAttributes(%s): %s\n", tmpbuf, err);
LocalFree((void *)err);
+ if (h != INVALID_HANDLE_VALUE) {
+ CloseHandle(h);
+ }
errno = b_errno_win32;
return -1;
}
-
- h = CreateFileA(tmpbuf, GENERIC_READ,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
-
if (h == INVALID_HANDLE_VALUE) {
const char *err = errorString();
- Dmsg2(99, "Cannot open file for stat (%s):%s\n", tmpbuf, err);
+ Dmsg2(2099, "Cannot open file for stat (%s):%s\n", tmpbuf, err);
LocalFree((void *)err);
errno = b_errno_win32;
return -1;
@@ -782,9 +832,8 @@
if (attr & FILE_ATTRIBUTE_DIRECTORY &&
file[1] == ':' && file[2] != 0) {
- statDir(file, sb);
+ rval = statDir(file, sb);
}
-
return rval;
}
@@ -801,7 +850,7 @@
POOLMEM *pwszBuf = get_pool_memory(PM_FNAME);
make_win32_path_UTF8_2_wchar(&pwszBuf, file);
- BOOL b = p_GetFileAttributesExW((LPCWSTR) pwszBuf, GetFileExInfoStandard, &data);
+ BOOL b = p_GetFileAttributesExW((LPCWSTR)pwszBuf, GetFileExInfoStandard, &data);
free_pool_memory(pwszBuf);
if (!b) {
@@ -1315,6 +1364,73 @@
return 0;
}
+int win32_chmod(const char *path, mode_t mode)
+{
+ DWORD attr = (DWORD)-1;
+
+ Dmsg1(100, "Enter win32_chmod. path=%s\n", path);
+ if (p_GetFileAttributesW) {
+ POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
+ make_win32_path_UTF8_2_wchar(&pwszBuf, path);
+
+ attr = p_GetFileAttributesW((LPCWSTR) pwszBuf);
+ if (attr != INVALID_FILE_ATTRIBUTES) {
+ /* Use Bacula mappings define in stat() above */
+ if (mode & (S_IRUSR|S_IRGRP|S_IROTH)) {
+ attr |= FILE_ATTRIBUTE_READONLY;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_READONLY;
+ }
+ if (mode & S_ISVTX) {
+ attr |= FILE_ATTRIBUTE_HIDDEN;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_HIDDEN;
+ }
+ if (mode & S_IRWXO) {
+ attr |= FILE_ATTRIBUTE_SYSTEM;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_SYSTEM;
+ }
+ attr = p_SetFileAttributesW((LPCWSTR)pwszBuf, attr);
+ }
+ free_pool_memory(pwszBuf);
+ Dmsg0(100, "Leave win32_chmod. AttributesW\n");
+ } else if (p_GetFileAttributesA) {
+ if (mode & (S_IRUSR|S_IRGRP|S_IROTH)) {
+ attr |= FILE_ATTRIBUTE_READONLY;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_READONLY;
+ }
+ if (mode & S_ISVTX) {
+ attr |= FILE_ATTRIBUTE_HIDDEN;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_HIDDEN;
+ }
+ if (mode & S_IRWXO) {
+ attr |= FILE_ATTRIBUTE_SYSTEM;
+ } else {
+ attr &= ~FILE_ATTRIBUTE_SYSTEM;
+ }
+ attr = p_GetFileAttributesA(path);
+ if (attr != INVALID_FILE_ATTRIBUTES) {
+ attr = p_SetFileAttributesA(path, attr);
+ }
+ Dmsg0(100, "Leave win32_chmod did AttributesA\n");
+ } else {
+ Dmsg0(100, "Leave win32_chmod did nothing\n");
+ }
+
+
+ if (attr == (DWORD)-1) {
+ const char *err = errorString();
+ Dmsg2(99, "Get/SetFileAttributes(%s): %s\n", path, err);
+ LocalFree((void *)err);
+ errno = b_errno_win32;
+ return -1;
+ }
+ return 0;
+}
+
int
win32_chdir(const char *dir)
@@ -1331,14 +1447,14 @@
errno = b_errno_win32;
return -1;
}
- }
- else if (p_SetCurrentDirectoryA) {
+ } else if (p_SetCurrentDirectoryA) {
if (0 == p_SetCurrentDirectoryA(dir)) {
errno = b_errno_win32;
return -1;
}
+ } else {
+ return -1;
}
- else return -1;
return 0;
}
@@ -1346,15 +1462,18 @@
int
win32_mkdir(const char *dir)
{
+ Dmsg1(100, "enter win32_mkdir. dir=%s\n", dir);
if (p_wmkdir){
POOLMEM* pwszBuf = get_pool_memory(PM_FNAME);
make_win32_path_UTF8_2_wchar(&pwszBuf, dir);
int n = p_wmkdir((LPCWSTR)pwszBuf);
free_pool_memory(pwszBuf);
+ Dmsg0(100, "Leave win32_mkdir did wmkdir\n");
return n;
}
+ Dmsg0(100, "Leave win32_mkdir did _mkdir\n");
return _mkdir(dir);
}
@@ -1497,8 +1616,10 @@
nRetCode = _wunlink((LPCWSTR) pwszBuf);
- /* special case if file is readonly,
- we retry but unset attribute before */
+ /*
+ * special case if file is readonly,
+ * we retry but unset attribute before
+ */
if (nRetCode == -1 && errno == EACCES && p_SetFileAttributesW && p_GetFileAttributesW) {
DWORD dwAttr = p_GetFileAttributesW((LPCWSTR)pwszBuf);
if (dwAttr != INVALID_FILE_ATTRIBUTES) {
@@ -1807,6 +1928,96 @@
}
/**
+ * Create the process with WCHAR API
+ */
+static BOOL
+CreateChildProcessW(const char *comspec, const char *cmdLine,
+ PROCESS_INFORMATION *hProcInfo,
+ HANDLE in, HANDLE out, HANDLE err)
+{
+ STARTUPINFOW siStartInfo;
+ BOOL bFuncRetn = FALSE;
+
+ // Set up members of the STARTUPINFO structure.
+ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
+ siStartInfo.cb = sizeof(siStartInfo);
+ // setup new process to use supplied handles for stdin,stdout,stderr
+
+ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
+ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
+
+ siStartInfo.hStdInput = in;
+ siStartInfo.hStdOutput = out;
+ siStartInfo.hStdError = err;
+
+ // Convert argument to WCHAR
+ POOLMEM *cmdLine_wchar = get_pool_memory(PM_FNAME);
+ POOLMEM *comspec_wchar = get_pool_memory(PM_FNAME);
+
+ UTF8_2_wchar(&cmdLine_wchar, cmdLine);
+ UTF8_2_wchar(&comspec_wchar, comspec);
+
+ // Create the child process.
+ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec_wchar, cmdLine_wchar);
+
+ // try to execute program
+ bFuncRetn = p_CreateProcessW((WCHAR*)comspec_wchar,
+ (WCHAR*)cmdLine_wchar,// command line
+ NULL, // process security attributes
+ NULL, // primary thread security attributes
+ TRUE, // handles are inherited
+ 0, // creation flags
+ NULL, // use parent's environment
+ NULL, // use parent's current directory
+ &siStartInfo, // STARTUPINFO pointer
+ hProcInfo); // receives PROCESS_INFORMATION
+ free_pool_memory(cmdLine_wchar);
+ free_pool_memory(comspec_wchar);
+
+ return bFuncRetn;
+}
+
+
+/**
+ * Create the process with ANSI API
+ */
+static BOOL
+CreateChildProcessA(const char *comspec, char *cmdLine,
+ PROCESS_INFORMATION *hProcInfo,
+ HANDLE in, HANDLE out, HANDLE err)
+{
+ STARTUPINFOA siStartInfo;
+ BOOL bFuncRetn = FALSE;
+
+ // Set up members of the STARTUPINFO structure.
+ ZeroMemory( &siStartInfo, sizeof(siStartInfo) );
+ siStartInfo.cb = sizeof(siStartInfo);
+ // setup new process to use supplied handles for stdin,stdout,stderr
+ siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
+ siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
+
+ siStartInfo.hStdInput = in;
+ siStartInfo.hStdOutput = out;
+ siStartInfo.hStdError = err;
+
+ // Create the child process.
+ Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
+
+ // try to execute program
+ bFuncRetn = p_CreateProcessA(comspec,
+ cmdLine, // command line
+ NULL, // process security attributes
+ NULL, // primary thread security attributes
+ TRUE, // handles are inherited
+ 0, // creation flags
+ NULL, // use parent's environment
+ NULL, // use parent's current directory
+ &siStartInfo,// STARTUPINFO pointer
+ hProcInfo);// receives PROCESS_INFORMATION
+ return bFuncRetn;
+}
+
+/**
* OK, so it would seem CreateProcess only handles true executables:
* .com or .exe files. So grab $COMSPEC value and pass command line to it.
*/
@@ -1815,43 +2026,29 @@
{
static const char *comspec = NULL;
PROCESS_INFORMATION piProcInfo;
- STARTUPINFOA siStartInfo;
BOOL bFuncRetn = FALSE;
- if (comspec == NULL) {
+ if (!p_CreateProcessA || !p_CreateProcessW)
+ return INVALID_HANDLE_VALUE;
+
+ if (comspec == NULL)
comspec = getenv("COMSPEC");
- }
if (comspec == NULL) // should never happen
return INVALID_HANDLE_VALUE;
// Set up members of the PROCESS_INFORMATION structure.
ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
- // Set up members of the STARTUPINFO structure.
-
- ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
- siStartInfo.cb = sizeof(STARTUPINFO);
- // setup new process to use supplied handles for stdin,stdout,stderr
// if supplied handles are not used the send a copy of our STD_HANDLE
// as appropriate
- siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
- siStartInfo.wShowWindow = SW_SHOWMINNOACTIVE;
+ if (in == INVALID_HANDLE_VALUE)
+ in = GetStdHandle(STD_INPUT_HANDLE);
- if (in != INVALID_HANDLE_VALUE)
- siStartInfo.hStdInput = in;
- else
- siStartInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
+ if (out == INVALID_HANDLE_VALUE)
+ out = GetStdHandle(STD_OUTPUT_HANDLE);
- if (out != INVALID_HANDLE_VALUE)
- siStartInfo.hStdOutput = out;
- else
- siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
- if (err != INVALID_HANDLE_VALUE)
- siStartInfo.hStdError = err;
- else
- siStartInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE);
-
- // Create the child process.
+ if (err == INVALID_HANDLE_VALUE)
+ err = GetStdHandle(STD_ERROR_HANDLE);
char *exeFile;
const char *argStart;
@@ -1860,43 +2057,33 @@
return INVALID_HANDLE_VALUE;
}
- int cmdLen = strlen(comspec) + 4 + strlen(exeFile) + strlen(argStart) + 1;
-
- char *cmdLine = (char *)alloca(cmdLen);
-
- snprintf(cmdLine, cmdLen, "%s /c %s%s", comspec, exeFile, argStart);
+ POOL_MEM cmdLine(PM_FNAME);
+ Mmsg(cmdLine, "%s /c %s%s", comspec, exeFile, argStart);
free(exeFile);
- Dmsg2(150, "Calling CreateProcess(%s, %s, ...)\n", comspec, cmdLine);
-
- // try to execute program
- bFuncRetn = CreateProcessA(comspec,
- cmdLine, // command line
- NULL, // process security attributes
- NULL, // primary thread security attributes
- TRUE, // handles are inherited
- 0, // creation flags
- NULL, // use parent's environment
- NULL, // use parent's current directory
- &siStartInfo, // STARTUPINFO pointer
- &piProcInfo); // receives PROCESS_INFORMATION
+ // New function disabled
+ if (p_CreateProcessW && p_MultiByteToWideChar) {
+ bFuncRetn = CreateChildProcessW(comspec, cmdLine.c_str(), &piProcInfo,
+ in, out, err);
+ } else {
+ bFuncRetn = CreateChildProcessA(comspec, cmdLine.c_str(), &piProcInfo,
+ in, out, err);
+ }
if (bFuncRetn == 0) {
ErrorExit("CreateProcess failed\n");
const char *err = errorString();
- Dmsg3(99, "CreateProcess(%s, %s, ...)=%s\n", comspec, cmdLine, err);
+ Dmsg3(99, "CreateProcess(%s, %s, ...)=%s\n",comspec,cmdLine.c_str(),err);
LocalFree((void *)err);
return INVALID_HANDLE_VALUE;
}
// we don't need a handle on the process primary thread so we close
// this now.
CloseHandle(piProcInfo.hThread);
-
return piProcInfo.hProcess;
}
-
void
ErrorExit (LPCSTR lpszMessage)
{
@@ -2129,8 +2316,6 @@
return result;
}
-#include "findlib/find.h"
-
int
utime(const char *fname, struct utimbuf *times)
{
@@ -2309,6 +2494,72 @@
}
#endif
+#ifdef xxx
+/*
+ * Emulation of mmap and unmmap for tokyo dbm
+ */
+void *mmap(void *start, size_t length, int prot, int flags,
+ int fd, off_t offset)
+{
+ DWORD fm_access = 0;
+ DWORD mv_access = 0;
+ HANDLE h;
+ HANDLE mv;
+
+ if (length == 0) {
+ return MAP_FAILED;
+ }
+ if (!fd) {
+ return MAP_FAILED;
+ }
+
+ if (flags & PROT_WRITE) {
+ fm_access |= PAGE_READWRITE;
+ } else if (flags & PROT_READ) {
+ fm_access |= PAGE_READONLY;
+ }
+
+ if (flags & PROT_READ) {
+ mv_access |= FILE_MAP_READ;
+ }
+ if (flags & PROT_WRITE) {
+ mv_access |= FILE_MAP_WRITE;
+ }
+
+ h = CreateFileMapping((HANDLE)_get_osfhandle (fd),
+ NULL /* security */,
+ fm_access,
+ 0 /* MaximumSizeHigh */,
+ 0 /* MaximumSizeLow */,
+ NULL /* name of the file mapping object */);
+
+ if (!h || h == INVALID_HANDLE_VALUE) {
+ return MAP_FAILED;
+ }
+
+ mv = MapViewOfFile(h, mv_access,
+ 0 /* offset hi */,
+ 0 /* offset lo */,
+ length);
+ CloseHandle(h);
+
+ if (!mv || mv == INVALID_HANDLE_VALUE) {
+ return MAP_FAILED;
+ }
+
+ return (void *) mv;
+}
+
+int munmap(void *start, size_t length)
+{
+ if (!start) {
+ return -1;
+ }
+ UnmapViewOfFile(start);
+ return 0;
+}
+#endif
+
#ifdef HAVE_MINGW
/* syslog function, added by Nicolas Boichat */
void openlog(const char *ident, int option, int facility) {}
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/win32/compat/compat.h
^
|
@@ -1,7 +1,7 @@
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2004-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2004-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
@@ -20,7 +20,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
@@ -37,7 +37,7 @@
* Last Modified By: Thorsten Engel
* Last Modified On: Fri Apr 22 19:30:00 2004
* Update Count : 218
- * $Id: compat.h 4992 2007-06-07 14:46:43Z kerns $
+ * $Id: compat.h 8202 2008-12-20 13:22:14Z kerns $
*/
@@ -106,6 +106,7 @@
typedef UINT32 gid_t;
typedef UINT32 mode_t;
typedef INT32 ssize_t;
+typedef UINT32 size_t;
#define HAVE_SSIZE_T 1
#endif /* HAVE_MINGW */
@@ -307,6 +308,7 @@
#define mkdir(p, m) win32_mkdir(p)
#define unlink win32_unlink
#define chdir win32_chdir
+#define chmod win32_chmod
extern "C" void syslog(int type, const char *fmt, ...);
#if !defined(LOG_DAEMON)
#define LOG_DAEMON 0
@@ -333,12 +335,15 @@
#define getcwd win32_getcwd
#define chdir win32_chdir
+#define chmod win32_chmod
#define fputs win32_fputs
char *win32_getcwd(char *buf, int maxlen);
int win32_chdir(const char *buf);
int win32_mkdir(const char *buf);
int win32_fputs(const char *string, FILE *stream);
int win32_unlink(const char *filename);
+int win32_chmod(const char *, mode_t);
+
char* win32_cgets (char* buffer, int len);
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/win32/compat/winapi.c
^
|
@@ -88,6 +88,9 @@
t_SHGetFolderPath p_SHGetFolderPath = NULL;
+t_CreateProcessA p_CreateProcessA = NULL;
+t_CreateProcessW p_CreateProcessW = NULL;
+
void
InitWinAPIWrapper()
{
@@ -104,6 +107,12 @@
HMODULE hLib = LoadLibraryA("KERNEL32.DLL");
if (hLib) {
+ /* create process calls */
+ p_CreateProcessA = (t_CreateProcessA)
+ GetProcAddress(hLib, "CreateProcessA");
+ p_CreateProcessW = (t_CreateProcessW)
+ GetProcAddress(hLib, "CreateProcessW");
+
/* create file calls */
p_CreateFileA = (t_CreateFileA)
GetProcAddress(hLib, "CreateFileA");
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/win32/dll/bacula.def
^
|
@@ -8,6 +8,7 @@
_Z11strncasecmpPKcS0_i
_Z11win32_cgetsPci
_Z11win32_chdirPKc
+_Z11win32_chmodPKct
_Z11win32_fputsPKcP6_iobuf
_Z11win32_mkdirPKc
_Z12UTF8_2_wcharPPcPKc
@@ -33,7 +34,7 @@
_Z4killii
_Z4pipePi
_Z4statPKcP4stat
-_Z5chmodPKct
+_Z11win32_chmodPKct
_Z5chownPKcjj
_Z5fcntlii
_Z5fcntliil
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/src/win32/winapi.h
^
|
@@ -138,6 +138,32 @@
typedef BOOL (WINAPI * t_AttachConsole) (DWORD);
+typedef BOOL (WINAPI *t_CreateProcessA) (
+ LPCSTR,
+ LPSTR,
+ LPSECURITY_ATTRIBUTES,
+ LPSECURITY_ATTRIBUTES,
+ BOOL,
+ DWORD,
+ PVOID,
+ LPCSTR,
+ LPSTARTUPINFOA,
+ LPPROCESS_INFORMATION);
+typedef BOOL (WINAPI *t_CreateProcessW) (
+ LPCWSTR,
+ LPWSTR,
+ LPSECURITY_ATTRIBUTES,
+ LPSECURITY_ATTRIBUTES,
+ BOOL,
+ DWORD,
+ PVOID,
+ LPCWSTR,
+ LPSTARTUPINFOW,
+ LPPROCESS_INFORMATION);
+
+extern t_CreateProcessA DLL_IMP_EXP p_CreateProcessA;
+extern t_CreateProcessW DLL_IMP_EXP p_CreateProcessW;
+
extern t_GetFileAttributesA DLL_IMP_EXP p_GetFileAttributesA;
extern t_GetFileAttributesW DLL_IMP_EXP p_GetFileAttributesW;
|
[-]
[+]
|
Changed |
bacula-2.4.4.tar.gz/technotes-2.4
^
|
@@ -1,7 +1,60 @@
Technical notes on version 2.4
General:
-Release Version 2.4.3
+Release Version 2.4.4
+28Dec08
+kes Apply fix suggested by Bruno Friedmann to configure.in to
+ find python2.5
+
+Release Version 2.4.4-b2
+23Dec08
+kes Fix bug #1208. Inappropriate Volume purging.
+22Dec08
+kes Modify sql_update.c to edit zeros rather than NULL in unset
+ fields. This should fix bug #1206, where apparently the user
+ has modified the Bacula schema.
+20Dec08
+kes Backport most recent changes to compat.h and compat.cpp.
+13Dec08
+kes Create and apply 2.4.3-migrate2.patch, which fixes two bugs
+ - Bug #1206 -- sql error when there are no files to migrate.
+ - Bug #1171 -- Job catalog log is not migrated during migration.
+
+Release Version 2.4.4-b1
+03Dec08
+kes Apply 2.4.3-sd-deadlock.patch that should fix bug #1192.
+02Dec08
+ebl Remove extra db_lock() in get_prune_list_for_volume()
+ebl Apply 2.4.3-prune-deadlock.patch that fixes a problem when
+ using Catalog as message backend.
+20Nov08
+ebl Apply 2.4.3-win32-runscript-unicode-path.patch for #1110
+ about a problem when executing a program with Unicode path.
+ebl Apply 2.4.3-unique-inchanger.patch fix for #1175 about bad slot
+ number if the volume is not in autochanger.
+18Nov08
+kes Probably fix for bug #1188 where Volume is purged while writing
+ on it.
+kes Get message enhancement to avoid job name lookup.
+07Nov08
+kes Fix bug with job name duplication if more than 60 jobs created
+ during a minute.
+kes Correct some bugs of cleanup in SD if the FD connection fails.
+02Nov08
+kes Fix orphaned jobs (possible deadlock) while pruning.
+31Oct08
+ebl Backport of the btraceback script that keeps trace file on working dir
+28Oct08
+kes Migrate DB Log records too. This fixes last part of bug #1171.
+24Oct08
+kes Modify SQL so that jobs that failed will not be migrated.
+kes Correct bug where long retention periods caused immediate
+ pruning.
+
+Release Version 2.4.3
+27Oct08
+ebl Apply 2.4.3-update-slots.patch to fix #1175. About update slots
+ that don't reset InChanger flag when slot is empty.
10Oct08
ebl Apply 2.4.2-cancel-non-running-jobs.patch to be able to cancel
a non created job faster.
@@ -57,7 +110,7 @@
kes Implement a set_dcr_from_vol subroutine in acquire.c for
reading volumes. This allows the dcr to be refreshed after being
zapped when the wrong volume is mounted.
- This should fix bug #1126 -- During multiple tape restore, bacula
+ This should fix bug #1126 -- During multiple tape restore, Bacula
does not ask for physical tape change, but rereads same tape
23Jul08
kes Apply patch submitted for bug #1107 with a small modification.
@@ -117,7 +170,7 @@
kes Back out bad src/lib/base64.c change.
27Jun08
kes Generally clean up the manual tape loading code. The main
- conceptial change is that when a volume is marked to be unloaded,
+ conceptual change is that when a volume is marked to be unloaded,
its volume name is retained, and it is only marked as unloaded
when either the autoloader says it is unloaded or another tape
is read on that drive.
|
|
Changed |
bacula-docs-2.4.4.tar.gz
^
|
|
Renamed |
bacula-rescue-2.4.4.tar.gz
^
|
[-]
[+]
|
Added |
bacula.spec244
^
|
@@ -0,0 +1,2878 @@
+# Bacula RPM spec file
+# Copyright (C) 2000-2008 Kern Sibbald
+
+# Platform Build Configuration
+
+# basic defines for every build
+%define _version 2.4.4
+%define _release 1
+%define depkgs_version 11Sep08
+%define _rescuever 2.4.4
+%define docs_version 2.4.4
+
+# any patches for this release
+# be sure to check the setup section for patch macros
+
+#--------------------------------------------------------------------------
+# it should not be necessary to change anything below here for a release
+# except for patch macros in the setup section
+#--------------------------------------------------------------------------
+
+%define single_dir 0
+%{?single_dir_install:%define single_dir 1}
+%if %{single_dir}
+%define _prefix /opt/bacula
+%else
+%define _prefix /usr
+%endif
+
+Summary: Bacula - The Network Backup Solution
+Name: bacula
+Version: %{_version}
+Release: %{_release}
+Group: System Environment/Daemons
+License: GPL v2
+Source0: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+Source1: http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
+Source2: Release_Notes-%{version}-%{release}.tar.gz
+Source3: http://www.prdownloads.sourceforge.net/bacula/%{name}-docs-%{docs_version}.tar.gz
+Source4: http://www.prdownloads.sourceforge.net/bacula/%{name}-rescue-%{_rescuever}.tar.gz
+Source5: bacula-2.2.7-postgresql.patch
+BuildRoot: %{_tmppath}/%{name}-root
+URL: http://www.bacula.org/
+Prefix: %{_prefix}
+
+# define the basic package description
+%define blurb Bacula - It comes by night and sucks the vital essence from your computers.
+%define blurb2 Bacula is a set of computer programs that permit you (or the system
+%define blurb3 administrator) to manage backup, recovery, and verification of computer
+%define blurb4 data across a network of computers of different kinds. In technical terms,
+%define blurb5 it is a network client/server based backup program. Bacula is relatively
+%define blurb6 easy to use and efficient, while offering many advanced storage management
+%define blurb7 features that make it easy to find and recover lost or damaged files.
+%define blurb8 Bacula source code has been released under the GPL version 2 license.
+
+# source directory locations
+%define _docsrc ../%{name}-docs-%{docs_version}
+%define _rescuesrc ../%{name}-rescue-%{_rescuever}
+%define depkgs ../depkgs
+
+# directory locations
+%if %{single_dir}
+%define _sbindir /opt/bacula
+%define _subsysdir /opt/bacula/working
+%define sqlite_bindir /opt/bacula/sqlite
+%define _mandir /usr/share/man
+%define sysconf_dir /opt/bacula
+%define script_dir /opt/bacula/scripts
+%define working_dir /opt/bacula/working
+%define pid_dir /opt/bacula/working
+%else
+%define _sbindir %_prefix/sbin
+%define _subsysdir /var/lock/subsys
+%define sqlite_bindir %_libdir/bacula/sqlite
+%define _mandir %_prefix/share/man
+%define sysconf_dir /etc/bacula
+%define script_dir %_libdir/bacula
+%define working_dir /var/lib/bacula
+%define pid_dir /var/run
+%endif
+
+# NOTE these defines are used in some rather complex useradd and groupadd
+# commands. If you change them examine the post scripts for consequences.
+%define director_daemon_user bacula
+%define storage_daemon_user bacula
+%define file_daemon_user root
+%define daemon_group bacula
+# group that has write access to tape devices, usually disk on Linux
+%define storage_daemon_group disk
+%define user_file /etc/passwd
+%define group_file /etc/group
+
+# program locations
+%define useradd /usr/sbin/useradd
+%define groupadd /usr/sbin/groupadd
+%define usermod /usr/sbin/usermod
+
+# platform defines - set one below or define the build_xxx on the command line
+# RedHat builds
+%define rh7 0
+%{?build_rh7:%define rh7 1}
+%define rh8 0
+%{?build_rh8:%define rh8 1}
+%define rh9 0
+%{?build_rh9:%define rh9 1}
+# Fedora Core build
+%define fc1 0
+%{?build_fc1:%define fc1 1}
+%define fc3 0
+%{?build_fc3:%define fc3 1}
+%define fc4 0
+%{?build_fc4:%define fc4 1}
+%define fc5 0
+%{?build_fc5:%define fc5 1}
+%define fc6 0
+%{?build_fc6:%define fc6 1}
+%define fc7 0
+%{?build_fc7:%define fc7 1}
+%define fc8 0
+%{?build_fc8:%define fc8 1}
+%define fc9 0
+%{?build_fc9:%define fc9 1}
+# Whitebox Enterprise build
+%define wb3 0
+%{?build_wb3:%define wb3 1}
+# RedHat Enterprise builds
+%define rhel3 0
+%{?build_rhel3:%define rhel3 1}
+%{?build_rhel3:%define wb3 1}
+%define rhel4 0
+%{?build_rhel4:%define rhel4 1}
+%{?build_rhel4:%define fc3 1}
+%define rhel5 0
+%{?build_rhel5:%define rhel5 1}
+%{?build_rhel5:%define fc6 1}
+# CentOS build
+%define centos3 0
+%{?build_centos3:%define centos3 1}
+%{?build_centos3:%define wb3 1}
+%define centos4 0
+%{?build_centos4:%define centos4 1}
+%{?build_centos4:%define fc3 1}
+%define centos5 0
+%{?build_centos5:%define centos5 1}
+%{?build_centos5:%define fc6 1}
+# SL build
+%define sl3 0
+%{?build_sl3:%define sl3 1}
+%{?build_sl3:%define wb3 1}
+%define sl4 0
+%{?build_sl4:%define sl4 1}
+%{?build_sl4:%define fc3 1}
+%define sl5 0
+%{?build_sl5:%define sl5 1}
+%{?build_sl5:%define fc6 1}
+# SuSE build
+%define su9 0
+%{?build_su9:%define su9 1}
+%define su10 0
+%{?build_su10:%define su10 1}
+%define su102 0
+%{?build_su102:%define su102 1}
+%define su103 0
+%{?build_su103:%define su103 1}
+%define su110 0
+%{?build_su110:%define su110 1}
+%define su111 0
+%{?build_su111:%define su111 1}
+# Mandrake builds
+%define mdk 0
+%{?build_mdk:%define mdk 1}
+%define mdv 0
+%{?build_mdv:%define mdv 1}
+%{?build_mdv:%define mdk 1}
+
+# client only build
+%define client_only 0
+%{?build_client_only:%define client_only 1}
+
+# test for a platform definition
+%if !%{rh7} && !%{rh8} && !%{rh9} && !%{fc1} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9} && !%{wb3} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk}
+%{error: You must specify a platform. Please examine the spec file.}
+exit 1
+%endif
+
+# database defines
+# set for database support desired or define the build_xxx on the command line
+%define mysql 0
+%{?build_mysql:%define mysql 1}
+# if using mysql 4.x define this and mysql above
+# currently: Mandrake 10.1, SuSE 9.x & 10.0, RHEL4 and Fedora Core 4
+%define mysql4 0
+%{?build_mysql4:%define mysql4 1}
+%{?build_mysql4:%define mysql 1}
+# if using mysql 5.x define this and mysql above
+# currently: SuSE 10.1 and Fedora Core 5
+%define mysql5 0
+%{?build_mysql5:%define mysql5 1}
+%{?build_mysql5:%define mysql 1}
+%define sqlite 0
|