]> git.wh0rd.org - dump.git/blobdiff - common/dumprmt.c
Fix rmtopen() extended format...
[dump.git] / common / dumprmt.c
index 4d570fdd87eabdfd5f73fa991cc360e098a104cb..f89a13de1fb60a1c5cf5fdc14b0b3bdd12a85dee 100644 (file)
@@ -41,7 +41,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: dumprmt.c,v 1.20 2002/01/25 15:08:59 stelian Exp $";
+       "$Id: dumprmt.c,v 1.23 2002/07/29 12:00:33 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -49,6 +49,7 @@ static const char rcsid[] =
 #include <sys/mtio.h>
 #include <sys/socket.h>
 #include <sys/time.h>
+#include <fcntl.h>
 #ifdef __linux__
 #include <sys/types.h>
 #ifdef HAVE_EXT2FS_EXT2_FS_H
@@ -76,6 +77,7 @@ static const char rcsid[] =
 #include <ctype.h>
 #include <errno.h>
 #include <compaterr.h>
+#include <rmtflags.h>
 #include <netdb.h>
 #include <pwd.h>
 #include <stdio.h>
@@ -132,7 +134,7 @@ rmthost(const char *host)
 }
 
 static void
-rmtconnaborted(int signo)
+rmtconnaborted(UNUSED(int signo))
 {
        msg("Lost connection to remote host.\n");
        if (errfd != -1) {
@@ -273,11 +275,17 @@ okname(const char *cp0)
 }
 
 int
-rmtopen(const char *tape, int mode)
+rmtopen(const char *tape, const int mode)
 {
        char buf[MAXPATHLEN];
-
-       (void)snprintf(buf, sizeof (buf), "O%s\n%d\n", tape, mode);
+       char *rmtflags;
+
+       rmtflags = rmtflags_tochar(mode);
+       (void)snprintf(buf, sizeof (buf), "O%s\n%d %s\n", 
+                      tape, 
+                      mode & O_ACCMODE, 
+                      rmtflags);
+       free(rmtflags);
        rmtstate = TS_OPEN;
        return (rmtcall(tape, buf));
 }
@@ -343,7 +351,7 @@ rmtstatus(void)
        if (rmtstate != TS_OPEN)
                return (NULL);
        rmtcall("status", "S\n");
-       for (i = 0, cp = (char *)&mts; i < sizeof(mts); i++)
+       for (i = 0, cp = (char *)&mts; i < (int)sizeof(mts); i++)
                *cp++ = rmtgetb();
        return (&mts);
 }
@@ -363,7 +371,7 @@ static int
 rmtcall(const char *cmd, const char *buf)
 {
 
-       if (write(tormtape, buf, strlen(buf)) != strlen(buf))
+       if (write(tormtape, buf, strlen(buf)) != (ssize_t)strlen(buf))
                rmtconnaborted(0);
        return (rmtreply(cmd));
 }