]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/record.h
Make weof() and clrerror() methods of class DEVICE.
[bacula/bacula] / bacula / src / stored / record.h
index f00207547e1d47500c600d40a5a7bdb33e56bd8a..1d50c543873da0e83100bf55ff26a854c277f87e 100644 (file)
@@ -2,26 +2,23 @@
  * Record, and label definitions for Bacula
  *  media data format.
  *
+ *   Kern Sibbald, MM
+ *
  *   Version $Id$
  *
  */
 /*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2000-2006 Kern Sibbald
 
    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.
+   modify it under the terms of the GNU General Public License
+   version 2 as amended with additional clauses defined in the
+   file LICENSE in the main source directory.
 
    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.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
+   the file LICENSE for additional details.
 
  */
 
 #define __RECORD_H 1
 
 /* Return codes from read_device_volume_label() */
-#define VOL_NOT_READ      0               /* Volume label not read */
-#define VOL_OK            1               /* volume name OK */
-#define VOL_NO_LABEL      2               /* volume not labeled */
-#define VOL_IO_ERROR      3               /* volume I/O error */
-#define VOL_NAME_ERROR    4               /* Volume name mismatch */
-#define VOL_CREATE_ERROR  5               /* Error creating label */
-#define VOL_VERSION_ERROR 6               /* Bacula version error */
-#define VOL_LABEL_ERROR   7               /* Bad label type */
-#define VOL_NO_MEDIA      8               /* Hard error -- no media present */
+enum {
+   VOL_NOT_READ = 1,                      /* Volume label not read */
+   VOL_OK,                                /* volume name OK */
+   VOL_NO_LABEL,                          /* volume not labeled */
+   VOL_IO_ERROR,                          /* volume I/O error */
+   VOL_NAME_ERROR,                        /* Volume name mismatch */
+   VOL_CREATE_ERROR,                      /* Error creating label */
+   VOL_VERSION_ERROR,                     /* Bacula version error */
+   VOL_LABEL_ERROR,                       /* Bad label type */
+   VOL_NO_MEDIA                           /* Hard error -- no media present */
+};
 
 
 /*  See block.h for RECHDR_LENGTH */
 /*
  * DEV_RECORD for reading and writing records.
  * It consists of a Record Header, and the Record Data
- * 
+ *
  *  This is the memory structure for the record header.
  */
+struct BSR;                           /* satisfy forward reference */
 struct DEV_RECORD {
    dlink link;                        /* link for chaining in read_record.c */
    /* File and Block are always returned during reading
@@ -91,9 +91,10 @@ struct DEV_RECORD {
    uint32_t data_len;                 /* current record length */
    uint32_t remainder;                /* remaining bytes to read/write */
    uint32_t state;                    /* state bits */
+   BSR *bsr;                          /* pointer to bsr that matched */
    uint8_t  ser_buf[WRITE_RECHDR_LENGTH];   /* serialized record header goes here */
    POOLMEM *data;                     /* Record data. This MUST be a memory pool item */
-};           
+};
 
 
 /*
@@ -103,20 +104,20 @@ struct DEV_RECORD {
  */
 #define PRE_LABEL   -1                /* Vol label on unwritten tape */
 #define VOL_LABEL   -2                /* Volume label first file */
-#define EOM_LABEL   -3                /* Writen at end of tape */        
+#define EOM_LABEL   -3                /* Writen at end of tape */
 #define SOS_LABEL   -4                /* Start of Session */
 #define EOS_LABEL   -5                /* End of Session */
 #define EOT_LABEL   -6                /* End of physical tape (2 eofs) */
 
-/* 
+/*
  *   Volume Label Record.  This is the in-memory definition. The
  *     tape definition is defined in the serialization code itself
  *     ser_volume_label() and unser_volume_label() and is slightly different.
  */
 
+
 struct Volume_Label {
-  /*  
+  /*
    * The first items in this structure are saved
    * in the DEVICE buffer, but are not actually written
    * to the tape.
@@ -124,7 +125,7 @@ struct Volume_Label {
   int32_t LabelType;                  /* This is written in header only */
   uint32_t LabelSize;                 /* length of serialized label */
   /*
-   * The items below this line are stored on 
+   * The items below this line are stored on
    * the tape
    */
   char Id[32];                        /* Bacula Immortal ... */
@@ -143,8 +144,8 @@ struct Volume_Label {
   float64_t write_date;               /* Date this label written */
   float64_t write_time;               /* Time this label written */
 
-  char VolName[MAX_NAME_LENGTH];      /* Volume name */
-  char PrevVolName[MAX_NAME_LENGTH];  /* Previous Volume Name */
+  char VolumeName[MAX_NAME_LENGTH];   /* Volume name */
+  char PrevVolumeName[MAX_NAME_LENGTH]; /* Previous Volume Name */
   char PoolName[MAX_NAME_LENGTH];     /* Pool name */
   char PoolType[MAX_NAME_LENGTH];     /* Pool type */
   char MediaType[MAX_NAME_LENGTH];    /* Type of this media */