- 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") );
-
+ int mode= for_write ? O_WRONLY|O_CREAT|O_TRUNC : O_RDONLY;
+ sysassert(! gzopen(o_screenshot_fn, mode, &screenshot_file,
+ &screenshot_compressor, "-1") );