[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH v2 09/13] libdpkg: factor out function to execute compressors



gzip, bzip2, and lzma use the same command-line syntax.  Factor
out a compress_cmd() function that can be used to invoke any one
of these commands.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 lib/dpkg/compression.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/lib/dpkg/compression.c b/lib/dpkg/compression.c
index f901867..914ba1d 100644
--- a/lib/dpkg/compression.c
+++ b/lib/dpkg/compression.c
@@ -95,6 +95,17 @@ fd_fd_filter(int fd_in, int fd_out,
   exit(0); \
 } while(0)
 
+static void
+compress_cmd(int fd_in, int fd_out, const char *path,
+             const char *cmd, char compression,
+             const char *desc)
+{
+  char combuf[6];
+  strncpy(combuf, "-9c", sizeof(combuf));
+  combuf[1] = compression;
+  fd_fd_filter(fd_in, fd_out, path, cmd, combuf, desc);
+}
+
 void decompress_cat(enum compress_type type, int fd_in, int fd_out, char *desc, ...) {
   va_list al;
   struct varbuf v = VARBUF_INIT;
@@ -147,12 +158,7 @@ void compress_cat(enum compress_type type, int fd_in, int fd_out, const char *co
       COMPRESS("gzip", gzFile, gzdopen, gzwrite, gzclose, gzerror, Z_ERRNO,
                fd_in, fd_out, *compression, v.buf);
 #else
-      {
-        char combuf[6];
-        strncpy(combuf, "-9c", sizeof(combuf));
-        combuf[1]= *compression;
-        fd_fd_filter(fd_in, fd_out, GZIP, "gzip", combuf, v.buf);
-      }
+      compress_cmd(fd_in, fd_out, GZIP, "gzip", *compression, v.buf);
 #endif
     case compress_type_bzip2:
 #ifdef WITH_BZ2
@@ -160,20 +166,10 @@ void compress_cat(enum compress_type type, int fd_in, int fd_out, const char *co
                BZ2_bzerror, BZ_IO_ERROR,
                fd_in, fd_out, *compression, v.buf);
 #else
-      {
-        char combuf[6];
-        strncpy(combuf, "-9c", sizeof(combuf));
-        combuf[1]= *compression;
-        fd_fd_filter(fd_in, fd_out, BZIP2, "bzip2", combuf, v.buf);
-      }
+      compress_cmd(fd_in, fd_out, BZIP2, "bzip2", *compression, v.buf);
 #endif
     case compress_type_lzma:
-      {
-        char combuf[6];
-        strncpy(combuf, "-9c", sizeof(combuf));
-        combuf[1] = *compression;
-        fd_fd_filter(fd_in, fd_out, LZMA, "lzma", combuf, v.buf);
-      }
+      compress_cmd(fd_in, fd_out, LZMA, "lzma", *compression, v.buf);
     case compress_type_cat:
       fd_fd_copy(fd_in, fd_out, -1, _("%s: compression"), v.buf);
       exit(0);
-- 
1.6.5.rc1.199.g596ec


Reply to: