AUSAM/source/S/fd2.c
/*
* Command to open file descriptor 2 to a file and exec
* a command. Four forms:
*
* fd2 comd ... [write on "msg.out"]
* fd2 -file comd ... [write on "file"]
* fd2 --file comd ... [append to "file"]
* fd2 -- comd ... [append to "msg.out"]
*
* Additional usage:
*
* fd2 + comd ...
*
* causes file descriptor 2 to be made same as 1.
*/
main(argc, argv)
int argc;
char *argv[];
{
char *file, app, path[100];
int fd, start;
if(argv[1][0] == '+')
{
start = 2;
close(2);
dup(1);
}
else
{
if(argv[1][0] != '-')
{
file = "\0";
app = 0;
start = 1;
}
else if(argv[1][1] != '-')
{
file = &argv[1][1];
app = 0;
start = 2;
}
else
{
file = &argv[1][2];
app = 1;
start = 2;
}
if(file[0] == '\0')
file = "msg.out";
if(app)
if((fd = open(file, 1)) < 0)
app = 0;
else
seek(fd, 0, 2);
if(!app)
fd = creat(file, 0666);
if(fd > 2)
{
close(2);
if(dup(fd) != 2)
{
write(open("/dev/tty", 1), "bad file descriptor?!?\n", 23);
exit(1);
}
close(fd);
}
}
argv[argc] = 0;
execc(argv[start], &argv[start]);
exit(1);
}