
/*
 *  TEST.C
 *
 *  create a socketpair()
 *  chdir into NET1
 *  filedes #2 = LOG
 *  filedes #0 = first pair
 *  fork/exec
 *
 *  chdir into NET2
 *   filedes #2 = LOG
 *  etc..
 *
 */

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/file.h>

char *arg;

main(ac,av)
char *av[];
{
    int des[2];
    int fd;
    int error;

    arg = av[1];	/* NULL ok */
    error = socketpair(AF_UNIX, SOCK_STREAM, 0, des);
    negerr(error, "socketpair");
    if (chdir("NET1") < 0) {
	puts("Unable to CD NET1");
	exit(1);
    }
    fd = open("LOG", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    dnet(des[0], fd);
    if (chdir("../NET2") < 0) {
	puts("Unable to CD NET2");
	exit(1);
    }
    fd = open("LOG", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    dnet(des[1], fd);
}

dnet(comfd, logfd)
{
    int o0 = dup(0);
    int o1 = dup(1);
    int o2 = dup(2);
    dup2(comfd, 0);
    dup2(logfd, 1);
    dup2(logfd, 2);
    if (fork() == NULL) {
       fcntl(0, F_SETOWN, getpid());
       execlp("dnet", "dnet", arg, NULL);
       puts("unable to find DNET");
       exit(1);
    }
    dup2(o0, 0);
    dup2(o1, 1);
    dup2(o2, 2);
    close(o0);
    close(o1);
    close(o2);
}

negerr(error, str)
char *str;
{
    if (error < 0) {
	perror(str);
	exit(1);
    }
}




