The Samba-Bugzilla – Attachment 1520 Details for
Bug 3174
Patch for specifying zlib compression level
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
My version of adding optional compression-level selection
compress-level.patch (text/plain), 6.69 KB, created by
Wayne Davison
on 2005-10-17 13:59:09 UTC
(
hide
)
Description:
My version of adding optional compression-level selection
Filename:
MIME Type:
Creator:
Wayne Davison
Created:
2005-10-17 13:59:09 UTC
Size:
6.69 KB
patch
obsolete
>--- batch.c 9 Apr 2005 18:59:44 -0000 1.53 >+++ batch.c 17 Oct 2005 20:55:52 -0000 >@@ -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 our_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) */ >+ &our_compress_level, /* 8 (protocol 29) */ > NULL > }; > >@@ -54,6 +58,12 @@ void write_stream_flags(int fd) > { > int i, flags; > >+#if Z_DEFAULT_COMPRESSION == -1 >+ our_compress_level = do_compression ? def_compress_level + 2 : 0; >+#else >+#error internal logic error! >+#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 (our_compress_level == 0 || our_compress_level == 2) >+ do_compression = 0; >+ else { >+ do_compression = 1; >+ def_compress_level = our_compress_level - 2; >+ } > } > > static void write_arg(int fd, char *arg) >--- options.c 15 Oct 2005 16:38:35 -0000 1.286 >+++ options.c 17 Oct 2005 20:55:52 -0000 >@@ -20,6 +20,7 @@ > > #include "rsync.h" > #include "popt.h" >+#include "zlib/zlib.h" > > extern int module_id; > extern int sanitize_paths; >@@ -64,6 +65,7 @@ int one_file_system = 0; > int protocol_version = PROTOCOL_VERSION; > int sparse_files = 0; > int do_compression = 0; >+int def_compress_level = Z_DEFAULT_COMPRESSION; > int am_root = 0; > int am_server = 0; > int am_sender = 0; >@@ -165,7 +167,7 @@ static int daemon_opt; /* sets am_daem > static int F_option_cnt = 0; > static int modify_window_set; > static int itemize_changes = 0; >-static int refused_delete, refused_archive_part; >+static int refused_delete, refused_archive_part, refused_compress; > static int refused_partial, refused_progress, refused_delete_before; > static int refused_inplace; > static char *max_size_arg, *min_size_arg; >@@ -324,6 +326,7 @@ void usage(enum logcode F) > rprintf(F," --copy-dest=DIR ... and include copies of unchanged files\n"); > rprintf(F," --link-dest=DIR hardlink to files in DIR when unchanged\n"); > rprintf(F," -z, --compress compress file data during the transfer\n"); >+ rprintf(F," --compress-level=NUM explicitly set compression level\n"); > rprintf(F," -C, --cvs-exclude auto-ignore files the same way CVS does\n"); > rprintf(F," -f, --filter=RULE add a file-filtering RULE\n"); > rprintf(F," -F same as --filter='dir-merge /.rsync-filter'\n"); >@@ -451,7 +454,8 @@ static struct poptOption long_options[] > {"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 }, > {"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 }, > {"fuzzy", 'y', POPT_ARG_NONE, &fuzzy_basis, 0, 0, 0 }, >- {"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 }, >+ {"compress", 'z', POPT_ARG_NONE, 0, 'z', 0, 0 }, >+ {"compress-level", 0, POPT_ARG_INT, &def_compress_level, 'z', 0, 0 }, > {0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 }, > {"progress", 0, POPT_ARG_VAL, &do_progress, 1, 0, 0 }, > {"no-progress", 0, POPT_ARG_VAL, &do_progress, 0, 0, 0 }, >@@ -598,6 +602,9 @@ static void set_refuse_options(char *bp) > case 't': case 'g': case 'o': case 'D': > refused_archive_part = op->val; > break; >+ case 'z': >+ refused_compress = op->val; >+ break; > case '\0': > if (wildmatch("delete", op->longName)) > refused_delete = op->val; >@@ -901,6 +908,21 @@ int parse_arguments(int *argc, const cha > keep_partial = 1; > break; > >+ case 'z': >+ if (def_compress_level < Z_DEFAULT_COMPRESSION >+ || def_compress_level > Z_BEST_COMPRESSION) { >+ snprintf(err_buf, sizeof err_buf, >+ "--compress-level value is invalid: %d\n", >+ def_compress_level); >+ return 0; >+ } >+ do_compression = def_compress_level != Z_NO_COMPRESSION; >+ if (do_compression && refused_compress) { >+ create_refuse_error(refused_compress); >+ return 0; >+ } >+ break; >+ > case OPT_WRITE_BATCH: > /* batch_name is already set */ > write_batch = 1; >@@ -1431,6 +1453,12 @@ void server_options(char **args,int *arg > if (list_only > 1) > args[ac++] = "--list-only"; > >+ if (do_compression && def_compress_level != Z_DEFAULT_COMPRESSION) { >+ if (asprintf(&arg, "--compress-level=%d", def_compress_level) < 0) >+ goto oom; >+ args[ac++] = arg; >+ } >+ > /* The server side doesn't use our log-format, but in certain > * circumstances they need to know a little about the option. */ > if (log_format && am_sender) { >--- rsync.yo 15 Oct 2005 16:39:31 -0000 1.308 >+++ rsync.yo 17 Oct 2005 20:55:53 -0000 >@@ -356,6 +356,7 @@ to the detailed description below for a > --copy-dest=DIR ... and include copies of unchanged files > --link-dest=DIR hardlink to files in DIR when unchanged > -z, --compress compress file data during the transfer >+ --compress-level=NUM explicitly set compression level > -C, --cvs-exclude auto-ignore files in the same way CVS does > -f, --filter=RULE add a file-filtering RULE > -F same as --filter='dir-merge /.rsync-filter' >@@ -1083,6 +1084,10 @@ be achieved by using a compressing remot > because it takes advantage of the implicit information in the matching data > blocks that are not explicitly sent over the connection. > >+dit(bf(--compress-level=NUM)) Explicitly set the compression level to use >+(see bf(--compress)) instead of letting it default. If NUM is non-zero, >+the bf(--compress) option is implied. >+ > dit(bf(--numeric-ids)) With this option rsync will transfer numeric group > and user IDs rather than using user and group names and mapping them > at both ends. >--- token.c 14 Feb 2005 08:28:00 -0000 1.37 >+++ token.c 17 Oct 2005 20:55:53 -0000 >@@ -22,8 +22,9 @@ > > extern int do_compression; > extern int module_id; >+extern int def_compress_level; > >-static int compression_level = Z_DEFAULT_COMPRESSION; >+static int compression_level; > > /* determine the compression level based on a wildcard filename list */ > void set_compression(char *fname) >@@ -34,7 +35,7 @@ void set_compression(char *fname) > if (!do_compression) > return; > >- compression_level = Z_DEFAULT_COMPRESSION; >+ compression_level = def_compress_level; > dont = lp_dont_compress(module_id); > > if (!dont || !*dont)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 3174
:
1517
| 1520