wok rev 310

Linux: export unlzma
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Mar 02 20:47:57 2008 +0000 (2008-03-02)
parents 3a5e92c048e0
children b15eab4dc854
files linux/receipt linux/stuff/linux-lzma-export.u
line diff
     1.1 --- a/linux/receipt	Sat Mar 01 12:55:33 2008 +0000
     1.2 +++ b/linux/receipt	Sun Mar 02 20:47:57 2008 +0000
     1.3 @@ -22,6 +22,7 @@
     1.4  	patch -p1 < ../stuff/config-acpi-$VERSION.u
     1.5  	patch -p1 < ../stuff/linux-utf8-$VERSION.u
     1.6  	patch -p1 < ../stuff/config-ieee1394-$VERSION.u
     1.7 +	patch -p1 < ../stuff/linux-lzma-export.u
     1.8  	make oldconfig
     1.9  	make bzImage
    1.10  	make modules
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/linux/stuff/linux-lzma-export.u	Sun Mar 02 20:47:57 2008 +0000
     2.3 @@ -0,0 +1,67 @@
     2.4 +--- linux-2.6.24.2/lib/decompress_unlzma.c
     2.5 ++++ linux-2.6.24.2/lib/decompress_unlzma.c
     2.6 +@@ -321,7 +321,7 @@ typedef struct {
     2.7 + #define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS)
     2.8 + 
     2.9 + 
    2.10 +-STATIC int unlzma(char *inbuf, int in_len, 
    2.11 ++int unlzma(char *inbuf, int in_len, 
    2.12 + 		   int(*fill)(void*,unsigned int),
    2.13 + 		   int(*writebb)(char*,unsigned int),
    2.14 + 		   int *posp)
    2.15 +@@ -348,10 +348,21 @@ STATIC int unlzma(char *inbuf, int in_le
    2.16 + 
    2.17 + 	rc_init(&rc, fill, inbuf, in_len);
    2.18 + 
    2.19 +-	for (i = 0; i < sizeof(header); i++) {
    2.20 +-		if (rc.ptr >= rc.buffer_end)
    2.21 +-			rc_read(&rc);
    2.22 +-		((unsigned char *)&header)[i] = *rc.ptr++;
    2.23 ++	header.dict_size = header.dst_size = in_len;
    2.24 ++	if (inbuf && inbuf[0] == 0) {
    2.25 ++		const LZMA_LC = 3, LZMA_LP = 0, LZMA_PB = 2;
    2.26 ++		header.pos = (LZMA_PB * 45) + (LZMA_LP * 5) + LZMA_LC;
    2.27 ++		rc.ptr++;
    2.28 ++	}
    2.29 ++	else {
    2.30 ++		int hdrsize = sizeof(header);
    2.31 ++		if (inbuf && (1 + * (unsigned long *) &inbuf[9]) > 1U)
    2.32 ++			hdrsize = 5;
    2.33 ++		for (i = 0; i < hdrsize; i++) {
    2.34 ++			if (rc.ptr >= rc.buffer_end)
    2.35 ++				rc_read(&rc);
    2.36 ++			((unsigned char *)&header)[i] = *rc.ptr++;
    2.37 ++		}
    2.38 + 	}
    2.39 + 
    2.40 + 	if (header.pos >= (9 * 5 * 5))
    2.41 +
    2.42 +--- linux-2.6.24.2/lib/Makefile	
    2.43 ++++ linux-2.6.24.2/lib/Makefile	
    2.44 +@@ -51,7 +51,7 @@ obj-$(CONFIG_LIBCRC32C)	+= libcrc32c.o
    2.45 + obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o
    2.46 + 
    2.47 + obj-$(CONFIG_RD_BZIP2)	+= decompress_bunzip2.o
    2.48 +-obj-$(CONFIG_RD_LZMA)	+= decompress_unlzma.o
    2.49 ++obj-$(CONFIG_RD_LZMA)	+= decompress_unlzma.o unlzma_syms.o
    2.50 + 
    2.51 + 
    2.52 + obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/
    2.53 +
    2.54 +--- linux-2.6.24.2/lib/unlzma_syms.c	
    2.55 ++++ linux-2.6.24.2/lib/unlzma_syms.c	
    2.56 +@@ -0,0 +1,14 @@
    2.57 ++/*
    2.58 ++ * linux/lib/unlzma_syms.c
    2.59 ++ *
    2.60 ++ * Exported symbols for the unlzma functionality.
    2.61 ++ *
    2.62 ++ */
    2.63 ++
    2.64 ++#include <linux/module.h>
    2.65 ++#include <linux/init.h>
    2.66 ++
    2.67 ++#include <linux/decompress_unlzma.h>
    2.68 ++
    2.69 ++EXPORT_SYMBOL(unlzma);
    2.70 ++MODULE_LICENSE("GPL");