chiark / gitweb /
Output processing.
[ypp-sc-tools.db-live.git] / pctb / ocr.c
index d12218f39fd2953eef1f892c9bb7fbd360e3b64c..6a91935769ecfc7da0e70681ea80db627c49327e 100644 (file)
@@ -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);