/* Functions for communicating with a remote tape drive.
- Copyright 1988, 92, 94, 96, 97, 99, 2000 Free Software Foundation, Inc.
+
+ Copyright 1988, 1992, 1994, 1996, 1997, 1999, 2000, 2001 Free Software
+ Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
code, courtesy of Dan Kegel. */
#include "system.h"
-
+#include "common.h"
#include <safe-read.h>
+#include <full-write.h>
/* Try hard to get EOPNOTSUPP defined. 486/ISC has it in net/errno.h,
3B2/SVR3 has it in sys/inet.h. Otherwise, like on MSDOS, use EINVAL. */
#include "rmt.h"
-char *base_name PARAMS ((char const *));
-
/* Exit status if exec errors. */
#define EXIT_ON_EXEC_ERROR 128
#if WITH_REXEC
-int rexec ();
-
/* Execute /etc/rmt as user USER on remote system HOST using rexec.
Return a file descriptor of a bidirectional socket for stdin and
stdout. If USER is zero, use the current username.
close (from_remote[remote_pipe_number][PREAD]);
close (from_remote[remote_pipe_number][PWRITE]);
-#if !MSDOS
- setuid (getuid ());
- setgid (getgid ());
-#endif
+ sys_reset_uid_gid ();
if (remote_user)
execl (remote_shell, remote_shell_basename, remote_host,
uintmax_t u = offset < 0 ? - (uintmax_t) offset : (uintmax_t) offset;
char *p = operand_buffer + sizeof operand_buffer;
+ *--p = 0;
do
*--p = '0' + (int) (u % 10);
while ((u /= 10) != 0);
: (uintmax_t) ((struct mtop *) argument)->mt_count);
char *p = operand_buffer + sizeof operand_buffer;
+ *--p = 0;
do
*--p = '0' + (int) (u % 10);
while ((u /= 10) != 0);