X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=pctb%2Focr.c;h=6a91935769ecfc7da0e70681ea80db627c49327e;hp=d12218f39fd2953eef1f892c9bb7fbd360e3b64c;hb=a5c969e80989ea2c678a99b46e7db08ae553e59d;hpb=18c4ed62b79ac9aa7e3f0ec4104068483e03086f diff --git a/pctb/ocr.c b/pctb/ocr.c index d12218f..6a91935 100644 --- a/pctb/ocr.c +++ b/pctb/ocr.c @@ -245,7 +245,7 @@ static void callout_unknown(OcrReader *rd, int w, Pixcol cols[], DEBUGP(callout) ? "--debug" : "--noop-arg", "--automatic-1", (char*)0); - sysassert(!"execlp failed"); + sysassert(!"execlp ocr-resolver failed"); } sysassert(! close(jobpipe[0]) ); sysassert(! close(donepipe[1]) ); @@ -295,27 +295,10 @@ static void callout_unknown(OcrReader *rd, int w, Pixcol cols[], } if (r==0) { - pid_t pid; - int st; - for (;;) { - pid= waitpid(resolver_pid, &st, 0); - if (pid==-1) { sysassert(errno==EINTR); continue; } - break; - } - sysassert(pid==resolver_pid); - if (WIFEXITED(st)) { - if (WEXITSTATUS(st)) - fatal("character resolver failed with nonzero exit status %d", - WEXITSTATUS(st)); - fclose(resolver); - close(resolver_done); - resolver= 0; - } else if (WIFSIGNALED(st)) { - fatal("character resolver died due to signal %s%s", - strsignal(WTERMSIG(st)), WCOREDUMP(st)?" (core dumped)":""); - } else { - fatal("character resolver gave strange wait status %d",st); - } + waitpid_check_exitstatus(resolver_pid, "character resolver"); + fclose(resolver); + close(resolver_done); + resolver= 0; } else { assert(r==1); sysassert(cb==0);