Handle new def_compress_level setting.
authorWayne Davison <wayned@samba.org>
Wed, 26 Oct 2005 16:48:07 +0000 (16:48 +0000)
committerWayne Davison <wayned@samba.org>
Wed, 26 Oct 2005 16:48:07 +0000 (16:48 +0000)
batch.c

diff --git a/batch.c b/batch.c
index 8aedd86..eb0c49a 100644 (file)
--- a/batch.c
+++ b/batch.c
@@ -6,6 +6,7 @@
 */
 
 #include "rsync.h"
+#include "zlib/zlib.h"
 #include <time.h>
 
 extern int am_sender;
@@ -19,11 +20,14 @@ extern int preserve_uid;
 extern int preserve_gid;
 extern int always_checksum;
 extern int do_compression;
+extern int def_compress_level;
 extern int protocol_version;
 extern char *batch_name;
 
 extern struct filter_list_struct filter_list;
 
+static int tweaked_compress_level;
+
 static int *flag_ptr[] = {
        &recurse,               /* 0 */
        &preserve_uid,          /* 1 */
@@ -33,7 +37,7 @@ static int *flag_ptr[] = {
        &preserve_hard_links,   /* 5 */
        &always_checksum,       /* 6 */
        &xfer_dirs,             /* 7 (protocol 29) */
-       &do_compression,        /* 8 (protocol 29) */
+       &tweaked_compress_level,/* 8 (protocol 29) */
        NULL
 };
 
@@ -54,6 +58,12 @@ void write_stream_flags(int fd)
 {
        int i, flags;
 
+#if Z_DEFAULT_COMPRESSION == -1
+       tweaked_compress_level = do_compression ? def_compress_level + 2 : 0;
+#else
+#error internal logic error!  Fix def_compress_level logic above and below too!
+#endif
+
        /* Start the batch file with a bitmap of data-stream-affecting
         * flags. */
        if (protocol_version < 29)
@@ -88,6 +98,13 @@ void read_stream_flags(int fd)
                else if (xfer_dirs < 2)
                        xfer_dirs = 0;
        }
+
+       if (tweaked_compress_level == 0 || tweaked_compress_level == 2)
+               do_compression = 0;
+       else {
+               do_compression = 1;
+               def_compress_level = tweaked_compress_level - 2;
+       }
 }
 
 static void write_arg(int fd, char *arg)