]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/patches/testing/faketape.h
Commit NULL vol name patch
[bacula/bacula] / bacula / patches / testing / faketape.h
index cfbc4fd065cdf5a981b807ee6fff85b3095c47bd..040f5a807543d20362ec9d7ade8f016308bc61ed 100644 (file)
 #include <stddef.h>
 #include "bacula.h"
 
-#define FTAPE_MAX_DRIVE 20
+#ifdef USE_FAKETAPE
+
+#define FTAPE_MAX_DRIVE 50
 
 /* 
  * Theses functions will replace open/read/write
  */
-int faketape_open(const char *pathname, int flags, int mode);
+int faketape_open(const char *pathname, int flags);
 int faketape_read(int fd, void *buffer, unsigned int count);
 int faketape_write(int fd, const void *buffer, unsigned int count);
 int faketape_close(int fd);
 int faketape_ioctl(int fd, unsigned long int request, ...);
+void faketape_debug(int level);
 
 class faketape {
 private:
-   int         fd;             /* Our file descriptor */
+   int         fd;              /* Our file descriptor */
 
-   off_t       file_size;      /* size */
+   off_t       file_size;       /* size */
    off_t       max_block;
 
-   bool        atEOF;          /* End of file */
-   bool        atEOT;          /* End of media */
-   bool        atEOD;          /* End of data */
+   bool        atEOF;           /* End of file */
+   bool        atEOT;           /* End of media */
+   bool        atEOD;           /* End of data */
    bool        atBOT;           /* Begin of tape */
-   bool        online;         /* volume online */
-
-   POOLMEM     *volume;                /* volume name */
+   bool        online;          /* volume online */
+   bool        inplace;         /* have to seek before writing ? */
+   bool        needEOF;         /* check if last operation need eof */
 
-   int16_t     last_file;      /* last file of the volume */
-   int16_t     current_file;   /* max 65000 files */
-   int32_t     current_block;  /* max 4G blocks of 1KB */
-   off_t       current_pos;    /* current position in stream */
+   int32_t     last_file;       /* last file of the volume */
+   int32_t     current_file;    /* max 65000 files */
+   int32_t     current_block;   /* max 4G blocks of 1KB */
+   off_t       current_pos;     /* current position in stream */
 
    void destroy();
    int find_maxfile();
    int offline();
    int truncate_file();
    int seek_file();
+   void check_eof() { if(needEOF) weof(1);};
 
 public:
    int fsf(int count);
    int fsr(int count);
    int weof(int count);
    int bsf(int count);
+   int bsr(int count);
 
    faketape();
    ~faketape();
 
    int get_fd();
    void dump();
-   int open(const char *pathname, int flags, int mode);
+   int open(const char *pathname, int flags);
    int read(void *buffer, unsigned int count);
    int write(const void *buffer, unsigned int count);
    int close();
@@ -96,4 +101,5 @@ public:
    int tape_pos(struct mtpos *mt_com);
 };
 
+#endif /* USE_FAKETAPE */
 #endif /* !FAKETAPE_H */