X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vsyssh%2Fvsyssh.c;h=0239fec948548d780807119f1d4c78b5d7c0234e;hb=26326ab885a36f7e0661703b735109df36520b30;hp=3d32454f32f2db108b295c8c6404989778d3950b;hpb=6922ec989d511a2330dc3fc32c038f92bb885543;p=vsys.git diff --git a/vsyssh/vsyssh.c b/vsyssh/vsyssh.c index 3d32454..0239fec 100644 --- a/vsyssh/vsyssh.c +++ b/vsyssh/vsyssh.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,10 @@ #include #include +void pipe_handler (int sig) { + printf("SIGPIPE"); +} + int main(int argc, char **argv, char **envp) { if (argc<2) { @@ -33,20 +38,21 @@ int main(int argc, char **argv, char **envp) char *inf,*outf; struct timeval tv; + signal(SIGPIPE,pipe_handler); inf=(char *)malloc(strlen(argv[1])+3); outf=(char *)malloc(strlen(argv[1])+4); strcpy(inf,argv[1]); strcpy(outf,argv[1]); strcat(inf,".in"); strcat(outf,".out"); - tv.tv_sec = 100; - tv.tv_usec = 0; - vfd1 = open(inf,O_WRONLY|O_NONBLOCK); vfd0 = open(outf,O_RDONLY|O_NONBLOCK); + printf("Out file: %d\n",vfd0); + vfd1 = open(inf,O_WRONLY); + printf("In file: %d\n",vfd1); if (vfd0==-1 || vfd1 == -1) { - printf("Error opening vsys entry %s\n", argv[1]); + printf("Error opening vsys entry %s (%s)\n", argv[1],strerror(errno)); exit(1); } @@ -56,22 +62,24 @@ int main(int argc, char **argv, char **envp) FD_SET(0, &set); FD_SET(vfd0, &set); - while (1) { + while (1) + { int ret; printf("vsys>");fflush(stdout); - ret = select(vfd0+1, &set, NULL, NULL, &tv); + FD_SET(0, &set); + FD_SET(vfd0, &set); + ret = select(vfd0+1, &set, NULL, NULL, NULL); if (FD_ISSET(0,&set)) { char lineread[2048]; int ret; - printf("Here\n"); ret=read(0,lineread,2048); + lineread[ret]='\0'; + printf ("writing %s\n",lineread); write(vfd1,lineread,ret); FD_CLR(0,&set); - } - else if (FD_ISSET(vfd0,&set)) { + } if (FD_ISSET(vfd0,&set)) { char lineread[2048]; int ret; - printf("Here2\n"); ret=read(vfd0,lineread,2048); write(1,lineread,ret); FD_CLR(vfd0,&set);