rev |
line source |
pascal@310
|
1 --- linux-2.6.24.2/lib/decompress_unlzma.c
|
pascal@310
|
2 +++ linux-2.6.24.2/lib/decompress_unlzma.c
|
pascal@313
|
3 @@ -52,11 +52,6 @@ static void __init large_free(void *wher
|
pascal@313
|
4 }
|
pascal@313
|
5
|
pascal@313
|
6 #ifndef TEST
|
pascal@313
|
7 -static void __init *malloc(size_t size)
|
pascal@313
|
8 -{
|
pascal@313
|
9 - return kmalloc(size, GFP_KERNEL);
|
pascal@313
|
10 -}
|
pascal@313
|
11 -
|
pascal@313
|
12 static void __init free(void *where)
|
pascal@313
|
13 {
|
pascal@313
|
14 kfree(where);
|
pascal@313
|
15 @@ -321,7 +316,7 @@ typedef struct {
|
pascal@310
|
16 #define LZMA_LITERAL (LZMA_REP_LEN_CODER + LZMA_NUM_LEN_PROBS)
|
pascal@310
|
17
|
pascal@310
|
18
|
pascal@310
|
19 -STATIC int unlzma(char *inbuf, int in_len,
|
pascal@310
|
20 +int unlzma(char *inbuf, int in_len,
|
pascal@310
|
21 int(*fill)(void*,unsigned int),
|
pascal@310
|
22 int(*writebb)(char*,unsigned int),
|
pascal@310
|
23 int *posp)
|
pascal@313
|
24 @@ -348,10 +343,21 @@ STATIC int unlzma(char *inbuf, int in_le
|
pascal@310
|
25
|
pascal@310
|
26 rc_init(&rc, fill, inbuf, in_len);
|
pascal@310
|
27
|
pascal@310
|
28 - for (i = 0; i < sizeof(header); i++) {
|
pascal@310
|
29 - if (rc.ptr >= rc.buffer_end)
|
pascal@310
|
30 - rc_read(&rc);
|
pascal@310
|
31 - ((unsigned char *)&header)[i] = *rc.ptr++;
|
pascal@310
|
32 + header.dict_size = header.dst_size = in_len;
|
pascal@310
|
33 + if (inbuf && inbuf[0] == 0) {
|
pascal@313
|
34 + const int LZMA_LC = 3, LZMA_LP = 0, LZMA_PB = 2;
|
pascal@310
|
35 + header.pos = (LZMA_PB * 45) + (LZMA_LP * 5) + LZMA_LC;
|
pascal@310
|
36 + rc.ptr++;
|
pascal@310
|
37 + }
|
pascal@310
|
38 + else {
|
pascal@310
|
39 + int hdrsize = sizeof(header);
|
pascal@310
|
40 + if (inbuf && (1 + * (unsigned long *) &inbuf[9]) > 1U)
|
pascal@310
|
41 + hdrsize = 5;
|
pascal@310
|
42 + for (i = 0; i < hdrsize; i++) {
|
pascal@310
|
43 + if (rc.ptr >= rc.buffer_end)
|
pascal@310
|
44 + rc_read(&rc);
|
pascal@310
|
45 + ((unsigned char *)&header)[i] = *rc.ptr++;
|
pascal@310
|
46 + }
|
pascal@310
|
47 }
|
pascal@310
|
48
|
pascal@310
|
49 if (header.pos >= (9 * 5 * 5))
|
pascal@310
|
50
|
pascal@310
|
51 --- linux-2.6.24.2/lib/Makefile
|
pascal@310
|
52 +++ linux-2.6.24.2/lib/Makefile
|
pascal@310
|
53 @@ -51,7 +51,7 @@ obj-$(CONFIG_LIBCRC32C) += libcrc32c.o
|
pascal@310
|
54 obj-$(CONFIG_GENERIC_ALLOCATOR) += genalloc.o
|
pascal@310
|
55
|
pascal@310
|
56 obj-$(CONFIG_RD_BZIP2) += decompress_bunzip2.o
|
pascal@310
|
57 -obj-$(CONFIG_RD_LZMA) += decompress_unlzma.o
|
pascal@310
|
58 +obj-$(CONFIG_RD_LZMA) += decompress_unlzma.o unlzma_syms.o
|
pascal@310
|
59
|
pascal@310
|
60
|
pascal@310
|
61 obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/
|
pascal@310
|
62
|
pascal@310
|
63 --- linux-2.6.24.2/lib/unlzma_syms.c
|
pascal@310
|
64 +++ linux-2.6.24.2/lib/unlzma_syms.c
|
pascal@310
|
65 @@ -0,0 +1,14 @@
|
pascal@310
|
66 +/*
|
pascal@310
|
67 + * linux/lib/unlzma_syms.c
|
pascal@310
|
68 + *
|
pascal@310
|
69 + * Exported symbols for the unlzma functionality.
|
pascal@310
|
70 + *
|
pascal@310
|
71 + */
|
pascal@310
|
72 +
|
pascal@310
|
73 +#include <linux/module.h>
|
pascal@310
|
74 +#include <linux/init.h>
|
pascal@310
|
75 +
|
pascal@310
|
76 +#include <linux/decompress_unlzma.h>
|
pascal@310
|
77 +
|
pascal@310
|
78 +EXPORT_SYMBOL(unlzma);
|
pascal@310
|
79 +MODULE_LICENSE("GPL");
|