diff options
Diffstat (limited to 'Build/source/utils/asymptote/pipestream.cc')
-rw-r--r-- | Build/source/utils/asymptote/pipestream.cc | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/Build/source/utils/asymptote/pipestream.cc b/Build/source/utils/asymptote/pipestream.cc index a809302bf50..bdde519e864 100644 --- a/Build/source/utils/asymptote/pipestream.cc +++ b/Build/source/utils/asymptote/pipestream.cc @@ -39,10 +39,9 @@ void pipeHandler(int) Signal(SIGPIPE,SIG_DFL); instance->pipeclose(); } - + void iopipestream::open(const mem::vector<string> &command, const char *hint, - const char *application, const char *Fatal, - int out_fileno) + const char *application, int out_fileno) { if(pipe(in) == -1) { ostringstream buf; @@ -90,7 +89,6 @@ void iopipestream::open(const mem::vector<string> &command, const char *hint, Running=true; pipeopen=true; pipein=true; - fatal=Fatal; block(false,true); } @@ -133,10 +131,10 @@ ssize_t iopipestream::readbuffer() for(;;) { if((nc=read(out[0],p,size)) < 0) { if(errno == EAGAIN || errno == EINTR) {p[0]=0; break;} - else { - ostringstream buf; - buf << "read from pipe failed: errno=" << errno; - camp::reportError(buf); + else { + ostringstream buf; + buf << "read from pipe failed: errno=" << errno; + camp::reportError(buf); } nc=0; } @@ -184,15 +182,13 @@ void iopipestream::wait(const char *prompt) { sbuffer.clear(); size_t plen=strlen(prompt); - size_t flen=strlen(fatal); do { readbuffer(); + if(*buffer == 0) camp::reportError(sbuffer); sbuffer.append(buffer); if(tailequals(sbuffer.c_str(),sbuffer.size(),prompt,plen)) break; - if(*fatal && tailequals(sbuffer.c_str(),sbuffer.size(),fatal,flen)) - camp::reportError(sbuffer); } while(true); } |