
/*
 *	DSOC.C
 *
 *	DNET (c)Copyright 1988, Matthew Dillon, All Rights Reserved
 *
 *	DSOC [port#]
 *
 *      Connect to the specified port# .. Used to connect to a remote CLI
 *	(s_shell server on the Amiga, which requires PIPE: to work, port 8196,
 *	is the default)
 *
 *	Uses standard cooked mode instead of RAW mode.
 */


#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <sys/file.h>
#include <signal.h>
#include <errno.h>
#include "../server/servers.h"

int fd;
char buf[2048];

main(ac,av)
char *av[];
{
    int n;
    extern int handler();
    int port = (av[1]) ? atoi(av[1]) : PORT_AMIGASHELL;

    puts("DSOC V1.01 11 March 1988 Connecting");
    fd = DOpen(NULL, port, 0, 0);
    if (fd < 0) {
	perror("DOpen");
	exit(1);
    }
    puts("Connected");
    signal(SIGIO, handler);
    fcntl(fd, F_SETOWN, getpid());
    fcntl(fd, F_SETFL, FNDELAY|FASYNC);
    while ((n = gread(0, buf, sizeof(buf))) > 0) {
	gwrite(fd, buf, n);
    }
    fprintf(stderr, "EOF\n");
    DEof(fd);
    for (;;)
	pause();
}

handler()
{
    int n;
    char buf[1024];

    while ((n = read(fd, buf, sizeof(buf))) > 0) 
	write(1, buf, n);
    if (n == 0) {
	write(1, "REMEOF\n", 7);
	exit(1);
    }
}

