183 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: rmtops.3,v 1.14 2010/03/22 22:00:37 joerg Exp $
 | |
| .\"
 | |
| .Dd October 16, 2001
 | |
| .Dt RMTOPS 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm rmtops
 | |
| .Nd access tape drives on remote machines
 | |
| .Sh LIBRARY
 | |
| Remote Magnetic Tape Library (librmt, -lrmt)
 | |
| .Sh SYNOPSIS
 | |
| .In rmt.h
 | |
| .In sys/stat.h
 | |
| .Ft int
 | |
| .Fn isrmt "int fd"
 | |
| .Ft int
 | |
| .Fn rmtaccess "char *file" "int mode"
 | |
| .Ft int
 | |
| .Fn rmtclose "int fd"
 | |
| .Ft int
 | |
| .Fn rmtcreat "char *file" "int mode"
 | |
| .Ft int
 | |
| .Fn rmtdup "int fd"
 | |
| .Ft int
 | |
| .Fn rmtfcntl "int fd" "int cmd" "int arg"
 | |
| .Ft int
 | |
| .Fn rmtfstat "int fd" "struct stat *buf"
 | |
| .Ft int
 | |
| .Fn rmtioctl "int fd" "int request" "char *argp"
 | |
| .Ft int
 | |
| .Fn rmtisatty "int fd"
 | |
| .Ft long
 | |
| .Fn rmtlseek "int fd" "long offset" "int whence"
 | |
| .Ft int
 | |
| .Fn rmtlstat "char *file" "struct stat *buf"
 | |
| .Ft int
 | |
| .Fn rmtopen "char *file" "int flags" "int mode"
 | |
| .Ft int
 | |
| .Fn rmtread "int fd" "char *buf" "int nbytes"
 | |
| .Ft int
 | |
| .Fn rmtstat "char *file" "struct stat *buf"
 | |
| .Ft int
 | |
| .Fn rmtwrite "int fd" "char *buf" "int nbytes"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm
 | |
| library provides a simple means of transparently accessing tape drives
 | |
| on remote machines via
 | |
| .Xr rsh 1
 | |
| and
 | |
| .Xr 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.
 | |
| .Pp
 | |
| A remote tape drive file name has the form
 | |
| .Dl [user@]hostname:/dev/???
 | |
| where
 | |
| .Em system
 | |
| is the remote system,
 | |
| .Em /dev/???
 | |
| is the particular drive on the remote system (raw, blocked, rewinding,
 | |
| non-rewinding, etc.), and the optional
 | |
| .Em user
 | |
| is the login name to be used on the remote system, if different from
 | |
| the current user's login name.
 | |
| .\" .Pp
 | |
| .\" The library source code may be optionally compiled to recognize the
 | |
| .\" old
 | |
| .\" .Bx 4.2 ,
 | |
| .\" remote syntax
 | |
| .\" .sp
 | |
| .\" 	hostname[.user]:/dev/???
 | |
| .\" .sp
 | |
| .\" By default, only the first form (introduced in
 | |
| .\" .Bx 4.3 )
 | |
| .\" is recognized.
 | |
| .Pp
 | |
| For transparency, the user should include the file
 | |
| .In rmt.h ,
 | |
| which has the following defines in it:
 | |
| .Bd -literal
 | |
| #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
 | |
| .Ed
 | |
| .Pp
 | |
| This allows the programmer to use
 | |
| .Xr open 2 ,
 | |
| .Xr close 2 ,
 | |
| .Xr read 2 ,
 | |
| .Xr write 2 ,
 | |
| etc. in their normal fashion, with the
 | |
| .Nm
 | |
| routines taking care of differentiating between local and remote files.
 | |
| This file should be included
 | |
| .Em before
 | |
| including the file
 | |
| .Pa \*[Lt]sys/stat.h\*[Gt] ,
 | |
| since it redefines the identifier ``stat'' which is used to declare
 | |
| objects of type
 | |
| .Em "struct stat" .
 | |
| .Pp
 | |
| 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
 | |
| .Fn isrmt .
 | |
| .Sh ENVIRONMENT
 | |
| The RCMD_CMD environment variable can be set to the name or pathname
 | |
| of a program to use, instead of
 | |
| .Pa /usr/bin/rsh ,
 | |
| and must have the same calling conventions as
 | |
| .Xr rsh 1 .
 | |
| .Sh FILES
 | |
| .Bl -tag -width /usr/lib/librmt.a -compact
 | |
| .It Pa /usr/lib/librmt.a
 | |
| remote tape library
 | |
| .El
 | |
| .Sh DIAGNOSTICS
 | |
| Several of these routines will return \-1 and set
 | |
| .Va errno
 | |
| to EOPNOTSUPP, if they are given a remote file name or a file descriptor
 | |
| on an open remote file (e.g.,
 | |
| .Fn rmtdup ) .
 | |
| .Sh SEE ALSO
 | |
| .Xr rcp 1 ,
 | |
| .Xr rsh 1 ,
 | |
| .Xr rmt 8
 | |
| .Pp
 | |
| And the appropriate system calls in section 2.
 | |
| .\" .Sh CONFIGURATION OPTIONS
 | |
| .\" The library may be compiled to allow the use of
 | |
| .\" .Bx 4.2 -style
 | |
| .\" remote file names.  This is not recommended.
 | |
| .\" .Pp
 | |
| .\" By default, the library opens two pipes to
 | |
| .\" .Xr rsh 1 .
 | |
| .\" It may optionally be compiled to use
 | |
| .\" .Xr rexec 3 ,
 | |
| .\" instead.  Doing so requires the use of a
 | |
| .\" .Em .netrc
 | |
| .\" file in the user's home directory, or that the application designer be
 | |
| .\" willing to have
 | |
| .\" .Xr rexec 3
 | |
| .\" prompt the user for a login name and password on the remote host.
 | |
| .Sh AUTHORS
 | |
| Jeff Lee wrote the original routines for accessing tape drives via
 | |
| .Xr rmt 8 .
 | |
| .Pp
 | |
| Fred Fish redid them into a general purpose library.
 | |
| .Pp
 | |
| Arnold Robbins added the ability to specify a user name on the remote
 | |
| system, the
 | |
| .Pa \*[Lt]rmt.h\*[Gt]
 | |
| include file, this man page, cleaned up the library a little, and made
 | |
| the appropriate changes for
 | |
| .Bx 4.3 .
 | |
| .Pp
 | |
| Dan Kegel contributed the code to use the
 | |
| .Xr rexec 3
 | |
| library routine.
 | |
| .Sh BUGS
 | |
| There is no way to use remote tape drives with
 | |
| .Xr stdio 3 ,
 | |
| short of recompiling it entirely to use these routines.
 | |
| .Pp
 | |
| The
 | |
| .Xr 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.
 | 
