#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>

#define VERSTAG "$VER: rexec 1.0 (12.09.98)"
char vers [] = VERSTAG;

#define OK 0
#define FAIL 20

main (int argc, char * argv [])
{
    struct servent * servent;
    int              socket = 0;

    if (argc != 5)
    {
        fprintf (stderr, "usage: %s <host> <user> <password> <cmd>\n",
                 argv [0]);
        exit (FAIL);
    }
    servent = getservbyname ("exec", "tcp");
    if (servent == NULL)
    {
        fprintf (stderr, "%s: getservbyname: %s\n", argv [0],
                                                    strerror (errno));
        exit (FAIL);
    }
    socket = rexec (&argv [1],
                    servent->s_port,
                    argv [2],
                    argv [3],
                    argv [4],
                    NULL);
    if (socket != 0)
    {
        char c;

        while (read (socket, &c, sizeof (c)) == sizeof (c))
        {
            printf ("%c", c);
        }
    }
    exit (OK);
}
