-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));
+ }