]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/bsr.h
Merge branch 'master' of ssh://bacula.git.sourceforge.net/gitroot/bacula/bacula
[bacula/bacula] / bacula / src / stored / bsr.h
index dfafe13b917e31b1d06e5f580ce0302ed4141c25..304de114d369c701aaa0ed168f7c62a8ac8d9cbd 100644 (file)
@@ -1,35 +1,49 @@
 /*
- * BootStrap record definition -- for restoring files.
- *
- *    Kern Sibbald, June 2002
- *
- *   Version $Id$
- *
- */
-/*
-   Copyright (C) 2000-2004 Kern Sibbald and John Walker
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of
-   the License, or (at your option) any later version.
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version two of the GNU General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public
-   License along with this program; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
 
+   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.
+*/
+/*
+ * BootStrap record definition -- for restoring files.
+ *
+ *    Kern Sibbald, June 2002
+ *
+ *   Version $Id$
+ *
  */
 
 
 #ifndef __BSR_H
 #define __BSR_H 1
 
+#ifndef HAVE_REGEX_H
+#include "lib/bregex.h"
+#else
+#include <regex.h>
+#endif
+
 /*
  * List of Volume names to be read by Storage daemon.
  *  Formed by Storage daemon from BSR
@@ -37,6 +51,8 @@
 struct VOL_LIST {
    VOL_LIST *next;
    char VolumeName[MAX_NAME_LENGTH];
+   char MediaType[MAX_NAME_LENGTH];
+   char device[MAX_NAME_LENGTH];   /* ***FIXME*** use alist here */
    int Slot;
    uint32_t start_file;
 };
@@ -54,6 +70,9 @@ struct VOL_LIST {
 struct BSR_VOLUME {
    BSR_VOLUME *next;
    char VolumeName[MAX_NAME_LENGTH];
+   char MediaType[MAX_NAME_LENGTH];
+   char device[MAX_NAME_LENGTH];   /* ***FIXME*** use alist here */
+   int32_t       Slot;                /* Slot */
 };
 
 struct BSR_CLIENT {
@@ -87,6 +106,12 @@ struct BSR_VOLBLOCK {
    bool done;                         /* local done */
 };
 
+struct BSR_VOLADDR {
+   BSR_VOLADDR *next;
+   uint64_t saddr;                   /* start address */
+   uint64_t eaddr;                   /* end address */
+   bool done;                        /* local done */
+};
 
 struct BSR_FINDEX {
    BSR_FINDEX *next;
@@ -123,19 +148,22 @@ struct BSR_STREAM {
 };
 
 struct BSR {
+   /* NOTE!!! next must be the first item */
    BSR          *next;                /* pointer to next one */
+   BSR          *prev;                /* pointer to previous one */
    BSR          *root;                /* root bsr */
    bool          reposition;          /* set when any bsr is marked done */
    bool          mount_next_volume;   /* set when next volume should be mounted */
    bool          done;                /* set when everything found for this bsr */
    bool          use_fast_rejection;  /* set if fast rejection can be used */
    bool          use_positioning;     /* set if we can position the archive */
+   bool          skip_file;           /* skip all records for current file */
    BSR_VOLUME   *volume;
-   int32_t       Slot;                /* Slot */
    uint32_t      count;               /* count of files to restore this bsr */
    uint32_t      found;               /* count of restored files this bsr */
    BSR_VOLFILE  *volfile;
    BSR_VOLBLOCK *volblock;
+   BSR_VOLADDR  *voladdr;
    BSR_SESSTIME *sesstime;
    BSR_SESSID   *sessid;
    BSR_JOBID    *JobId;
@@ -145,6 +173,9 @@ struct BSR {
    BSR_JOBTYPE  *JobType;
    BSR_JOBLEVEL *JobLevel;
    BSR_STREAM   *stream;
+   char         *fileregex;           /* set if restore is filtered on filename */
+   regex_t      *fileregex_re;
+   ATTR         *attr;                /* scratch space for unpacking */
 };