Schily's LIBRARY FUNCTIONS RMTOPEN(3L)
NAME
rmtopen, rmtclose, rmtread, rmtwrite, rmtseek, rmtioctl -
operate on a connection to a remote tape server
SYNOPSIS
cc [ flag ... ] file ... -lrmt -lsocket -lnsl [ library ...
]
#include <schily/librmt.h>
#include <schily/rmtio.h>
int rmtopen(int remfd, char *pathname, int fmode);
int rmtclose(int remfd);
int rmtread(int remfd, char *buf, int count);
int rmtwrite(int remfd, char *buf, int count);
int rmtseek(int remfd, off_t offset, int whence);
int rmtioctl(int remfd, int cmd, int count);
DESCRIPTION
rmtopen()
sends an open request to the remote server, remfd is a
file descriptor previously obtained from a call to
rmtgetconn(3), pathname is a path to be opened on the
server side and fmode is the same as the third argument
for open(2). If the remote server does not support the
GNU open flag enhancements, only the lowest two bits in
the open flags can be send to the remote server.
If the open requests succeeds, rmtopen(3) takes care of
telling the remote side to switch to RMT protocol VER-
SION 1
rmtclose()
sends a close request to the remote server, remfd is a
file descriptor previously obtained from a call to
rmtgetconn(3).
rmtread()
sends a read request to the remote server, remfd is a
file descriptor previously obtained from a call to
rmtgetconn(3). The other parameters are the same as
for a local read(2) call. rmtread(3) will fail if
there was no previous successful rmtopen(3) before.
rmtwrite()
sends a write request to the remote server, remfd is a
file descriptor previously obtained from a call to
Joerg Schilling Last change: 2020/02/13 1
Schily's LIBRARY FUNCTIONS RMTOPEN(3L)
rmtgetconn(3). The other parameters are the same as
for a local write(2) call. rmtwrite(3) will fail if
there was no previous successful rmtopen(3) before.
rmtseek()
sends a seek request to the remote server, remfd is a
file descriptor previously obtained from a call to
rmtgetconn(3). The other parameters are the same as
for a local lseek(2) call. rmtseek(3) will fail if
there was no previous successful rmtopen(3) before.
rmtioctl()
sends a MTIOCTOP request to the remote server, cmd and
count are the values that should be filled into struct
mtop. See mtio(7) for more information.
RETURNS
rmtopen()
returns a value >= 0 if the remote open succeeds.
rmtclose()
returns a value >= 0 if the remote close succeeds.
rmtread()
returns the return value obtained the remote read(2)
request.
rmtwrite()
returns the return value obtained the remote write(2)
request.
rmtseek()
returns the return value obtained the remote lseek(2)
request.
rmtioctl()
returns the return value obtained the remote ioctl(f,
MTIOCTOP, struct mtop *) call.
ERRORS
All functions return -1 on error and set errno to the errno
value retrieved from the remote server.
EXAMPLES
int remfd;
char *remfn;
char host[256];
if ((remfn = rmtfilename(filename)) != NULL) {
rmthostname(host, sizeof (host), filename);
Joerg Schilling Last change: 2020/02/13 2
Schily's LIBRARY FUNCTIONS RMTOPEN(3L)
if ((remfd = rmtgetconn(host, iosize, 0)) < 0)
comerrno(EX_BAD, "Cannot get connection to '%s'.\n",
/* errno not valid !! */ host);
}
if (rmtopen(remfd, remfn, mode) < 0)
comerr("Cannot open '%s'.\n", remfn);
if (rmtread(remfd, buf, sizeof(buf)) < 0)
comerr("Read error on '%s'.\n", remfn);
rmtclose(remfd);
ENVIRONMENT
SEE ALSO
rmt(1), rsh(1), ssh(1), rcmd(3), rmtinit(3), rmtdebug(3),
rmtrmt(3), rmtrsh(3), rmthostname(3), rmtfilename(3),
rmtgetconn(3), rmtopen(3), rmtioctl(3), rmtclose(3),
rmtread(3), rmtwrite(3), rmtseek(3), rmtxstatus(3),
rmtstatus(3), _mtg2rmtg(3), _rmtg2mtg(3), errmsgno(3),
mtio(7)
DIAGNOSTICS
NOTES
While all other known rmt implementations limit the size of
a single rmt command to 64 bytes, this implementation limits
all standard command lines to 80 bytes and the file name to
4096 bytes.
Note that this may cause problems if the remote rmt server
implementation is directly derived from the historic BSD
server code. This is true for all BSD systems, for SunOS up
to 5.9 and even for the GNU rmt server.
As some of the other rmt servers do not even implement bound
checking, be prepared that other server implementations may
dump core or at least stop honoring the rmt protocol.
If you like to use long file names, make sure that you also
use the schily rmt server.
BUGS
If local and remote errno values do not match, programs may
get confused.
AUTHOR
librmt has been written in 1990 by Joerg Schilling. In
1995, support for RMT VERSION 1 has been added. librmt is
still maintained by Joerg Schilling.
Joerg Schilling Last change: 2020/02/13 3
Schily's LIBRARY FUNCTIONS RMTOPEN(3L)
Joerg Schilling
D-13353 Berlin
Germany
Mail bugs and suggestions to:
joerg.schilling@fokus.fraunhofer.de or joerg@schily.net
Joerg Schilling Last change: 2020/02/13 4
Man(1) output converted with
man2html
Schily's Home