X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=pctb%2Fconvert.c;h=4fdb0631dbe48c2ccdbad63a6d18c021b2706242;hb=817c4b56d7b72dbb9dcce70d0e22f57d8f687ba0;hp=df0497e5094392fe581cba12c6f595ff72c2a22c;hpb=0472c6bc43d9d94eac966f2484169581641b2fca;p=ypp-sc-tools.main.git diff --git a/pctb/convert.c b/pctb/convert.c index df0497e..4fdb063 100644 --- a/pctb/convert.c +++ b/pctb/convert.c @@ -66,6 +66,8 @@ FILE *screenshot_file; const char *o_ocean, *o_pirate; int o_quiet; +static pid_t screenshot_compressor=-1; + enum flags o_flags= ff_charset_allowedit | ff_dict_fetch|ff_dict_submit|ff_dict_pirate; @@ -79,11 +81,17 @@ static void vbadusage(const char *fmt, va_list al) { } 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) { @@ -218,7 +226,8 @@ int main(int argc, char **argv) { 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; @@ -274,7 +283,7 @@ int main(int argc, char **argv) { 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 */ @@ -303,18 +312,21 @@ int main(int argc, char **argv) { } 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) { @@ -349,7 +361,7 @@ static void vprogress_core(int spinner, const char *fmt, va_list al) { int r; if (o_quiet) return; - if (!isatty(2)) return; + if (!debug_flags && !isatty(2)) return; if (last_progress_len) putc('\r',stderr);