Skip to content

Commit

Permalink
added "dont compress" option with the default setting of
Browse files Browse the repository at this point in the history
	*.gz *.tgz *.zip *.z *.rpm *.deb
  • Loading branch information
Andrew Tridgell committed Nov 20, 1998
1 parent 055af77 commit 83fff1a
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 1 deletion.
4 changes: 4 additions & 0 deletions loadparm.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ typedef struct
char *exclude_from;
char *log_format;
char *refuse_options;
char *dont_compress;
int timeout;
} service;

Expand All @@ -155,6 +156,7 @@ static service sDefault =
NULL, /* exclude from */
"%o %h [%a] %m (%u) %f %l", /* log format */
NULL, /* refuse options */
"*.gz *.tgz *.zip *.z *.rpm *.deb", /* dont compress */
0 /* timeout */
};

Expand Down Expand Up @@ -264,6 +266,7 @@ static struct parm_struct parm_table[] =
{"transfer logging", P_BOOL, P_LOCAL, &sDefault.transfer_logging,NULL,0},
{"log format", P_STRING, P_LOCAL, &sDefault.log_format, NULL, 0},
{"refuse options", P_STRING, P_LOCAL, &sDefault.refuse_options,NULL, 0},
{"dont compress", P_STRING, P_LOCAL, &sDefault.dont_compress,NULL, 0},
{NULL, P_BOOL, P_NONE, NULL, NULL, 0}
};

Expand Down Expand Up @@ -337,6 +340,7 @@ FN_LOCAL_STRING(lp_exclude, exclude)
FN_LOCAL_STRING(lp_exclude_from, exclude_from)
FN_LOCAL_STRING(lp_log_format, log_format)
FN_LOCAL_STRING(lp_refuse_options, refuse_options)
FN_LOCAL_STRING(lp_dont_compress, dont_compress)
FN_LOCAL_INTEGER(lp_timeout, timeout)

/* local prototypes */
Expand Down
12 changes: 12 additions & 0 deletions rsyncd.conf.yo
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,18 @@ prints an error message and exits.
The full names of the options must be used (ie. you must use
"compress" not "z" to disable compression).

dit(bf(dont compress)) The "dont compress" option allows you to select
filenames based on wildcard patterns that should not be compressed
during transfer. Compression is expensive in terms of CPU usage so it
is usually good to not try to compress files that won't compress well,
such as already compressed files.

The "dont compress" option takes a space separated list of
case-insensitive wildcard patterns. Any source filename matching one
of the patterns will not be compressed during transfer.

The default setting is verb(*.gz *.tgz *.zip *.z *.rpm *.deb)

enddit()

manpagesection(AUTHENTICATION STRENGTH)
Expand Down
2 changes: 2 additions & 0 deletions sender.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,8 @@ void send_files(struct file_list *flist,int f_out,int f_in)
if (!am_server) {
log_transfer(file, fname+offset);
}

set_compression(fname);

match_sums(f_out,s,buf,st.st_size);

Expand Down
33 changes: 32 additions & 1 deletion token.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,38 @@
#include "zlib/zlib.h"

extern int do_compression;
static int compression_level = Z_DEFAULT_COMPRESSION;

/* determine the compression level based on a wildcard filename list */
void set_compression(char *fname)
{
extern int module_id;
char *dont;
char *tok;

if (!do_compression) return;

compression_level = Z_DEFAULT_COMPRESSION;
dont = lp_dont_compress(module_id);

if (!dont || !*dont) return;

dont = strdup(dont);
fname = strdup(fname);
if (!dont || !fname) return;

strlower(dont);
strlower(fname);

for (tok=strtok(dont," ");tok;tok=strtok(NULL," ")) {
if (fnmatch(tok, fname, 0) == 0) {
compression_level = 0;
break;
}
}
free(dont);
free(fname);
}

/* non-compressing recv token */
static int simple_recv_token(int f,char **data)
Expand Down Expand Up @@ -104,7 +135,7 @@ send_deflated_token(int f, int token,
tx_strm.next_in = NULL;
tx_strm.zalloc = NULL;
tx_strm.zfree = NULL;
if (deflateInit2(&tx_strm, Z_DEFAULT_COMPRESSION,
if (deflateInit2(&tx_strm, compression_level,
Z_DEFLATED, -15, 8,
Z_DEFAULT_STRATEGY) != Z_OK) {
rprintf(FERROR, "compression init failed\n");
Expand Down

0 comments on commit 83fff1a

Please sign in to comment.