const char *get_libdir(void) { return "."; }
-enum mode {
- mf_findwindow= 00001,
- mf_screenshot= 00010,
- mf_readscreenshot= 00020,
- mf_analyse= 00100,
- mfm_special= 07000,
-
- mode_findwindow= 00001,
- mode_screenshot= 00011,
- mode_analyse= 00120,
- mode_showcharset= 01000,
-
- mode_all= 00111,
-};
-
enum outmodekind {
omk_unset, omk_upload, omk_str, omk_raw, omk_none
};
static enum outmodekind o_outmode_kind;
static const char *o_outmode_str= 0;
-static enum mode o_mode= mode_all;
static char *o_screenshot_fn;
static const char *o_serv_pctb, *o_serv_dict_fetch, *o_serv_dict_submit;
const char *o_ocean, *o_pirate;
int o_quiet;
+static pid_t screenshot_compressor=-1;
+
+enum mode o_mode= mode_all;
enum flags o_flags=
ff_charset_allowedit |
ff_dict_fetch|ff_dict_submit|ff_dict_pirate;
}
DEFINE_VWRAPPERF(static, badusage, NORET);
-static void open_screenshot_file(const char *mode) {
- screenshot_file= fopen(o_screenshot_fn, mode);
- if (!screenshot_file)
- fatal("could not open screenshots file `%s': %s",
- o_screenshot_fn, strerror(errno));
+static void open_screenshot_file(int for_write) {
+ if (!fnmatch("*.gz",o_screenshot_fn,0)) {
+ int mode= for_write ? O_WRONLY|O_CREAT|O_TRUNC : O_RDONLY;
+ sysassert(! gzopen(o_screenshot_fn, mode, &screenshot_file,
+ &screenshot_compressor, "-1") );
+ } else {
+ screenshot_file= fopen(o_screenshot_fn, for_write ? "w" : "r");
+ if (!screenshot_file)
+ fatal("could not open screenshots file `%s': %s",
+ o_screenshot_fn, strerror(errno));
+ }
}
static void run_analysis(void) {
const char *zopt) {
pid_t fetcher;
+ progress("Updating dictionary %s...",stem);
+
sysassert( (fetcher= fork()) != -1 );
if (!fetcher) {
const char *rsync= getenv("YPPSC_PCTB_RSYNC");
IS("--best-prices")) o_outmode_kind=omk_str,
o_outmode_str=arg+2;
- else if (IS("--screenshot-file")) o_screenshot_fn= ARGVAL;
+ else if (IS("--screenshot-file")||
+ IS("--screenshots-file")) o_screenshot_fn= ARGVAL;
else if (IS("--pctb-server")) o_serv_pctb= ARGVAL;
else if (IS("--dict-submit-server")) o_serv_dict_submit= ARGVAL;
else if (IS("--dict-update-server")) o_serv_dict_fetch= ARGVAL;
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.gz", get_vardir());
/* Actually do the work */
}
if (o_mode & mf_screenshot) {
- open_screenshot_file("w");
+ open_screenshot_file(1);
if (o_flags & ff_singlepage) take_one_screenshot();
else take_screenshots();
progress_log("OK for you to move the mouse now, and you can"
" use the YPP client again.");
+ progress("Finishing handling screenshots...");
+ gzclose(&screenshot_file,&screenshot_compressor,"screenshots output");
}
if (o_mode & mf_readscreenshot) {
if ((o_flags & ff_upload) && !(o_flags & ff_testservers))
badusage("must not reuse screenshots for upload to live PCTB database");
- open_screenshot_file("r");
+ open_screenshot_file(0);
if (o_flags & ff_singlepage) read_one_screenshot();
else read_screenshots();
+ gzclose(&screenshot_file,&screenshot_compressor,"screenshots input");
}
if (o_mode & mf_analyse) {
if (o_flags & ff_needisland) {
int r;
if (o_quiet) return;
- if (!isatty(2)) return;
+ if (!debug_flags && !isatty(2)) return;
if (last_progress_len)
putc('\r',stderr);