| RMTOPS(3) | Library Functions Manual | RMTOPS(3) | 
rmtops —
#include <rmt.h>
#include <sys/stat.h>
int
  
  isrmt(int
    fd);
int
  
  rmtaccess(char
    *file, int
  mode);
int
  
  rmtclose(int
    fd);
int
  
  rmtcreat(char
    *file, int
  mode);
int
  
  rmtdup(int
    fd);
int
  
  rmtfcntl(int
    fd, int cmd,
    int arg);
int
  
  rmtfstat(int
    fd, struct stat
    *buf);
int
  
  rmtioctl(int
    fd, int request,
    char *argp);
int
  
  rmtisatty(int
    fd);
long
  
  rmtlseek(int
    fd, long offset,
    int whence);
int
  
  rmtlstat(char
    *file, struct stat
    *buf);
int
  
  rmtopen(char
    *file, int flags,
    int mode);
int
  
  rmtread(int
    fd, char *buf,
    int nbytes);
int
  
  rmtstat(char
    *file, struct stat
    *buf);
int
  
  rmtwrite(int
    fd, char *buf,
    int nbytes);
rmtops library provides a simple means of
  transparently accessing tape drives on remote machines via
  rsh(1) and
  rmt(8). These routines are used
  like their corresponding system calls, but allow the user to open up a tape
  drive on a remote system on which he or she has an account and the appropriate
  remote permissions.
A remote tape drive file name has the form
[user@]hostname:/dev/???For transparency, the user should include the file
    <rmt.h>, which has the
    following defines in it:
#define access rmtaccess #define close rmtclose #define creat rmtcreat #define dup rmtdup #define fcntl rmtfcntl #define fstat rmtfstat #define ioctl rmtioctl #define isatty rmtisatty #define lseek rmtlseek #define lstat rmtlstat #define open rmtopen #define read rmtread #define stat rmtstat #define write rmtwrite
This allows the programmer to use
    open(2),
    close(2),
    read(2),
    write(2), etc. in their normal
    fashion, with the rmtops routines taking care of
    differentiating between local and remote files. This file should be included
    before including the file
    <sys/stat.h>, since it redefines the
    identifier ``stat'' which is used to declare objects of type
    struct stat.
The routines differentiate between local and remote file
    descriptors by adding a bias (currently 128) to the file descriptor of the
    pipe. The programmer, if he or she must know if a file is remote, should use
    isrmt().
rmtdup()).
And the appropriate system calls in section 2.
Fred Fish redid them into a general purpose library.
Arnold Robbins added the ability to specify a user name on the remote system, the <rmt.h> include file, this man page, cleaned up the library a little, and made the appropriate changes for 4.3BSD.
Dan Kegel contributed the code to use the rexec(3) library routine.
The rmt(8) protocol is not very capable. In particular, it relies on TCP/IP sockets for error free transmission, and does no data validation of its own.
| October 16, 2001 | NetBSD 9.3 |