]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/2.2.10-faketape.patch
ebl Add fix to avoid to expect the EndJob message with some
[bacula/bacula] / bacula / patches / testing / 2.2.10-faketape.patch
1 Index: src/baconfig.h
2 ===================================================================
3 --- src/baconfig.h      (révision 6953)
4 +++ src/baconfig.h      (copie de travail)
5 @@ -38,6 +38,7 @@
6  
7  /* Bacula common configuration defines */
8  
9 +#define USE_FAKETAPE 1
10  #undef  TRUE
11  #undef  FALSE
12  #define TRUE  1
13 @@ -106,11 +107,21 @@
14  #define CATS_IMP_EXP
15  
16  #define  OSDependentInit()
17 -#define  tape_open            open
18 -#define  tape_ioctl           ioctl
19 -#define  tape_read            ::read
20 -#define  tape_write           ::write
21 -#define  tape_close           ::close
22 +#if defined(USE_FAKETAPE)
23 +#  define  tape_open            faketape_open
24 +#  define  tape_ioctl           faketape_ioctl
25 +#  define  tape_read            faketape_read
26 +#  define  tape_write           faketape_write
27 +#  define  tape_close           faketape_close
28 +#  define  IS_TAPE(x)           S_ISREG(x)
29 +#else  /* UNIX && !FAKETAPE */
30 +#  define  tape_open            ::open
31 +#  define  tape_ioctl           ::ioctl
32 +#  define  tape_read            ::read
33 +#  define  tape_write           ::write
34 +#  define  tape_close           ::close
35 +#  define  IS_TAPE(x)           S_ISCHR(x)
36 +#endif
37  
38  #endif
39  
40 Index: src/stored/Makefile.in
41 ===================================================================
42 --- src/stored/Makefile.in      (révision 6953)
43 +++ src/stored/Makefile.in      (copie de travail)
44 @@ -20,7 +20,7 @@
45  dummy:
46  
47  # bacula-sd
48 -SDOBJS =  stored.o ansi_label.o \
49 +SDOBJS =  stored.o ansi_label.o faketape.o \
50           autochanger.o acquire.o append.o \
51           askdir.o authenticate.o \
52           block.o butil.o dev.o \
53 @@ -31,7 +31,7 @@
54           spool.o status.o stored_conf.o wait.o
55  
56  # btape
57 -TAPEOBJS = btape.o block.o butil.o dev.o device.o label.o \
58 +TAPEOBJS = btape.o block.o butil.o dev.o device.o label.o faketape.o \
59            lock.o ansi_label.o dvd.o ebcdic.o \
60            autochanger.o acquire.o mount.o record.o read_record.o \
61            reserve.o \
62 @@ -39,26 +39,26 @@
63  
64  # bls
65  BLSOBJS = bls.o block.o butil.o device.o dev.o label.o match_bsr.o \
66 -         ansi_label.o dvd.o ebcdic.o lock.o \
67 +         ansi_label.o dvd.o ebcdic.o lock.o faketape.o \
68           autochanger.o acquire.o mount.o parse_bsr.o record.o  \
69           read_record.o reserve.o scan.o stored_conf.o spool.o wait.o
70  
71  # bextract
72  BEXTOBJS = bextract.o block.o device.o dev.o label.o record.o \
73 -          ansi_label.o dvd.o ebcdic.o lock.o \
74 +          ansi_label.o dvd.o ebcdic.o lock.o faketape.o \
75            autochanger.o acquire.o mount.o match_bsr.o parse_bsr.o butil.o \
76            pythonsd.o read_record.o reserve.o \
77            scan.o stored_conf.o spool.o wait.o
78  
79  # bscan
80  SCNOBJS = bscan.o block.o device.o dev.o label.o \
81 -         ansi_label.o dvd.o ebcdic.o lock.o \
82 +         ansi_label.o dvd.o ebcdic.o lock.o faketape.o \
83           autochanger.o acquire.o mount.o record.o match_bsr.o parse_bsr.o \
84           butil.o read_record.o scan.o reserve.o stored_conf.o spool.o wait.o
85  
86  # bcopy
87  COPYOBJS = bcopy.o block.o device.o dev.o label.o \
88 -          ansi_label.o dvd.o ebcdic.o lock.o \
89 +          ansi_label.o dvd.o ebcdic.o lock.o faketape.o \
90            autochanger.o acquire.o mount.o record.o match_bsr.o parse_bsr.o \
91            butil.o read_record.o reserve.o \
92            scan.o stored_conf.o spool.o wait.o
93 Index: src/stored/stored.h
94 ===================================================================
95 --- src/stored/stored.h (révision 6953)
96 +++ src/stored/stored.h (copie de travail)
97 @@ -78,6 +78,10 @@
98  int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
99  #endif
100  
101 +#ifdef USE_FAKETAPE
102 +# include "faketape.h"
103 +#endif
104 +
105  /* Daemon globals from stored.c */
106  extern STORES *me;                    /* "Global" daemon resource */
107  extern bool forge_on;                 /* proceed inspite of I/O errors */
108 Index: src/stored/dev.c
109 ===================================================================
110 --- src/stored/dev.c    (révision 6953)
111 +++ src/stored/dev.c    (copie de travail)
112 @@ -123,7 +123,7 @@
113        }
114        if (S_ISDIR(statp.st_mode)) {
115           device->dev_type = B_FILE_DEV;
116 -      } else if (S_ISCHR(statp.st_mode)) {
117 +      } else if (IS_TAPE(statp.st_mode)) { /* char device or fake tape */
118           device->dev_type = B_TAPE_DEV;
119        } else if (S_ISFIFO(statp.st_mode)) {
120           device->dev_type = B_FIFO_DEV;
121 @@ -379,7 +379,7 @@
122     /* If busy retry each second for max_open_wait seconds */
123     for ( ;; ) {
124        /* Try non-blocking open */
125 -      m_fd = ::open(dev_name, mode+O_NONBLOCK);
126 +      m_fd = tape_open(dev_name, mode+O_NONBLOCK);
127        if (m_fd < 0) {
128           berrno be;
129           dev_errno = errno;
130 @@ -391,10 +391,10 @@
131           mt_com.mt_op = MTREW;
132           mt_com.mt_count = 1;
133           /* rewind only if dev is a tape */
134 -         if (is_tape() && (ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0)) {
135 +         if (is_tape() && (tape_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0)) {
136              berrno be;
137              dev_errno = errno;           /* set error status from rewind */
138 -            ::close(m_fd);
139 +            tape_close(m_fd);
140              clear_opened();
141              Dmsg2(100, "Rewind error on %s close: ERR=%s\n", print_name(),
142                    be.bstrerror(dev_errno));
143 @@ -404,8 +404,8 @@
144              }
145           } else {
146              /* Got fd and rewind worked, so we must have medium in drive */
147 -            ::close(m_fd);
148 -            m_fd = ::open(dev_name, mode);  /* open normally */
149 +            tape_close(m_fd);
150 +            m_fd = tape_open(dev_name, mode);  /* open normally */
151              if (m_fd < 0) {
152                 berrno be;
153                 dev_errno = errno;
154 @@ -2490,7 +2490,7 @@
155     } else {
156        neof = 1;
157     }
158 -   if (ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
159 +   if (tape_ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
160        berrno be;
161        dev->dev_errno = errno;         /* save errno */
162        Mmsg2(dev->errmsg, _("Unable to set eotmodel on device %s: ERR=%s\n"),