2 ===================================================================
3 --- src/baconfig.h (révision 6953)
4 +++ src/baconfig.h (copie de travail)
7 /* Bacula common configuration defines */
9 +#define USE_FAKETAPE 1
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)
40 Index: src/stored/Makefile.in
41 ===================================================================
42 --- src/stored/Makefile.in (révision 6953)
43 +++ src/stored/Makefile.in (copie de travail)
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 \
54 spool.o status.o stored_conf.o wait.o
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 \
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
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
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
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)
98 int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
102 +# include "faketape.h"
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)
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;
122 /* If busy retry each second for max_open_wait seconds */
124 /* Try non-blocking open */
125 - m_fd = ::open(dev_name, mode+O_NONBLOCK);
126 + m_fd = tape_open(dev_name, mode+O_NONBLOCK);
130 @@ -391,10 +391,10 @@
131 mt_com.mt_op = MTREW;
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)) {
137 dev_errno = errno; /* set error status from rewind */
141 Dmsg2(100, "Rewind error on %s close: ERR=%s\n", print_name(),
142 be.bstrerror(dev_errno));
146 /* Got fd and rewind worked, so we must have medium in drive */
148 - m_fd = ::open(dev_name, mode); /* open normally */
150 + m_fd = tape_open(dev_name, mode); /* open normally */
154 @@ -2490,7 +2490,7 @@
158 - if (ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
159 + if (tape_ioctl(dev->fd(), MTIOCSETEOTMODEL, (caddr_t)&neof) < 0) {
161 dev->dev_errno = errno; /* save errno */
162 Mmsg2(dev->errmsg, _("Unable to set eotmodel on device %s: ERR=%s\n"),