]> Pileus Git - ~andy/rsl/blobdiff - src/gzip.c
Merge branch 'master' into aweather
[~andy/rsl] / src / gzip.c
similarity index 89%
rename from gzip.c
rename to src/gzip.c
index 8308af4752e8489bce42c163f0a7bc64abaf1688..c12b4972bc617f949990fe9e9b9aec768e12ed72 100644 (file)
--- a/gzip.c
@@ -26,9 +26,8 @@
 #include <string.h>
 #define _USE_BSD
 #include <sys/types.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
 #include <signal.h>
+#include "win32compat.h"
 
 /* Prototype definitions within this file. */
 int no_command (char *cmd);
@@ -77,12 +76,18 @@ FILE *uncompress_pipe (FILE *fp)
   if (no_command("gzip --version > /dev/null 2>&1")) return fp;
   save_fd = dup(0);
   close(0); /* Redirect stdin for gzip. */
-  dup(fileno(fp));
+  if (dup(fileno(fp)) < 0) {
+    perror("decompress_pipe");
+    return NULL;
+  }
 
   fpipe = popen("gzip -q -d -f --stdout", "r");
   if (fpipe == NULL) perror("uncompress_pipe");
   close(0);
-  dup(save_fd);
+  if (dup(save_fd) < 0) {
+    perror("decompress_pipe");
+    return NULL;
+  }
   close(save_fd);
   fclose(fp);
   return fpipe;
@@ -99,12 +104,18 @@ FILE *compress_pipe (FILE *fp)
   fflush(NULL); /* Flush all buffered output before opening this pipe. */
   save_fd = dup(1);
   close(1); /* Redirect stdout for gzip. */
-  dup(fileno(fp));
+  if (dup(fileno(fp)) < 0) {
+    perror("compress_pipe");
+    return NULL;
+  }
 
   fpipe = popen("gzip -q -1 -c", "w");
   if (fpipe == NULL) perror("compress_pipe");
   close(1);
-  dup(save_fd);
+  if (dup(save_fd) < 0) {
+    perror("compress_pipe");
+    return NULL;
+  }
   return fpipe;
 }