]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/vtape.h
Implement .bvfs_versions command to display all file versions for a client
[bacula/bacula] / bacula / src / stored / vtape.h
index da788d94e137b3a2eeadde1415d5cd4709af3dab..057ecdaf9d2a710e7ba5aaca68da78a4c39ea5b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2010 Free Software Foundation Europe e.V.
 
    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
+   modify it under the terms of version three of the GNU Affero General Public
    License as published by the Free Software Foundation, which is
    listed in the file LICENSE.
 
@@ -15,7 +15,7 @@
    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
+   You should have received a copy of the GNU Affero 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.
 #include <stddef.h>
 #include "bacula.h"
 
-/* 
- * Theses functions will replace open/read/write
- */
-int vtape_open(const char *pathname, int flags, ...);
-int vtape_close(int fd);
-int vtape_ioctl(int fd, ioctl_req_t request, ...);
 void vtape_debug(int level);
-ssize_t vtape_read(int fd, void *buffer, size_t count);
-ssize_t vtape_write(int fd, const void *buffer, size_t count);
 
 #ifdef USE_VTAPE
 
 #define FTAPE_MAX_DRIVE 50
 
+#define VTAPE_MAX_BLOCK 20*1024*2048;      /* 20GB */
+
 typedef enum {
    VT_READ_EOF,                 /* Need to read the entire EOF struct */
    VT_SKIP_EOF                  /* Have already read the EOF byte */
 } VT_READ_FM_MODE;
 
-class vtape {
+class vtape: public DEVICE {
 private:
    int         fd;              /* Our file descriptor */
 
-   off_t       file_block;      /* size */
-   off_t       max_block;
+   boffset_t   file_block;      /* size */
+   boffset_t   max_block;
 
-   off_t       last_FM;         /* last file mark (last file) */
-   off_t       next_FM;         /* next file mark (next file) */
-   off_t       cur_FM;          /* current file mark */
+   boffset_t   last_FM;         /* last file mark (last file) */
+   boffset_t   next_FM;         /* next file mark (next file) */
+   boffset_t   cur_FM;          /* current file mark */
 
    bool        atEOF;           /* End of file */
    bool        atEOT;           /* End of media */
@@ -95,13 +89,18 @@ public:
 
    vtape();
    ~vtape();
-
    int get_fd();
    void dump();
-   int open(const char *pathname, int flags);
-   ssize_t read(void *buffer, size_t count);
-   ssize_t write(const void *buffer, size_t count);
-   int close();
+
+   /* interface from DEVICE */
+   int d_close(int);
+   int d_open(const char *pathname, int flags);
+   int d_ioctl(int fd, ioctl_req_t request, char *mt=NULL);
+   ssize_t d_read(int, void *buffer, size_t count);
+   ssize_t d_write(int, const void *buffer, size_t count);
+
+   boffset_t lseek(DCR *dcr, off_t offset, int whence) { return -1; }
+   boffset_t lseek(int fd, off_t offset, int whence);
 
    int tape_op(struct mtop *mt_com);
    int tape_get(struct mtget *mt_com);
@@ -109,6 +108,18 @@ public:
 };
 
 
-#endif  /*!USE_VTAPE */
+#else  /*!USE_VTAPE */
+
+class vtape: public DEVICE {
+public:
+   int d_open(const char *pathname, int flags) { return -1; }
+   ssize_t d_read(void *buffer, size_t count) { return -1; }
+   ssize_t d_write(const void *buffer, size_t count) { return -1; }
+   int d_close(int) { return -1; }
+   int d_ioctl(int fd, ioctl_req_t request, char *mt=NULL) { return -1; }
+   boffset_t lseek(DCR *dcr, off_t offset, int whence) { return -1; }
+};
+
+#endif  /* USE_VTAPE */
 
 #endif /* !VTAPE_H */