X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=common%2Fdumprmt.c;h=d39e13432b2c9a4ca391ba9eb16c5839b544ebae;hb=c3f69f06e7c87a8e39d2bc02396fa3ba8db76e84;hp=1d49a240d5e8883aeb9c650c997d59f0e1c12195;hpb=5bf65105dbaf0bb3d6fb4ccb3d8790bda496d861;p=dump.git diff --git a/common/dumprmt.c b/common/dumprmt.c index 1d49a24..d39e134 100644 --- a/common/dumprmt.c +++ b/common/dumprmt.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: dumprmt.c,v 1.24 2003/01/10 14:42:50 stelian Exp $"; + "$Id: dumprmt.c,v 1.26 2003/03/26 10:58:22 stelian Exp $"; #endif /* not lint */ #include @@ -104,12 +104,12 @@ int rshpid = -1; 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 *)); @@ -350,7 +350,15 @@ rmtstatus(void) if (rmtstate != TS_OPEN) return (NULL); - rmtcall("status", "S\n"); + i = rmtcall("status", "S"); + if (i < 0) return NULL; + if (i != (int)sizeof(mts)) { + msg("mtget sizes different between host (%d) " + "and remote tape (%d)", sizeof(mts), i); + for ( /* empty */; i > 0; --i) + rmtgetb(); + return NULL; + } for (i = 0, cp = (char *)&mts; i < (int)sizeof(mts); i++) *cp++ = rmtgetb(); return (&mts); @@ -367,7 +375,7 @@ rmtioctl(int cmd, int count) return (rmtcall("ioctl", buf)); } -static int +static OFF_T rmtcall(const char *cmd, const char *buf) { @@ -376,7 +384,7 @@ rmtcall(const char *cmd, const char *buf) return (rmtreply(cmd)); } -static int +static OFF_T rmtreply(const char *cmd) { char *cp; @@ -401,7 +409,7 @@ rmtreply(const char *cmd) code); rmtconnaborted(0); } - return (atoi(code + 1)); + return (OFF_T)(atoll(code + 1)); } static int