#ifndef lint
static const char rcsid[] =
- "$Id: dumprmt.c,v 1.22 2002/07/19 14:57:39 stelian Exp $";
+ "$Id: dumprmt.c,v 1.25 2003/02/12 11:02:29 stelian Exp $";
#endif /* not lint */
#include <config.h>
#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
#include <ctype.h>
#include <errno.h>
#include <compaterr.h>
+#include <rmtflags.h>
#include <netdb.h>
#include <pwd.h>
#include <stdio.h>
static const char *rmtpeer = 0;
static int okname __P((const char *));
-static int rmtcall __P((const char *, const char *));
+static OFF_T rmtcall __P((const char *, const char *));
static void rmtconnaborted __P((int));
static int rmtgetb __P((void));
static int rmtgetconn __P((void));
static void rmtgets __P((char *, size_t));
-static int rmtreply __P((const char *));
+static OFF_T rmtreply __P((const char *));
static int piped_child __P((const char **command));
#ifdef KERBEROS
int krcmd __P((char **, int /*u_short*/, char *, char *, int *, char *));
}
int
-rmtopen(const char *tape, const char *mode)
+rmtopen(const char *tape, const int mode)
{
char buf[MAXPATHLEN];
-
- (void)snprintf(buf, sizeof (buf), "O%s\n%s\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));
}
return (rmtreply("write"));
}
-int
-rmtseek(int offset, int pos)
+OFF_T
+rmtseek(OFF_T offset, int pos)
{
char line[80];
- (void)snprintf(line, sizeof (line), "L%d\n%d\n", offset, pos);
+ (void)snprintf(line, sizeof (line), "L%lld\n%d\n", (long long)offset, pos);
return (rmtcall("seek", line));
}
return (rmtcall("ioctl", buf));
}
-static int
+static OFF_T
rmtcall(const char *cmd, const char *buf)
{
return (rmtreply(cmd));
}
-static int
+static OFF_T
rmtreply(const char *cmd)
{
char *cp;
code);
rmtconnaborted(0);
}
- return (atoi(code + 1));
+ return (OFF_T)(atoll(code + 1));
}
static int