]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/t.c
ebl update
[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    /* write something */
60    printf("\n*** write something (3 writes)\n");
61    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
62    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
63    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
64    print_pos();
65
66    /* write EOF */
67    printf("\n*** WEOF\n");
68    mt_com.mt_op = MTWEOF;
69    mt_com.mt_count = 1;
70    r1 = ioctl(fd, MTIOCTOP, &mt_com);
71    print_pos();
72
73    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
74    /* write EOF */
75    printf("\n*** WEOF\n");
76    mt_com.mt_op = MTWEOF;
77    mt_com.mt_count = 1;
78    r1 = ioctl(fd, MTIOCTOP, &mt_com);
79    print_pos();
80
81    /* rewind */
82    printf("\n*** rewind\n");
83    mt_com.mt_count = 1;
84    mt_com.mt_op = MTREW;
85    r1 = ioctl(fd, MTIOCTOP, &mt_com);
86    print_pos();
87
88    /* FSR */
89    printf("\n*** fsr");
90    mt_com.mt_op = MTFSR;
91    mt_com.mt_count = 1;
92    r1 = ioctl(fd, MTIOCTOP, &mt_com);
93    printf(" r=%i\n", r1);
94    print_pos();
95    /* FSR */
96    printf("\n*** fsr");
97    mt_com.mt_op = MTFSR;
98    mt_com.mt_count = 1;
99    r1 = ioctl(fd, MTIOCTOP, &mt_com);
100    printf(" r=%i\n", r1);
101    print_pos();
102    /* FSR */
103    printf("\n*** fsr");
104    mt_com.mt_op = MTFSR;
105    mt_com.mt_count = 1;
106    r1 = ioctl(fd, MTIOCTOP, &mt_com);
107    printf(" r=%i\n", r1);
108    print_pos();
109    /* FSR */
110    printf("\n*** fsr");
111    mt_com.mt_op = MTFSR;
112    mt_com.mt_count = 1;
113    r1 = ioctl(fd, MTIOCTOP, &mt_com);
114    printf(" r=%i\n", r1);
115    print_pos();
116    /* FSR */
117    printf("\n*** fsr");
118    mt_com.mt_op = MTFSR;
119    mt_com.mt_count = 1;
120    r1 = ioctl(fd, MTIOCTOP, &mt_com);
121    printf(" r=%i\n", r1);
122    print_pos();
123    exit(0);
124
125
126    /* write a second file */
127    printf("\n*** write something\n");
128    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
129    print_pos();
130
131     /* BSF */
132    printf("\n*** bsf\n");
133    mt_com.mt_op = MTBSF;
134    mt_com.mt_count = 1;
135    r1 = ioctl(fd, MTIOCTOP, &mt_com);
136    print_pos();
137    
138    /* rewind */
139    printf("\n*** rewind\n");
140    mt_com.mt_count = 1;
141    mt_com.mt_op = MTREW;
142    r1 = ioctl(fd, MTIOCTOP, &mt_com);
143
144    /* read something with error */
145    printf("\n*** read c=%s len=%i\n", c, r1);
146    errno=0;
147    r1 = read(fd, c, 2);
148    c[r1] = 0;
149    perror("");
150    print_pos();
151
152    /* read something */
153    printf("\n*** read c=%s len=%i\n", c, r1);
154    errno=0;
155    r1 = read(fd, c, 200);
156    c[r1] = 0;
157    print_pos();
158
159    /* write something */
160    printf("\n*** write something\n");
161    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
162    print_pos();
163    
164    /* rewind */
165    printf("\n*** rewind\n");
166    mt_com.mt_count = 1;
167    mt_com.mt_op = MTREW;
168    r1 = ioctl(fd, MTIOCTOP, &mt_com);
169    r1 = read(fd, c, 200);
170    c[r1] = '\0';
171    printf("\n*** read c=%s len=%i\n", c, r1);
172    r1 = read(fd, c, 200);
173    c[r1] = '\0';
174    printf("\n*** read c=%s len=%i\n", c, r1);
175  
176    /* write EOF */
177    printf("\n*** WEOF");
178    mt_com.mt_op = MTWEOF;
179    mt_com.mt_count = 1;
180    r1 = ioctl(fd, MTIOCTOP, &mt_com);
181    printf(" r=%i\n", r1);
182    print_pos();
183
184    /* FSF */
185    printf("\n*** fsf x1");
186    mt_com.mt_op = MTFSF;
187    mt_com.mt_count = 1;
188    r1 = ioctl(fd, MTIOCTOP, &mt_com);
189    printf(" r=%i\n", r1);
190    print_pos();
191
192    /* write something */
193    printf("\n*** write something\n");
194    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
195    print_pos();
196
197    /* FSF */
198    printf("\n*** fsf");
199    mt_com.mt_op = MTFSF;
200    mt_com.mt_count = 1;
201    r1 = ioctl(fd, MTIOCTOP, &mt_com);
202    printf(" r=%i\n", r1);
203    print_pos();
204
205    /* WEOF */
206    printf("\n*** weof 3");
207    mt_com.mt_op = MTWEOF;
208    mt_com.mt_count = 3;
209    r1 = ioctl(fd, MTIOCTOP, &mt_com);
210    printf(" r=%i\n", r1);
211    print_pos();
212
213    /* rewind */
214    printf("\n*** rewind\n");
215    mt_com.mt_count = 1;
216    mt_com.mt_op = MTREW;
217    r1 = ioctl(fd, MTIOCTOP, &mt_com);
218    print_pos();
219
220    /* FSR */
221    printf("\n*** fsr x10");
222    mt_com.mt_op = MTFSR;
223    mt_com.mt_count = 10;
224    r1 = ioctl(fd, MTIOCTOP, &mt_com);
225    printf(" r=%i\n", r1);
226    print_pos();
227
228    /* eom */
229    printf("\n*** goto eom");
230    mt_com.mt_count = 1;
231    mt_com.mt_op = MTEOM;
232    r1 = ioctl(fd, MTIOCTOP, &mt_com);
233    printf(" r=%i\n", r1);
234    print_pos();
235
236    /* fsr */
237    printf("\n*** fsr");
238    mt_com.mt_count = 1;
239    mt_com.mt_op = MTFSR;
240    r1 = ioctl(fd, MTIOCTOP, &mt_com);
241    printf(" r=%i\n", r1);
242    print_pos();
243
244    /* write something */
245    printf("\n*** write something\n");
246    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
247    print_pos();
248    
249    /* rewind */
250    printf("\n*** rewind");
251    mt_com.mt_count = 1;
252    mt_com.mt_op = MTREW;
253    r1 = ioctl(fd, MTIOCTOP, &mt_com);
254    printf(" r=%i\n", r1);
255
256    /* FSF */
257    printf("\n*** fsf x2");
258    mt_com.mt_op = MTFSF;
259    mt_com.mt_count = 2;
260    r1 = ioctl(fd, MTIOCTOP, &mt_com);
261    printf(" r=%i\n", r1);
262    print_pos();
263
264    printf("\n*** fsr");
265    mt_com.mt_op = MTFSR;
266    mt_com.mt_count = 1;
267    r1 = ioctl(fd, MTIOCTOP, &mt_com);
268    printf(" r=%i\n", r1);
269    print_pos();
270
271    /* write something */
272    printf("\n*** write something\n");
273    write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
274    print_pos();
275
276    printf("\n*** bsf x2");
277    mt_com.mt_op = MTBSF;
278    mt_com.mt_count = 2;
279    r1 = ioctl(fd, MTIOCTOP, &mt_com);
280    printf(" r=%i\n", r1);
281    print_pos();
282
283    printf("\n*** bsf x10");
284    mt_com.mt_op = MTBSF;
285    mt_com.mt_count = 10;
286    r1 = ioctl(fd, MTIOCTOP, &mt_com);
287    printf(" r=%i\n", r1);
288    print_pos();
289
290    printf("\n*** eom");
291    mt_com.mt_op = MTEOM;
292    mt_com.mt_count = 1;
293    r1 = ioctl(fd, MTIOCTOP, &mt_com);
294    printf(" r=%i\n", r1);
295    print_pos();
296
297    printf("\n*** bsr x10");
298    mt_com.mt_op = MTBSR;
299    mt_com.mt_count = 10;
300    r1 = ioctl(fd, MTIOCTOP, &mt_com);
301    printf(" r=%i\n", r1);
302    print_pos();
303
304    printf("\n*** eom");
305    mt_com.mt_op = MTEOM;
306    mt_com.mt_count = 1;
307    r1 = ioctl(fd, MTIOCTOP, &mt_com);
308    printf(" r=%i\n", r1);
309    print_pos();
310    
311    printf("\n*** fsr");
312    mt_com.mt_op = MTFSR;
313    mt_com.mt_count = 1;
314    r1 = ioctl(fd, MTIOCTOP, &mt_com);
315    printf(" r=%i\n", r1);
316    print_pos();
317
318    close(fd);
319    return(0);
320 }