/* Functions for communicating with a remote tape drive.
- Copyright (C) 1988, 1992, 1994, 1996 Free Software Foundation, Inc.
+ Copyright 1988, 1992, 1994, 1996, 1997, 1999 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
#include "system.h"
+#include "basename.h"
+#include "safe-read.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. */
counter < COMMAND_BUFFER_SIZE;
counter++, cursor++)
{
- if (full_read (READ_SIDE (handle), cursor, 1) != 1)
+ if (safe_read (READ_SIDE (handle), cursor, 1) != 1)
{
_rmt_shutdown (handle, EIO);
return 0;
{
char character;
- while (full_read (READ_SIDE (handle), &character, 1) == 1)
+ while (safe_read (READ_SIDE (handle), &character, 1) == 1)
if (character == '\n')
break;
}
return -1;
#endif
}
- remote_shell_basename = strrchr (remote_shell, '/');
- if (remote_shell_basename)
- remote_shell_basename++;
- else
- remote_shell_basename = remote_shell;
+ remote_shell_basename = base_name (remote_shell);
/* Set up the pipes for the `rsh' command, and fork. */
for (counter = 0; counter < status; counter += rlen, buffer += rlen)
{
- rlen = full_read (READ_SIDE (handle), buffer, status - counter);
+ rlen = safe_read (READ_SIDE (handle), buffer, status - counter);
if (rlen <= 0)
{
_rmt_shutdown (handle, EIO);
if (offset < 0)
*--p = '-';
+ switch (whence)
+ {
+ case SEEK_SET: whence = 0; break;
+ case SEEK_CUR: whence = 1; break;
+ case SEEK_END: whence = 2; break;
+ default: abort ();
+ }
+
sprintf (command_buffer, "L%s\n%d\n", p, whence);
if (do_command (handle, command_buffer) == -1)
for (; status > 0; status -= counter, argument += counter)
{
- counter = full_read (READ_SIDE (handle),
+ counter = safe_read (READ_SIDE (handle),
argument, (size_t) status);
if (counter <= 0)
{