]> sourceware.org Git - cygwin-apps/mt.git/commitdiff
* mt.c (main): Use MTIOCTOP rather than MTTELL to fetch absolute master mt-2_5_2-release
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 26 Aug 2013 16:09:30 +0000 (16:09 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 26 Aug 2013 16:09:30 +0000 (16:09 +0000)
position.  Explain why.
* mt.cygport (VERSION): Bump.

mt.c
mt.cygport

diff --git a/mt.c b/mt.c
index dcde1f18c32a26d01f1cc5e68abe635615580ec1..e9a06dee59cf6017b4d5dd76ed27dd8436c3d281 100644 (file)
--- a/mt.c
+++ b/mt.c
@@ -456,6 +456,7 @@ main (int argc, char *argv[])
   int fd;
   struct stat st;
   struct mtop op;
+  struct mtpos pos;
 
   myname = argv[0];
 
@@ -694,11 +695,15 @@ main (int argc, char *argv[])
   /* tell block count */
   else if (!strcmp (cmd, "tell"))
     {
-      op.mt_op = MTTELL;
-      if (ioctl (fd, MTIOCTOP, &op) < 0)
+      /* Don't use MTTELL call.  It's non-standarized and returns the block
+         number as an int, which breaks 64 bit block numbers on 64 bit systems.
+        Unfortunately, following the Linux definitions, the return type in
+        struct mtpos is long, which restricts it to 32 bit on 32 bit systems
+        as well. */
+      if (ioctl (fd, MTIOCPOS, &pos) < 0)
        ret = errprintf (2, "%s: %s", path, strerror (errno));
       else
-       printf ("At block %d.\n", op.mt_count);
+       printf ("At block %d.\n", pos.mt_blkno);
     }
   /* write densities */
   else if (!strcmp (cmd, "densities"))
index baa4b8c06f71568b800b4fc12f7853e8c94ed63f..06d1ff594773ae22437003f8d6698b84b4adec69 100644 (file)
@@ -1,5 +1,5 @@
 NAME="mt"
-VERSION="2.5.1"
+VERSION="2.5.2"
 RELEASE=1
 CATEGORY="Utils"
 SUMMARY="Tool for controlling tape drives"
This page took 0.026046 seconds and 5 git commands to generate.