]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/record.h
add PostgreSQL support
[bacula/bacula] / bacula / src / stored / record.h
index 2f300b1e6eac93164900a9854d1ccf52dbeb1aec..dd3047d478af6b6e1bfa893ffd9a9cda292fc2e8 100644 (file)
@@ -38,6 +38,7 @@
 #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 */
 
 
 /*  See block.h for RECHDR_LENGTH */
  */
 
 /* Record state bit definitions */
-#define REC_NO_HEADER        0x01     /* No header read */
-#define REC_PARTIAL_RECORD   0x02     /* returning partial record */
-#define REC_BLOCK_EMPTY      0x04     /* not enough data in block */
-#define REC_NO_MATCH         0x08     /* No match on continuation data */
-#define REC_CONTINUATION     0x10     /* Continuation record found */
+#define REC_NO_HEADER        (1<<0)   /* No header read */
+#define REC_PARTIAL_RECORD   (1<<1)   /* returning partial record */
+#define REC_BLOCK_EMPTY      (1<<2)   /* not enough data in block */
+#define REC_NO_MATCH         (1<<3)   /* No match on continuation data */
+#define REC_CONTINUATION     (1<<4)   /* Continuation record found */
+#define REC_ISTAPE           (1<<5)   /* Set if device is tape */
 
 #define is_partial_record(r) ((r)->state & REC_PARTIAL_RECORD)
 #define is_block_empty(r)    ((r)->state & REC_BLOCK_EMPTY)
  * 
  *  This is the memory structure for the record header.
  */
-typedef struct s_dev_rec {
-   int      sync;                     /* synchronous */
-   /* File and Block are always returned on reading records, but
-    *  only returned on writing if sync is set (obviously).
+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
+    *  and writing records.
     */
    uint32_t File;                     /* File number */
    uint32_t Block;                    /* Block number */
@@ -89,9 +92,10 @@ typedef struct s_dev_rec {
    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 */
-} DEV_RECORD;
+};           
 
 
 /*
@@ -148,9 +152,9 @@ struct Volume_Label {
   char MediaType[MAX_NAME_LENGTH];    /* Type of this media */
 
   char HostName[MAX_NAME_LENGTH];     /* Host name of writing computer */
-  char LabelProg[32];                 /* Label program name */
-  char ProgVersion[32];               /* Program version */
-  char ProgDate[32];                  /* Program build date/time */
+  char LabelProg[50];                 /* Label program name */
+  char ProgVersion[50];               /* Program version */
+  char ProgDate[50];                  /* Program build date/time */
 };
 
 #define SER_LENGTH_Volume_Label 1024   /* max serialised length of volume label */
@@ -185,6 +189,7 @@ struct Session_Label {
   char ClientName[MAX_NAME_LENGTH];
   char Job[MAX_NAME_LENGTH];          /* Unique name of this Job */
   char FileSetName[MAX_NAME_LENGTH];
+  char FileSetMD5[MAX_NAME_LENGTH];
   uint32_t JobType;
   uint32_t JobLevel;
   /* The remainder are part of EOS label only */