--- /dev/null
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/cats/cats.h bacula.org/src/cats/cats.h
+--- bacula/src/cats/cats.h 2007-02-18 12:01:05.000000000 +0100
++++ bacula.org/src/cats/cats.h 2007-02-18 11:04:55.000000000 +0100
+@@ -734,6 +734,7 @@
+ uint32_t MaxVolJobs; /* Max Jobs on Volume */
+ uint32_t MaxVolFiles; /* Max files on Volume */
+ uint64_t MaxVolBytes; /* Max bytes on Volume */
++ DBId_t RecyclePoolId; /* RecyclePool destination when media is purged */
+ char PoolType[MAX_NAME_LENGTH];
+ char LabelFormat[MAX_NAME_LENGTH];
+ /* Extra stuff not in DB */
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/cats/sql_create.c bacula.org/src/cats/sql_create.c
+--- bacula/src/cats/sql_create.c 2007-02-18 12:01:05.000000000 +0100
++++ bacula.org/src/cats/sql_create.c 2007-02-18 11:36:02.000000000 +0100
+@@ -170,7 +170,7 @@
+ db_create_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
+ {
+ bool stat;
+- char ed1[30], ed2[30], ed3[50];
++ char ed1[30], ed2[30], ed3[50], ed4[50];
+
+ Dmsg0(200, "In create pool\n");
+ db_lock(mdb);
+@@ -192,8 +192,8 @@
+ Mmsg(mdb->cmd,
+ "INSERT INTO Pool (Name,NumVols,MaxVols,UseOnce,UseCatalog,"
+ "AcceptAnyVolume,AutoPrune,Recycle,VolRetention,VolUseDuration,"
+-"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelType,LabelFormat) "
+-"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s',%d,'%s')",
++"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelType,LabelFormat,RecyclePoolId) "
++"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s',%d,'%s',%s)",
+ pr->Name,
+ pr->NumVols, pr->MaxVols,
+ pr->UseOnce, pr->UseCatalog,
+@@ -203,7 +203,8 @@
+ edit_uint64(pr->VolUseDuration, ed2),
+ pr->MaxVolJobs, pr->MaxVolFiles,
+ edit_uint64(pr->MaxVolBytes, ed3),
+- pr->PoolType, pr->LabelType, pr->LabelFormat);
++ pr->PoolType, pr->LabelType, pr->LabelFormat,
++ edit_int64(pr->RecyclePoolId,ed4));
+ Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
+ if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
+ Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/cats/sql_get.c bacula.org/src/cats/sql_get.c
+--- bacula/src/cats/sql_get.c 2007-02-18 12:01:05.000000000 +0100
++++ bacula.org/src/cats/sql_get.c 2007-02-18 11:03:59.000000000 +0100
+@@ -574,13 +574,13 @@
+ Mmsg(mdb->cmd,
+ "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
+ "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
+-"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.PoolId=%s",
++"MaxVolBytes,PoolType,LabelType,LabelFormat,RecyclePoolId FROM Pool WHERE Pool.PoolId=%s",
+ edit_int64(pdbr->PoolId, ed1));
+ } else { /* find by name */
+ Mmsg(mdb->cmd,
+ "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
+ "AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
+-"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.Name='%s'",
++"MaxVolBytes,PoolType,LabelType,LabelFormat,RecyclePoolId FROM Pool WHERE Pool.Name='%s'",
+ pdbr->Name);
+ }
+
+@@ -613,6 +613,7 @@
+ bstrncpy(pdbr->PoolType, row[14]!=NULL?row[14]:"", sizeof(pdbr->PoolType));
+ pdbr->LabelType = str_to_int64(row[15]);
+ bstrncpy(pdbr->LabelFormat, row[16]!=NULL?row[16]:"", sizeof(pdbr->LabelFormat));
++ pdbr->RecyclePoolId = str_to_int64(row[17]);
+ ok = true;
+ }
+ }
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/cats/sql_update.c bacula.org/src/cats/sql_update.c
+--- bacula/src/cats/sql_update.c 2007-02-18 12:01:05.000000000 +0100
++++ bacula.org/src/cats/sql_update.c 2007-02-18 11:11:54.000000000 +0100
+@@ -255,7 +255,7 @@
+ db_update_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
+ {
+ int stat;
+- char ed1[50], ed2[50], ed3[50], ed4[50];
++ char ed1[50], ed2[50], ed3[50], ed4[50], ed5[50];
+
+ db_lock(mdb);
+ Mmsg(mdb->cmd, "SELECT count(*) from Media WHERE PoolId=%s",
+@@ -267,14 +267,14 @@
+ "UPDATE Pool SET NumVols=%u,MaxVols=%u,UseOnce=%d,UseCatalog=%d,"
+ "AcceptAnyVolume=%d,VolRetention='%s',VolUseDuration='%s',"
+ "MaxVolJobs=%u,MaxVolFiles=%u,MaxVolBytes=%s,Recycle=%d,"
+-"AutoPrune=%d,LabelType=%d,LabelFormat='%s' WHERE PoolId=%s",
++"AutoPrune=%d,LabelType=%d,LabelFormat='%s',RecyclePoolId=%s WHERE PoolId=%s",
+ pr->NumVols, pr->MaxVols, pr->UseOnce, pr->UseCatalog,
+ pr->AcceptAnyVolume, edit_uint64(pr->VolRetention, ed1),
+ edit_uint64(pr->VolUseDuration, ed2),
+ pr->MaxVolJobs, pr->MaxVolFiles,
+ edit_uint64(pr->MaxVolBytes, ed3),
+ pr->Recycle, pr->AutoPrune, pr->LabelType,
+- pr->LabelFormat,
++ pr->LabelFormat, edit_int64(pr->RecyclePoolId,ed5),
+ ed4);
+
+ stat = UPDATE_DB(jcr, mdb, mdb->cmd);
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/dird/dird_conf.c bacula.org/src/dird/dird_conf.c
+--- bacula/src/dird/dird_conf.c 2007-02-18 12:00:55.000000000 +0100
++++ bacula.org/src/dird/dird_conf.c 2007-02-18 11:51:52.000000000 +0100
+@@ -19,7 +19,7 @@
+ *
+ * Kern Sibbald, January MM
+ *
+- * Version $Id: dird_conf.c 4200 2007-02-18 10:51:23Z ricozz $
++ * Version $Id: dird_conf.c 4104 2007-02-05 14:23:39Z ricozz $
+ */
+ /*
+ Bacula® - The Network Backup Solution
+@@ -856,6 +856,9 @@
+ if (res->res_pool.NextPool) {
+ sendit(sock, _(" NextPool=%s\n"), res->res_pool.NextPool->hdr.name);
+ }
++ if (res->res_pool.RecyclePool) {
++ sendit(sock, _(" RecyclePool=%s\n"), res->res_pool.RecyclePool->hdr.name);
++ }
+ if (res->res_pool.storage) {
+ STORE *store;
+ foreach_alist(store, res->res_pool.storage) {
+@@ -1245,6 +1248,7 @@
+ }
+ /* Explicitly copy resource pointers from this pass (res_all) */
+ res->res_pool.NextPool = res_all.res_pool.NextPool;
++ res->res_pool.RecyclePool = res_all.res_pool.RecyclePool;
+ res->res_pool.storage = res_all.res_pool.storage;
+ break;
+ case R_CONSOLE:
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/dird/dird_conf.h bacula.org/src/dird/dird_conf.h
+--- bacula/src/dird/dird_conf.h 2007-02-18 12:00:55.000000000 +0100
++++ bacula.org/src/dird/dird_conf.h 2007-02-18 11:01:07.000000000 +0100
+@@ -523,7 +523,7 @@
+ bool recycle_current_volume; /* attempt recycle of current volume */
+ bool AutoPrune; /* default for pool auto prune */
+ bool Recycle; /* default for media recycle yes/no */
+-
++ POOL *RecyclePool; /* RecyclePool destination when media is purged */
+ /* Methods */
+ char *name() const;
+ };
+diff -Naur --exclude=.svn --exclude='*~' bacula/src/dird/ua_cmds.c bacula.org/src/dird/ua_cmds.c
+--- bacula/src/dird/ua_cmds.c 2007-02-18 12:00:55.000000000 +0100
++++ bacula.org/src/dird/ua_cmds.c 2007-02-18 11:56:10.000000000 +0100
+@@ -194,6 +194,7 @@
+ mr->Recycle = pr->Recycle;
+ mr->VolRetention = pr->VolRetention;
+ mr->VolUseDuration = pr->VolUseDuration;
++ mr->RecyclePoolId = pr->RecyclePoolId;
+ mr->MaxVolJobs = pr->MaxVolJobs;
+ mr->MaxVolFiles = pr->MaxVolFiles;
+ mr->MaxVolBytes = pr->MaxVolBytes;
+@@ -525,6 +526,7 @@
+ } else {
+ bstrncpy(pr->LabelFormat, "*", sizeof(pr->LabelFormat)); /* none */
+ }
++ /* TODO : set RecyclePoolId, Warning if creating Pool and RecyclePool = ThisPool */
+ }
+
+