- screenshot_file= fopen(o_screenshot_fn, mode);
- if (!screenshot_file)
- fatal("could not open screenshots file `%s': %s",
- o_screenshot_fn, strerror(errno));
+ if (!fnmatch("*.gz",o_screenshot_fn,0)) {
+ int zfd, pipefds[2];
+ sysassert( (zfd= open(o_screenshot_fn, O_WRONLY|O_CREAT|O_TRUNC,
+ 0666)) >= 0);
+ sysassert(! pipe(pipefds) );
+ sysassert( (screenshot_compressor=fork()) != -1 );
+ if (!screenshot_compressor) {
+ sysassert( dup2(pipefds[0],0)==0 );
+ sysassert( dup2(zfd,1)==1 );
+ sysassert(! close(zfd) );
+ sysassert(! close(pipefds[0]) );
+ sysassert(! close(pipefds[1]) );
+ execlp("gzip","gzip","-1",(char*)0);
+ sysassert(!"execlp gzip for screenshots");
+ }
+ sysassert(! close(zfd) );
+ sysassert(! close(pipefds[0]) );
+ sysassert( screenshot_file= fdopen(pipefds[1], "w") );
+
+ } else {
+ screenshot_file= fopen(o_screenshot_fn, mode);
+ if (!screenshot_file)
+ fatal("could not open screenshots file `%s': %s",
+ o_screenshot_fn, strerror(errno));
+ }