readchar fix
[vde.git] / vde / dpipe.c
blob2a5ad9debaa2167b6904e3690abe6e1ef1497326
1 /* Copyright 2003 Renzo Davoli
2 * Licensed under the GPL
3 */
5 #include <config.h>
6 #include<stdio.h>
7 #include<unistd.h>
8 #include<stdlib.h>
9 #include<string.h>
11 int p1[2],p2[2];
13 int splitindex(int argc, char *argv[]) {
14 register int i;
16 for (i=1; i<argc && strcmp(argv[i],"=") != 0; i++)
18 if (i>=argc)
19 return (-1);
20 else
21 return i;
25 int main(int argc, char *argv[]) {
27 int split;
28 char **argv1,**argv2;
30 split=splitindex(argc,argv);
32 if (argc < 4 || split < 0 || split == argc-1) {
33 fprintf(stderr,"Usage: %s cmd1 [arg1...] = cmd2 [arg2...]\n",argv[0]);
34 exit (-1);
37 pipe(p1);
38 pipe(p2);
39 argv[split]=NULL;
40 argv1=argv+1;
41 argv2=argv+(split+1);
43 if (fork()) {
44 close(p1[1]); close(p2[0]);
45 dup2(p1[0],STDIN_FILENO);
46 dup2(p2[1],STDOUT_FILENO);
47 execvp(argv1[0],argv1);
48 } else {
49 close(p2[1]); close(p1[0]);
50 dup2(p2[0],STDIN_FILENO);
51 dup2(p1[1],STDOUT_FILENO);
52 execvp(argv2[0],argv2);
54 return (0);