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)
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
34 int main(int argc, char **argv)
44 fd = open("/dev/lto2", O_CREAT | O_RDWR);
46 perror("Can't open fd");
53 printf("\n*** rewind\n");
56 r1 = ioctl(fd, MTIOCTOP, &mt_com);
61 r1 = read(fd, c, 200);
63 printf("\n*** read c=%s len=%i\n", c, r1);
68 r1 = read(fd, c, 200);
70 printf("\n*** read c=%s len=%i\n", c, r1);
75 r1 = read(fd, c, 200);
77 printf("\n*** read c=%s len=%i\n", c, r1);
82 r1 = read(fd, c, 200);
84 printf("\n*** read c=%s len=%i\n", c, r1);
89 r1 = read(fd, c, 200);
91 printf("\n*** read c=%s len=%i\n", c, r1);
96 r1 = read(fd, c, 200);
98 printf("\n*** read c=%s len=%i\n", c, r1);
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);
111 printf("\n*** WEOF\n");
112 mt_com.mt_op = MTWEOF;
114 r1 = ioctl(fd, MTIOCTOP, &mt_com);
117 write(fd, "12345", strlen("12345")+1);
118 write(fd, "678910", strlen("678910")+1);
121 printf("\n*** WEOF\n");
122 mt_com.mt_op = MTWEOF;
124 r1 = ioctl(fd, MTIOCTOP, &mt_com);
130 printf("\n*** bsf\n");
132 mt_com.mt_op = MTBSF;
133 r1 = ioctl(fd, MTIOCTOP, &mt_com);
137 printf("\n*** bsr\n");
139 mt_com.mt_op = MTBSR;
140 r1 = ioctl(fd, MTIOCTOP, &mt_com);
145 r1 = read(fd, c, 200);
147 printf("\n*** read c=%s len=%i\n", c, r1);
152 r1 = read(fd, c, 200);
154 printf("\n*** read c=%s len=%i\n", c, r1);
160 mt_com.mt_op = MTFSR;
162 r1 = ioctl(fd, MTIOCTOP, &mt_com);
163 printf(" r=%i\n", r1);
167 mt_com.mt_op = MTFSR;
169 r1 = ioctl(fd, MTIOCTOP, &mt_com);
170 printf(" r=%i\n", r1);
174 mt_com.mt_op = MTFSR;
176 r1 = ioctl(fd, MTIOCTOP, &mt_com);
177 printf(" r=%i\n", r1);
181 mt_com.mt_op = MTFSR;
183 r1 = ioctl(fd, MTIOCTOP, &mt_com);
184 printf(" r=%i\n", r1);
188 mt_com.mt_op = MTFSR;
190 r1 = ioctl(fd, MTIOCTOP, &mt_com);
191 printf(" r=%i\n", r1);
196 /* write a second file */
197 printf("\n*** write something\n");
198 write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
202 printf("\n*** bsf\n");
203 mt_com.mt_op = MTBSF;
205 r1 = ioctl(fd, MTIOCTOP, &mt_com);
209 printf("\n*** rewind\n");
211 mt_com.mt_op = MTREW;
212 r1 = ioctl(fd, MTIOCTOP, &mt_com);
214 /* read something with error */
215 printf("\n*** read c=%s len=%i\n", c, r1);
223 printf("\n*** read c=%s len=%i\n", c, r1);
225 r1 = read(fd, c, 200);
229 /* write something */
230 printf("\n*** write something\n");
231 write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
235 printf("\n*** rewind\n");
237 mt_com.mt_op = MTREW;
238 r1 = ioctl(fd, MTIOCTOP, &mt_com);
239 r1 = read(fd, c, 200);
241 printf("\n*** read c=%s len=%i\n", c, r1);
242 r1 = read(fd, c, 200);
244 printf("\n*** read c=%s len=%i\n", c, r1);
247 printf("\n*** WEOF");
248 mt_com.mt_op = MTWEOF;
250 r1 = ioctl(fd, MTIOCTOP, &mt_com);
251 printf(" r=%i\n", r1);
255 printf("\n*** fsf x1");
256 mt_com.mt_op = MTFSF;
258 r1 = ioctl(fd, MTIOCTOP, &mt_com);
259 printf(" r=%i\n", r1);
262 /* write something */
263 printf("\n*** write something\n");
264 write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
269 mt_com.mt_op = MTFSF;
271 r1 = ioctl(fd, MTIOCTOP, &mt_com);
272 printf(" r=%i\n", r1);
276 printf("\n*** weof 3");
277 mt_com.mt_op = MTWEOF;
279 r1 = ioctl(fd, MTIOCTOP, &mt_com);
280 printf(" r=%i\n", r1);
284 printf("\n*** rewind\n");
286 mt_com.mt_op = MTREW;
287 r1 = ioctl(fd, MTIOCTOP, &mt_com);
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);
299 printf("\n*** goto eom");
301 mt_com.mt_op = MTEOM;
302 r1 = ioctl(fd, MTIOCTOP, &mt_com);
303 printf(" r=%i\n", r1);
309 mt_com.mt_op = MTFSR;
310 r1 = ioctl(fd, MTIOCTOP, &mt_com);
311 printf(" r=%i\n", r1);
314 /* write something */
315 printf("\n*** write something\n");
316 write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
320 printf("\n*** rewind");
322 mt_com.mt_op = MTREW;
323 r1 = ioctl(fd, MTIOCTOP, &mt_com);
324 printf(" r=%i\n", r1);
327 printf("\n*** fsf x2");
328 mt_com.mt_op = MTFSF;
330 r1 = ioctl(fd, MTIOCTOP, &mt_com);
331 printf(" r=%i\n", r1);
335 mt_com.mt_op = MTFSR;
337 r1 = ioctl(fd, MTIOCTOP, &mt_com);
338 printf(" r=%i\n", r1);
341 /* write something */
342 printf("\n*** write something\n");
343 write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1);
346 printf("\n*** bsf x2");
347 mt_com.mt_op = MTBSF;
349 r1 = ioctl(fd, MTIOCTOP, &mt_com);
350 printf(" r=%i\n", r1);
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);
361 mt_com.mt_op = MTEOM;
363 r1 = ioctl(fd, MTIOCTOP, &mt_com);
364 printf(" r=%i\n", r1);
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);
375 mt_com.mt_op = MTEOM;
377 r1 = ioctl(fd, MTIOCTOP, &mt_com);
378 printf(" r=%i\n", r1);
382 mt_com.mt_op = MTFSR;
384 r1 = ioctl(fd, MTIOCTOP, &mt_com);
385 printf(" r=%i\n", r1);