EXECLP_HELPER("commod-results-processor", o_outmode_str, (char*)0);
}
- waitpid_check_exitstatus(processor, "output processor/uploader");
+ waitpid_check_exitstatus(processor, "output processor/uploader", 0);
fclose(tf);
progress_log("all complete.");
}
-void fetch_with_rsync(const char *stem) {
+static void rsync_core(const char *stem, const char *suffix,
+ const char *zopt) {
pid_t fetcher;
+ progress("Updating dictionary %s...",stem);
+
sysassert( (fetcher= fork()) != -1 );
if (!fetcher) {
const char *rsync= getenv("YPPSC_PCTB_RSYNC");
if (!rsync) rsync= "rsync";
const char *src= getenv("YPPSC_PCTB_DICT_UPDATE");
- char *remote= masprintf("%s/master-%s.txt", src, stem);
- char *local= masprintf("#master-%s#.txt", stem);
+ char *remote= masprintf("%s/master-%s.txt%s", src, stem, suffix);
+ char *local= masprintf("_master-%s.txt%s", stem, suffix);
if (DEBUGP(rsync))
fprintf(stderr,"executing rsync to fetch %s to %s\n",remote,local);
- execlp(rsync, "rsync",
- DEBUGP(rsync) ? "-zvLt" : "-zLt",
- "--",remote,local,(char*)0);
+ char *opts= masprintf("-Lt%s%s",
+ zopt,
+ DEBUGP(rsync) ? "v" : "");
+ execlp(rsync, "rsync",opts,"--",remote,local,(char*)0);
sysassert(!"exec rsync failed");
}
- waitpid_check_exitstatus(fetcher, "rsync");
+ waitpid_check_exitstatus(fetcher, "rsync", 0);
}
+void fetch_with_rsync_gz(const char *stem) { rsync_core(stem,".gz",""); }
+void fetch_with_rsync(const char *stem) { rsync_core(stem,"","z"); }
+
static void set_server(const char *envname, const char *defprotocol,
const char *defvalue, const char *defvalue_test,
const char *userspecified,
o_serv_dict_submit, o_flags & ff_dict_submit);
if (!o_screenshot_fn)
- o_screenshot_fn= masprintf("%s/#pages#.ppm",get_vardir());
+ o_screenshot_fn= masprintf("%s/_pages.ppm",get_vardir());
/* Actually do the work */
+ canon_colour_prepare();
+
if (o_mode & mf_findwindow) {
screenshot_startup();
find_yppclient_window();
open_screenshot_file("w");
if (o_flags & ff_singlepage) take_one_screenshot();
else take_screenshots();
- progress_log("OK for you to move the mouse now.");
+ progress_log("OK for you to move the mouse now, and you can"
+ " use the YPP client again.");
}
if (o_mode & mf_readscreenshot) {
if ((o_flags & ff_upload) && !(o_flags & ff_testservers))
}
if (o_mode & mf_analyse) {
if (o_flags & ff_needisland) {
- find_islandname(page_images[0]->rgb);
+ find_islandname();
if (o_flags & ff_printisland)
printf("%s, %s\n", archipelago, island);
sysassert(! setenv("YPPSC_ISLAND",island,1) );
_exit(16);
}
-void waitpid_check_exitstatus(pid_t pid, const char *what) {
+void waitpid_check_exitstatus(pid_t pid, const char *what, int sigpipeok) {
pid_t got;
int st;
for (;;) {
fatal("%s failed with nonzero exit status %d",
what, WEXITSTATUS(st));
} else if (WIFSIGNALED(st)) {
- fatal("%s died due to signal %s%s", what,
- strsignal(WTERMSIG(st)), WCOREDUMP(st)?" (core dumped)":"");
+ if (!sigpipeok || WTERMSIG(st) != SIGPIPE)
+ fatal("%s died due to signal %s%s", what,
+ strsignal(WTERMSIG(st)), WCOREDUMP(st)?" (core dumped)":"");
} else {
fatal("%s gave strange wait status %d", what, st);
}