]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/t.c
ebl Add fix to avoid to expect the EndJob message with some
[bacula/bacula] / bacula / patches / testing / t.c
1 #include <sys/mtio.h>
2 #include <stdio.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <errno.h>
7
8 #ifndef FTAPE
9 #include "faketape.h"
10
11 #define write   faketape_write
12 #define open    faketape_open
13 #define read    faketape_read
14 #define close   faketape_close
15 #define ioctl   faketape_ioctl
16 #define debug(x) faketape_debug(x)
17 #else
18 #define debug(x) 
19 #endif
20
21 static int fd;
22 void print_pos()
23 {
24    struct mtget mt_get;
25    ioctl(fd, MTIOCGET, &mt_get);
26    printf("*** file:block %i:%i BOT=%u EOD=%u EOF=%u\n", 
27           mt_get.mt_fileno, mt_get.mt_blkno, 
28           GMT_BOT(mt_get.mt_gstat) != 0,
29           GMT_EOD(mt_get.mt_gstat) != 0,
30           GMT_EOF(mt_get.mt_gstat) != 0
31       );
32 }
33
34 int main(int argc, char **argv)
35 {
36    int r1;
37    char c[200];
38    struct mtop mt_com;
39    
40    if (argc > 1) {
41       debug(atoi(argv[1]));
42    }
43
44    fd  = open("/dev/lto2", O_CREAT | O_RDWR);
45    if (fd < 0) {
46       perror("Can't open fd");
47       exit(1);
48    }
49
50    print_pos();
51
52    /* rewind */
53    printf("\n*** rewind\n");
54    mt_com.mt_count = 1;
55    mt_com.mt_op = MTREW;
56    r1 = ioctl(fd, MTIOCTOP, &mt_com);
57    print_pos();
58
59    /* read something */
60    errno=0;
61    r1 = read(fd, c, 200);
62    c[r1] = 0;
63    printf("\n*** read c=%s len=%i\n", c, r1);
64    print_pos();
65
66    /* read something */
67    errno=0;
68    r1 = read(fd, c, 200);
69    c[r1] = 0;
70    printf("\n*** read c=%s len=%i\n", c, r1);
71    print_pos();
72
73    /* read something */
74    errno=0;
75    r1 = read(fd, c, 200);
76    c[r1] = 0;
77    printf("\n*** read c=%s len=%i\n", c, r1);
78    print_pos();
79
80    /* read something */
81    errno=0;
82    r1 = read(fd, c, 200);
83    c[r1] = 0;
84    printf("\n*** read c=%s len=%i\n", c, r1);
85    print_pos();
86
87    /* read something */
88    errno=0;
89    r1 = read(fd, c, 200);
90    c[r1] = 0;
91    printf("\n*** read c=%s len=%i\n", c, r1);
92    print_pos();
93
94    /* read something */
95    errno=0;
96    r1 = read(fd, c, 200);
97    c[r1] = 0;
98    printf("\n*** read c=%s len=%i\n", c, r1);
99    print_pos();
100
101    exit(0);
102
103    /* write something */
104    printf("\n*** write something (3 writes)\n");
105    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
106    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
107    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
108    print_pos();
109
110    /* write EOF */
111    printf("\n*** WEOF\n");
112    mt_com.mt_op = MTWEOF;
113    mt_com.mt_count = 1;
114    r1 = ioctl(fd, MTIOCTOP, &mt_com);
115    print_pos();
116
117    write(fd, "12345", strlen("12345")+1);
118    write(fd, "678910", strlen("678910")+1);
119
120    /* write EOF */
121    printf("\n*** WEOF\n");
122    mt_com.mt_op = MTWEOF;
123    mt_com.mt_count = 1;
124    r1 = ioctl(fd, MTIOCTOP, &mt_com);
125    print_pos();
126
127    
128
129    /* BSF */
130    printf("\n*** bsf\n");
131    mt_com.mt_count = 1;
132    mt_com.mt_op = MTBSF;
133    r1 = ioctl(fd, MTIOCTOP, &mt_com);
134    print_pos();
135
136    /* BSR */
137    printf("\n*** bsr\n");
138    mt_com.mt_count = 1;
139    mt_com.mt_op = MTBSR;
140    r1 = ioctl(fd, MTIOCTOP, &mt_com);
141    print_pos();
142
143    /* read something */
144    errno=0;
145    r1 = read(fd, c, 200);
146    c[r1] = 0;
147    printf("\n*** read c=%s len=%i\n", c, r1);
148    print_pos();
149
150    /* read something */
151    errno=0;
152    r1 = read(fd, c, 200);
153    c[r1] = 0;
154    printf("\n*** read c=%s len=%i\n", c, r1);
155    print_pos();
156    exit(0);
157
158    /* FSR */
159    printf("\n*** fsr");
160    mt_com.mt_op = MTFSR;
161    mt_com.mt_count = 1;
162    r1 = ioctl(fd, MTIOCTOP, &mt_com);
163    printf(" r=%i\n", r1);
164    print_pos();
165    /* FSR */
166    printf("\n*** fsr");
167    mt_com.mt_op = MTFSR;
168    mt_com.mt_count = 1;
169    r1 = ioctl(fd, MTIOCTOP, &mt_com);
170    printf(" r=%i\n", r1);
171    print_pos();
172    /* FSR */
173    printf("\n*** fsr");
174    mt_com.mt_op = MTFSR;
175    mt_com.mt_count = 1;
176    r1 = ioctl(fd, MTIOCTOP, &mt_com);
177    printf(" r=%i\n", r1);
178    print_pos();
179    /* FSR */
180    printf("\n*** fsr");
181    mt_com.mt_op = MTFSR;
182    mt_com.mt_count = 1;
183    r1 = ioctl(fd, MTIOCTOP, &mt_com);
184    printf(" r=%i\n", r1);
185    print_pos();
186    /* FSR */
187    printf("\n*** fsr");
188    mt_com.mt_op = MTFSR;
189    mt_com.mt_count = 1;
190    r1 = ioctl(fd, MTIOCTOP, &mt_com);
191    printf(" r=%i\n", r1);
192    print_pos();
193    exit(0);
194
195
196    /* write a second file */
197    printf("\n*** write something\n");
198    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
199    print_pos();
200
201     /* BSF */
202    printf("\n*** bsf\n");
203    mt_com.mt_op = MTBSF;
204    mt_com.mt_count = 1;
205    r1 = ioctl(fd, MTIOCTOP, &mt_com);
206    print_pos();
207    
208    /* rewind */
209    printf("\n*** rewind\n");
210    mt_com.mt_count = 1;
211    mt_com.mt_op = MTREW;
212    r1 = ioctl(fd, MTIOCTOP, &mt_com);
213
214    /* read something with error */
215    printf("\n*** read c=%s len=%i\n", c, r1);
216    errno=0;
217    r1 = read(fd, c, 2);
218    c[r1] = 0;
219    perror("");
220    print_pos();
221
222    /* read something */
223    printf("\n*** read c=%s len=%i\n", c, r1);
224    errno=0;
225    r1 = read(fd, c, 200);
226    c[r1] = 0;
227    print_pos();
228
229    /* write something */
230    printf("\n*** write something\n");
231    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
232    print_pos();
233    
234    /* rewind */
235    printf("\n*** rewind\n");
236    mt_com.mt_count = 1;
237    mt_com.mt_op = MTREW;
238    r1 = ioctl(fd, MTIOCTOP, &mt_com);
239    r1 = read(fd, c, 200);
240    c[r1] = '\0';
241    printf("\n*** read c=%s len=%i\n", c, r1);
242    r1 = read(fd, c, 200);
243    c[r1] = '\0';
244    printf("\n*** read c=%s len=%i\n", c, r1);
245  
246    /* write EOF */
247    printf("\n*** WEOF");
248    mt_com.mt_op = MTWEOF;
249    mt_com.mt_count = 1;
250    r1 = ioctl(fd, MTIOCTOP, &mt_com);
251    printf(" r=%i\n", r1);
252    print_pos();
253
254    /* FSF */
255    printf("\n*** fsf x1");
256    mt_com.mt_op = MTFSF;
257    mt_com.mt_count = 1;
258    r1 = ioctl(fd, MTIOCTOP, &mt_com);
259    printf(" r=%i\n", r1);
260    print_pos();
261
262    /* write something */
263    printf("\n*** write something\n");
264    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
265    print_pos();
266
267    /* FSF */
268    printf("\n*** fsf");
269    mt_com.mt_op = MTFSF;
270    mt_com.mt_count = 1;
271    r1 = ioctl(fd, MTIOCTOP, &mt_com);
272    printf(" r=%i\n", r1);
273    print_pos();
274
275    /* WEOF */
276    printf("\n*** weof 3");
277    mt_com.mt_op = MTWEOF;
278    mt_com.mt_count = 3;
279    r1 = ioctl(fd, MTIOCTOP, &mt_com);
280    printf(" r=%i\n", r1);
281    print_pos();
282
283    /* rewind */
284    printf("\n*** rewind\n");
285    mt_com.mt_count = 1;
286    mt_com.mt_op = MTREW;
287    r1 = ioctl(fd, MTIOCTOP, &mt_com);
288    print_pos();
289
290    /* FSR */
291    printf("\n*** fsr x10");
292    mt_com.mt_op = MTFSR;
293    mt_com.mt_count = 10;
294    r1 = ioctl(fd, MTIOCTOP, &mt_com);
295    printf(" r=%i\n", r1);
296    print_pos();
297
298    /* eom */
299    printf("\n*** goto eom");
300    mt_com.mt_count = 1;
301    mt_com.mt_op = MTEOM;
302    r1 = ioctl(fd, MTIOCTOP, &mt_com);
303    printf(" r=%i\n", r1);
304    print_pos();
305
306    /* fsr */
307    printf("\n*** fsr");
308    mt_com.mt_count = 1;
309    mt_com.mt_op = MTFSR;
310    r1 = ioctl(fd, MTIOCTOP, &mt_com);
311    printf(" r=%i\n", r1);
312    print_pos();
313
314    /* write something */
315    printf("\n*** write something\n");
316    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
317    print_pos();
318    
319    /* rewind */
320    printf("\n*** rewind");
321    mt_com.mt_count = 1;
322    mt_com.mt_op = MTREW;
323    r1 = ioctl(fd, MTIOCTOP, &mt_com);
324    printf(" r=%i\n", r1);
325
326    /* FSF */
327    printf("\n*** fsf x2");
328    mt_com.mt_op = MTFSF;
329    mt_com.mt_count = 2;
330    r1 = ioctl(fd, MTIOCTOP, &mt_com);
331    printf(" r=%i\n", r1);
332    print_pos();
333
334    printf("\n*** fsr");
335    mt_com.mt_op = MTFSR;
336    mt_com.mt_count = 1;
337    r1 = ioctl(fd, MTIOCTOP, &mt_com);
338    printf(" r=%i\n", r1);
339    print_pos();
340
341    /* write something */
342    printf("\n*** write something\n");
343    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
344    print_pos();
345
346    printf("\n*** bsf x2");
347    mt_com.mt_op = MTBSF;
348    mt_com.mt_count = 2;
349    r1 = ioctl(fd, MTIOCTOP, &mt_com);
350    printf(" r=%i\n", r1);
351    print_pos();
352
353    printf("\n*** bsf x10");
354    mt_com.mt_op = MTBSF;
355    mt_com.mt_count = 10;
356    r1 = ioctl(fd, MTIOCTOP, &mt_com);
357    printf(" r=%i\n", r1);
358    print_pos();
359
360    printf("\n*** eom");
361    mt_com.mt_op = MTEOM;
362    mt_com.mt_count = 1;
363    r1 = ioctl(fd, MTIOCTOP, &mt_com);
364    printf(" r=%i\n", r1);
365    print_pos();
366
367    printf("\n*** bsr x10");
368    mt_com.mt_op = MTBSR;
369    mt_com.mt_count = 10;
370    r1 = ioctl(fd, MTIOCTOP, &mt_com);
371    printf(" r=%i\n", r1);
372    print_pos();
373
374    printf("\n*** eom");
375    mt_com.mt_op = MTEOM;
376    mt_com.mt_count = 1;
377    r1 = ioctl(fd, MTIOCTOP, &mt_com);
378    printf(" r=%i\n", r1);
379    print_pos();
380    
381    printf("\n*** fsr");
382    mt_com.mt_op = MTFSR;
383    mt_com.mt_count = 1;
384    r1 = ioctl(fd, MTIOCTOP, &mt_com);
385    printf(" r=%i\n", r1);
386    print_pos();
387
388    close(fd);
389    return(0);
390 }