RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: xar/ ChangeLog xar/include/ xar.h.in xar/lib/ bzxar.c lzmax...

From: Anders F. Björklund <afb@rpm5.org>
Date: Sat 20 Oct 2007 - 21:08:26 CEST
Message-Id: <20071020190826.5A02334845A@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Anders F. Björklund
  Root:   /v/rpm/cvs                       Email:  afb@rpm5.org
  Module: xar                              Date:   20-Oct-2007 21:08:26
  Branch: HEAD                             Handle: 2007102020082501

  Modified files:
    xar                     ChangeLog
    xar/include             xar.h.in
    xar/lib                 bzxar.c lzmaxar.c zxar.c
    xar/src                 xar.1 xar.c

  Log:
    compression args from upstream

  Summary:
    Revision    Changes     Path
    1.7         +2  -0      xar/ChangeLog
    1.7         +17 -16     xar/include/xar.h.in
    1.6         +14 -1      xar/lib/bzxar.c
    1.3         +14 -1      xar/lib/lzmaxar.c
    1.6         +14 -1      xar/lib/zxar.c
    1.7         +4  -0      xar/src/xar.1
    1.11        +10 -0      xar/src/xar.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: xar/ChangeLog
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 ChangeLog
  --- xar/ChangeLog	20 Oct 2007 19:03:56 -0000	1.6
  +++ xar/ChangeLog	20 Oct 2007 19:08:25 -0000	1.7
  @@ -1,4 +1,6 @@
   devel
  +	2007-10-16 Rob Braun bbraun@synack.net
  +	* include/xar.h.in src/xar.c lib/io.c lib/lzmaxar.c lib/bzxar.c lib/archive.c lib/zxar.c: Added an option to pass arguments to the compression code.  This to allow specifying compression levels to gzip, bzip2, and lzma.
   	* lib/io.c: Issue 41, fixed a bug where rsize was being used uninitialized.
   	* lib/io.c: Issue 42, log a warning and continue if archived-checksum doesn't appear when archiving a file.
   	* lib/archive.c: Issue 43, free the buffer in xar_extract_tobuffersz() if there is an error extracting the file.
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/include/xar.h.in
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 xar.h.in
  --- xar/include/xar.h.in	2 Oct 2007 21:51:55 -0000	1.6
  +++ xar/include/xar.h.in	20 Oct 2007 19:08:25 -0000	1.7
  @@ -104,22 +104,23 @@
   #define XAR_OPT_VAL_SHA1 "sha1"
   #define XAR_OPT_VAL_MD5  "md5"
   
  -#define XAR_OPT_COMPRESSION "compression" /* set the file compression type */
  -#define XAR_OPT_VAL_GZIP    "gzip"
  -#define XAR_OPT_VAL_BZIP    "bzip2"
  -#define XAR_OPT_VAL_LZMA    "lzma"
  -
  -#define XAR_OPT_RSIZE       "rsize"       /* Read io buffer size */
  -
  -#define XAR_OPT_COALESCE    "coalesce"    /* Coalesce identical heap blocks */
  -#define XAR_OPT_LINKSAME    "linksame"    /* Hardlink identical files */
  -
  -#define XAR_OPT_PROPINCLUDE "prop-include" /* File property to include */
  -#define XAR_OPT_PROPEXCLUDE "prop-exclude" /* File property to exclude */
  -
  -#define XAR_OPT_SAVESUID    "savesuid"     /* Preserve setuid/setgid bits */
  -#define XAR_OPT_VAL_TRUE    "true"
  -#define XAR_OPT_VAL_FALSE   "false"
  +#define XAR_OPT_COMPRESSION    "compression" /* set the file compression type */
  +#define XAR_OPT_COMPRESSIONARG "compression-arg" /* set the compression opts */
  +#define XAR_OPT_VAL_GZIP       "gzip"
  +#define XAR_OPT_VAL_BZIP       "bzip2"
  +#define XAR_OPT_VAL_LZMA       "lzma"
  +
  +#define XAR_OPT_RSIZE          "rsize"       /* Read io buffer size */
  +
  +#define XAR_OPT_COALESCE       "coalesce"    /* Coalesce identical heap blocks */
  +#define XAR_OPT_LINKSAME       "linksame"    /* Hardlink identical files */
  +
  +#define XAR_OPT_PROPINCLUDE    "prop-include" /* File property to include */
  +#define XAR_OPT_PROPEXCLUDE    "prop-exclude" /* File property to exclude */
  +
  +#define XAR_OPT_SAVESUID       "savesuid"     /* Preserve setuid/setgid bits */
  +#define XAR_OPT_VAL_TRUE       "true"
  +#define XAR_OPT_VAL_FALSE      "false"
   
   /* xar signing algorithms */
   #define XAR_SIG_SHA1RSA		1
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/lib/bzxar.c
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 bzxar.c
  --- xar/lib/bzxar.c	2 Oct 2007 21:51:56 -0000	1.5
  +++ xar/lib/bzxar.c	20 Oct 2007 19:08:25 -0000	1.6
  @@ -44,6 +44,7 @@
   #include <stdlib.h>
   #include <string.h>
   #include <sys/types.h>
  +#include <errno.h>
   #ifdef HAVE_LIBBZ2
   #include <bzlib.h>
   #endif
  @@ -174,6 +175,7 @@
   
   	/* on first run, we init the context and check the compression type */
   	if( !BZIP2_CONTEXT(context) ) {
  +		int level = 9;
   		*context = calloc(1,sizeof(struct _bzip_context));
   		
   		opt = xar_opt_get(x, XAR_OPT_COMPRESSION);
  @@ -182,8 +184,19 @@
   		
   		if( strcmp(opt, XAR_OPT_VAL_BZIP) != 0 )
   			return 0;
  +
  +		opt = xar_opt_get(x, XAR_OPT_COMPRESSIONARG);
  +		if( opt ) {
  +			int tmp;
  +			errno = 0;
  +			tmp = strtol(opt, NULL, 10);
  +			if( errno == 0 ) {
  +				if( (level >= 0) && (level <= 9) )
  +					level = tmp;
  +			}
  +		}
   		
  -		BZ2_bzCompressInit(&BZIP2_CONTEXT(context)->bz, 9, 0, 30);
  +		BZ2_bzCompressInit(&BZIP2_CONTEXT(context)->bz, level, 0, 30);
   		BZIP2_CONTEXT(context)->bzipcompressed = 1;
   	}else if( !BZIP2_CONTEXT(context)->bzipcompressed ){
   		/* once the context has been initialized, then we have already
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/lib/lzmaxar.c
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 lzmaxar.c
  --- xar/lib/lzmaxar.c	14 Oct 2007 08:22:54 -0000	1.2
  +++ xar/lib/lzmaxar.c	20 Oct 2007 19:08:25 -0000	1.3
  @@ -44,6 +44,7 @@
   #include <stdlib.h>
   #include <string.h>
   #include <sys/types.h>
  +#include <errno.h>
   #ifdef HAVE_LIBLZMA
   #include <lzma.h>
   #endif
  @@ -188,6 +189,7 @@
   
   	/* on first run, we init the context and check the compression type */
   	if( !LZMA_CONTEXT(context) ) {
  +		int level = preset_level; /* RPM5: use preset_level instead of 9 */
   		*context = calloc(1,sizeof(struct _lzma_context));
   		
   		opt = xar_opt_get(x, XAR_OPT_COMPRESSION);
  @@ -196,6 +198,17 @@
   		
   		if( strcmp(opt, XAR_OPT_VAL_LZMA) != 0 )
   			return 0;
  +
  +		opt = xar_opt_get(x, XAR_OPT_COMPRESSIONARG);
  +		if( opt ) {
  +			int tmp;
  +			errno = 0;
  +			tmp = strtol(opt, NULL, 10);
  +			if( errno == 0 ) {
  +				if( (level >= 0) && (level <= 9) )
  +					level = tmp;
  +			}
  +		}
   		
   		lzma_init_encoder();
   		LZMA_CONTEXT(context)->options.check = LZMA_CHECK_CRC64;
  @@ -210,7 +223,7 @@
   #endif
   		LZMA_CONTEXT(context)->options.filters[0].options = NULL;
   		LZMA_CONTEXT(context)->options.filters[1].id = LZMA_FILTER_LZMA;
  -		LZMA_CONTEXT(context)->options.filters[1].options = (lzma_options_lzma *)(lzma_preset_lzma + preset_level - 1);
  +		LZMA_CONTEXT(context)->options.filters[1].options = (lzma_options_lzma *)(lzma_preset_lzma + level - 1);
   		/* Terminate the filter options array. */
   		LZMA_CONTEXT(context)->options.filters[2].id = UINT64_MAX;
   		LZMA_CONTEXT(context)->lzma = LZMA_STREAM_INIT_VAR;
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/lib/zxar.c
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 zxar.c
  --- xar/lib/zxar.c	2 Oct 2007 21:51:56 -0000	1.5
  +++ xar/lib/zxar.c	20 Oct 2007 19:08:25 -0000	1.6
  @@ -45,6 +45,7 @@
   #include <string.h>
   #include <sys/types.h>
   #include <zlib.h>
  +#include <errno.h>
   #include "xar.h"
   #include "filetree.h"
   #include "io.h"
  @@ -162,6 +163,7 @@
   
   	/* on first run, we init the context and check the compression type */
   	if( !GZIP_CONTEXT(context) ) {
  +		int level = Z_BEST_COMPRESSION;
   		*context = calloc(1,sizeof(struct _gzip_context));
   		
   		opt = xar_opt_get(x, XAR_OPT_COMPRESSION);
  @@ -170,8 +172,19 @@
   		
   		if( strcmp(opt, XAR_OPT_VAL_GZIP) != 0 )
   			return 0;
  +
  +		opt = xar_opt_get(x, XAR_OPT_COMPRESSIONARG);
  +		if( opt ) {
  +			int tmp;
  +			errno = 0;
  +			tmp = strtol(opt, NULL, 10);
  +			if( errno == 0 ) {
  +				if( (level >= 0) && (level <= 9) )
  +					level = tmp;
  +			}
  +		}
   		
  -		deflateInit(&GZIP_CONTEXT(context)->z, Z_BEST_COMPRESSION);
  +		deflateInit(&GZIP_CONTEXT(context)->z, level);
   		GZIP_CONTEXT(context)->gzipcompressed = 1;
   		if( *inlen == 0 )
   			return 0;
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/src/xar.1
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 xar.1
  --- xar/src/xar.1	2 Oct 2007 21:51:56 -0000	1.6
  +++ xar/src/xar.1	20 Oct 2007 19:08:26 -0000	1.7
  @@ -42,6 +42,10 @@
   \-z
   Synonym for \-\-compression=gzip
   .TP
  +\-\-compression-args=<arguments>
  +Specifies arguments to the compression engine selected.
  +gzip, bzip2, and lzma all take a single integer argument between 0 and 9 specifying the compression level to use.
  +.TP
   \-\-dump\-toc=<filename>
   Has xar dump the xml header into the specified file.  "-" can be specified to mean stdout.
   .TP
  @@ .
  patch -p0 <<'@@ .'
  Index: xar/src/xar.c
  ============================================================================
  $ cvs diff -u -r1.10 -r1.11 xar.c
  --- xar/src/xar.c	2 Oct 2007 21:51:56 -0000	1.10
  +++ xar/src/xar.c	20 Oct 2007 19:08:26 -0000	1.11
  @@ -61,6 +61,7 @@
   static char *Toccksum = NULL;
   static char *Compression = NULL;
   static char *Rsize = NULL;
  +static char *CompressionArg = NULL;
   
   static int Err = 0;
   static int List = 0;
  @@ -183,6 +184,9 @@
   	if( Compression )
   		xar_opt_set(x, XAR_OPT_COMPRESSION, Compression);
   
  +	if( CompressionArg )
  +		xar_opt_set(x, XAR_OPT_COMPRESSIONARG, CompressionArg);
  +
   	if( Coalesce )
   		xar_opt_set(x, XAR_OPT_COALESCE, "true");
   
  @@ -669,6 +673,8 @@
   	fprintf(stderr, "\t                      Default: gzip\n");
   	fprintf(stderr, "\t-j               Synonym for \"--compression=bzip2\"\n");
   	fprintf(stderr, "\t-z               Synonym for \"--compression=gzip\"\n");
  +	fprintf(stderr, "\t--compression-args=arg Specifies arguments to be passed\n");
  +	fprintf(stderr, "\t                       to the compression engine.\n");
   	fprintf(stderr, "\t--list-subdocs   List the subdocuments in the xml header\n");
   	fprintf(stderr, "\t--extract-subdoc=name Extracts the specified subdocument\n");
   	fprintf(stderr, "\t                      to a document in cwd named <name>.xml\n");
  @@ -729,6 +735,7 @@
   		{"distribution", 0, 0, 14},
   		{"keep-existing", 0, 0, 15},
   		{"keep-setuid", 0, 0, 16},
  +		{"compression-args", 1, 0, 17},
   		{ 0, 0, 0, 0}
   	};
   
  @@ -890,6 +897,9 @@
   		case 16 :
   			SaveSuid++;
   			break;
  +		case 17 :
  +			CompressionArg = optarg;
  +			break;
   		case 'c':
   		case 'x':
   		case 't':
  @@ .
Received on Sat Oct 20 21:08:26 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.