SYNOPSIS

       cc [ flag ... ] file ...  -lrmt -lsocket -lnsl [ library ... ]

       #include <librmt.h>

       void rmtinit(errmsgn, eexit)
            int     (*errmsgn) (int, const char *, ...);
            void    (*eexit)   (int);

       int rmtdebug(dlevel)
            int     dlevel;

       char *rmtfilename(name)
            char    *name;

       char *rmthostname(hostname, hnsize, rmtspec)
            char    *hostname;
            int     hnsize;
            char    *rmtspec;

       int rmtgetconn(host, trsize, excode)
            char    *host;
            int     trsize;
            int     excode;


DESCRIPTION

       rmtinit()
              Is an optional function that allows to set  up  a  function  for
              error  printing and a function to be called to exit the program.
              If rmtinit() is not called or any of the  function  pointers  is
              NULL,  the  appropriate  default  function is used instead.  The
              supplied error printing function needs  to  be  compatible  with
              errmsgno(3)  and the supplied exit function needs to be compati-
              ble with exit(3).

       rmtdebug()
              allows to set the debug level for the library code. The  default
              debug level is 0 and does not print debug messages.

       rmtfilename()
              is  given  a filename that may be either in remote file syntax (
              hostname:filename or user@hostname:filename ) or  not.   If  the
              argument turns out to be in remote file syntax, a pointer to the
              filename part is returned.

       rmthostname()
              This function copies the user/host part of rmtspec which  should
              be  in  remote  file  syntax.  The first argument is a character
              array that should be large enough to hold the user/host part  of
              rmtspec.   The  second  argument  is  the  size of the character
              array.  The third argument is a string in remote file syntax.
              returns the old debug level.

       rmtfilename()
              returns the filename part of the argument string or NULL in case
              the argument turns out to be not in remote file syntax.

       rmthostname()
              returns a pointer to the first argument or NULL in case the rmt-
              spec argument turns out to be not in remote file syntax.

       rmtgetconn()
              return a file descriptor which is suitable to be used  as  first
              argument for functions like rmtopen() or rmtwrite().  If rmtget-
              conn() fails to set up a connection, -1 is returned.  If rmtget-
              conn() is unable to find the port number for shell/tcp, the cur-
              rent uid has no entry in  the  passwd  file  or  the  user  name
              includes  illegal  characters,  exit() is called.  If you do not
              like rmtgetconn() to exit in this case,  call  rmtinit()  before
              and  install  a  non exiting function as exit() handler; rmtget-
              conn() then will return -2 after this function did return.



EXAMPLES


       int  remfd;
       char *remfn;
       char host[256];

       if ((remfn = rmtfilename(filename)) != NULL) {
            rmthostname(host, sizeof (host), filename);

            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

       RSH    If the RSH environment is present, the  remote  connection  will
              not be created via rcmd(3) but by calling the program pointed to
              by RSH.  Use e.g.  RSH=/usr/bin/ssh to  create  a  secure  shell
              connection.

       RMT    If  the  RMT environment is present, the remote tape server will


BUGS

       For now (late 2002), we know that the following programs are broken and
       do not implement signal handling correctly:

       rsh    on SunOS-5.0...SunOS-5.9

       ssh    from ssh.com

       ssh    from openssh.org

       Sun already did accept a bug report for rsh(1).  Openssh.org accepted a
       bug for their implementation of ssh(1).

       If you use rmtgetconn() to create a remote connection  via  an  unfixed
       rsh(1)  or  ssh(1),  be  prepared  that  terminal generated signals may
       interrupt the remote connection.


AUTHOR

       Joerg Schilling
       Seestr. 110
       D-13353 Berlin
       Germany

       Mail bugs and suggestions to:

       schilling@fokus.fhg.de or js@cs.tu-berlin.de



Joerg Schilling                    02/11/11                     RMTGETCONN(3L)

Man(1) output converted with man2html