Fix tell support.
authorMatt Kraai <kraai@debian.org>
Mon, 21 May 2001 17:01:32 +0000 (17:01 -0000)
committerMatt Kraai <kraai@debian.org>
Mon, 21 May 2001 17:01:32 +0000 (17:01 -0000)
miscutils/mt.c
mt.c

index cd926272e9c4c1719529d526da0a80898bb3d20b..da01eb23fd9c1aaae5f616c3722c810a20c44370 100644 (file)
@@ -55,6 +55,7 @@ extern int mt_main(int argc, char **argv)
        const char *file = "/dev/tape";
        const struct mt_opcodes *code = opcodes;
        struct mtop op;
+       struct mtpos position;
        int fd, mode;
        
        if (argc < 2) {
@@ -103,8 +104,18 @@ extern int mt_main(int argc, char **argv)
        if ((fd = open(file, mode, 0)) < 0)
                perror_msg_and_die("%s", file);
 
-       if (ioctl(fd, MTIOCTOP, &op) != 0)
-               perror_msg_and_die("%s", file);
+       switch (code->value) {
+               case MTTELL:
+                       if (ioctl(fd, MTIOCPOS, &position) < 0)
+                               perror_msg_and_die("%s", file);
+                       printf ("At block %d.\n", (int) position.mt_blkno);
+                       break;
+
+               default:
+                       if (ioctl(fd, MTIOCTOP, &op) != 0)
+                               perror_msg_and_die("%s", file);
+                       break;
+       }
 
        return EXIT_SUCCESS;
 }
diff --git a/mt.c b/mt.c
index cd926272e9c4c1719529d526da0a80898bb3d20b..da01eb23fd9c1aaae5f616c3722c810a20c44370 100644 (file)
--- a/mt.c
+++ b/mt.c
@@ -55,6 +55,7 @@ extern int mt_main(int argc, char **argv)
        const char *file = "/dev/tape";
        const struct mt_opcodes *code = opcodes;
        struct mtop op;
+       struct mtpos position;
        int fd, mode;
        
        if (argc < 2) {
@@ -103,8 +104,18 @@ extern int mt_main(int argc, char **argv)
        if ((fd = open(file, mode, 0)) < 0)
                perror_msg_and_die("%s", file);
 
-       if (ioctl(fd, MTIOCTOP, &op) != 0)
-               perror_msg_and_die("%s", file);
+       switch (code->value) {
+               case MTTELL:
+                       if (ioctl(fd, MTIOCPOS, &position) < 0)
+                               perror_msg_and_die("%s", file);
+                       printf ("At block %d.\n", (int) position.mt_blkno);
+                       break;
+
+               default:
+                       if (ioctl(fd, MTIOCTOP, &op) != 0)
+                               perror_msg_and_die("%s", file);
+                       break;
+       }
 
        return EXIT_SUCCESS;
 }