There is apparently no need to handle the re-compression manually when
applying a xdelta patch in case of bzip2 or xz.

Only gzip needs to be handled specifically for disabling timestamp with
the -n option.

After this patch, if xdelta is enhanced with xz support (1-line patch),
it will be transparent from pacman side.

Signed-off-by: Xavier Chantry <[email protected]>
---
 lib/libalpm/sync.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)


Note that this patch is completely untested :P


diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index abda147..35e6fca 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -622,15 +622,12 @@ static int apply_deltas(pmtrans_t *trans)
                        snprintf(to, len, "%s/%s", cachedir, d->to);

                        /* build the patch command */
-                       /* compression command */
-                       char *compress = "cat";
                        if(endswith(to, ".gz")) {
-                               compress = "gzip -n";
-                       } else if(endswith(to, ".bz2")) {
-                               compress = "bzip";
+                               /* special handling for gzip : we disable 
timestamp with -n option */
+                               snprintf(command, PATH_MAX, "xdelta3 -d -q -R 
-c -s %s %s | gzip
-n > %s", from, delta, to);
+                       } else {
+                               snprintf(command, PATH_MAX, "xdelta3 -d -q -s 
%s %s %s", from, delta, to);
                        }
-                       /* -R for disabling external recompression, -c for 
sending to stdout */
-                       snprintf(command, PATH_MAX, "xdelta3 -d -q -R -c -s %s 
%s | %s >
%s", from, delta, compress, to);

                        _alpm_log(PM_LOG_DEBUG, "command: %s\n", command);

-- 
1.6.3.1
_______________________________________________
pacman-dev mailing list
[email protected]
http://www.archlinux.org/mailman/listinfo/pacman-dev

Reply via email to