more devfs related bugs
[openwrt.git] / target / linux / generic-2.6 / patches / 002-squashfs_lzma.patch
index be4c19b..f32692b 100644 (file)
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.c
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.c 2005-08-29 00:02:44.099124176 +0200
+diff -urN linux-2.6.19.old/fs/squashfs/inode.c linux-2.6.19.dev/fs/squashfs/inode.c
+--- linux-2.6.19.old/fs/squashfs/inode.c       2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/inode.c       2006-12-14 03:13:20.000000000 +0100
+@@ -4,6 +4,9 @@
+  * Copyright (c) 2002, 2003, 2004, 2005, 2006
+  * Phillip Lougher <phillip@lougher.org.uk>
+  *
++ * LZMA decompressor support added by Oleg I. Vdovikin
++ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
++ *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+  * as published by the Free Software Foundation; either version 2,
+@@ -21,6 +24,7 @@
+  * inode.c
+  */
++#define SQUASHFS_LZMA
+ #include <linux/types.h>
+ #include <linux/squashfs_fs.h>
+ #include <linux/module.h>
+@@ -44,6 +48,19 @@
+ #include "squashfs.h"
++#ifdef SQUASHFS_LZMA
++#include "LzmaDecode.h"
++
++/* default LZMA settings, should be in sync with mksquashfs */
++#define LZMA_LC 3
++#define LZMA_LP 0
++#define LZMA_PB 2
++
++#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
++      (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
++
++#endif
++
+ static void squashfs_put_super(struct super_block *);
+ static int squashfs_statfs(struct dentry *, struct kstatfs *);
+ static int squashfs_symlink_readpage(struct file *file, struct page *page);
+@@ -64,7 +81,11 @@
+                       const char *, void *, struct vfsmount *);
++#ifdef SQUASHFS_LZMA
++static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
++#else
+ static z_stream stream;
++#endif
+ static struct file_system_type squashfs_fs_type = {
+       .owner = THIS_MODULE,
+@@ -249,6 +270,15 @@
+       if (compressed) {
+               int zlib_err;
++#ifdef SQUASHFS_LZMA
++              if ((zlib_err = LzmaDecode(lzma_workspace,
++                      LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB,
++                      c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK)
++              {
++                      ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
++                      bytes = 0;
++              }
++#else
+               stream.next_in = c_buffer;
+               stream.avail_in = c_byte;
+               stream.next_out = buffer;
+@@ -263,7 +293,7 @@
+                       bytes = 0;
+               } else
+                       bytes = stream.total_out;
+-
++#endif
+               up(&msblk->read_data_mutex);
+       }
+@@ -2045,15 +2075,19 @@
+       printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
+               "Phillip Lougher\n");
++#ifndef SQUASHFS_LZMA
+       if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
+               ERROR("Failed to allocate zlib workspace\n");
+               destroy_inodecache();
+               err = -ENOMEM;
+               goto out;
+       }
++#endif
+       if ((err = register_filesystem(&squashfs_fs_type))) {
++#ifndef SQUASHFS_LZMA
+               vfree(stream.workspace);
++#endif
+               destroy_inodecache();
+       }
+@@ -2064,7 +2098,9 @@
+ static void __exit exit_squashfs_fs(void)
+ {
++#ifndef SQUASHFS_LZMA
+       vfree(stream.workspace);
++#endif
+       unregister_filesystem(&squashfs_fs_type);
+       destroy_inodecache();
+ }
+diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.c linux-2.6.19.dev/fs/squashfs/LzmaDecode.c
+--- linux-2.6.19.old/fs/squashfs/LzmaDecode.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/LzmaDecode.c  2006-12-14 03:13:20.000000000 +0100
 @@ -0,0 +1,663 @@
 +/*
 +  LzmaDecode.c
 +  LZMA Decoder
 @@ -0,0 +1,663 @@
 +/*
 +  LzmaDecode.c
 +  LZMA Decoder
-+  
++
 +  LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
 +  http://www.7-zip.org/
 +
 +  LZMA SDK is licensed under two licenses:
 +  1) GNU Lesser General Public License (GNU LGPL)
 +  2) Common Public License (CPL)
 +  LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
 +  http://www.7-zip.org/
 +
 +  LZMA SDK is licensed under two licenses:
 +  1) GNU Lesser General Public License (GNU LGPL)
 +  2) Common Public License (CPL)
-+  It means that you can select one of these two licenses and 
++  It means that you can select one of these two licenses and
 +  follow rules of that license.
 +
 +  SPECIAL EXCEPTION:
 +  follow rules of that license.
 +
 +  SPECIAL EXCEPTION:
-+  Igor Pavlov, as the author of this code, expressly permits you to 
-+  statically or dynamically link your code (or bind by name) to the 
-+  interfaces of this file without subjecting your linked code to the 
-+  terms of the CPL or GNU LGPL. Any modifications or additions 
++  Igor Pavlov, as the author of this code, expressly permits you to
++  statically or dynamically link your code (or bind by name) to the
++  interfaces of this file without subjecting your linked code to the
++  terms of the CPL or GNU LGPL. Any modifications or additions
 +  to this file, however, are subject to the LGPL or CPL terms.
 +*/
 +
 +  to this file, however, are subject to the LGPL or CPL terms.
 +*/
 +
@@ -93,7 +201,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +    rd->Code = (rd->Code << 8) | ReadByte;
 +}
 +
 +    rd->Code = (rd->Code << 8) | ReadByte;
 +}
 +
-+#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;        
++#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;
 +#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
 +#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
 +
 +#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
 +#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
 +
@@ -161,7 +269,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +    { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
 +  RC_NORMALIZE
 +
 +    { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
 +  RC_NORMALIZE
 +
-+#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)               
++#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)
 +
 +int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
 +{
 +
 +int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
 +{
@@ -211,7 +319,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +}
 +
 +Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
 +}
 +
 +Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
-+{ 
++{
 +  int symbol = 1;
 +  #ifdef _LZMA_LOC_OPT
 +  RC_INIT_VAR
 +  int symbol = 1;
 +  #ifdef _LZMA_LOC_OPT
 +  RC_INIT_VAR
@@ -233,7 +341,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +}
 +
 +Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
 +}
 +
 +Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
-+{ 
++{
 +  int symbol = 1;
 +  #ifdef _LZMA_LOC_OPT
 +  RC_INIT_VAR
 +  int symbol = 1;
 +  #ifdef _LZMA_LOC_OPT
 +  RC_INIT_VAR
@@ -288,7 +396,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +#define LenLow (LenChoice2 + 1)
 +#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
 +#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
 +#define LenLow (LenChoice2 + 1)
 +#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
 +#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
-+#define kNumLenProbs (LenHigh + kLenNumHighSymbols) 
++#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
 +
 +int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
 +{
 +
 +int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
 +{
@@ -298,7 +406,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
 +    return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
 +        (posState << kLenNumMidBits), kLenNumMidBits, rd);
 +  if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
 +    return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
 +        (posState << kLenNumMidBits), kLenNumMidBits, rd);
-+  return kLenNumLowSymbols + kLenNumMidSymbols + 
++  return kLenNumLowSymbols + kLenNumMidSymbols +
 +      RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
 +}
 +
 +      RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
 +}
 +
@@ -381,8 +489,8 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  vs->RemainLen = 0;
 +  dictionary[dictionarySize - 1] = 0;
 +  for (i = 0; i < numProbs; i++)
 +  vs->RemainLen = 0;
 +  dictionary[dictionarySize - 1] = 0;
 +  for (i = 0; i < numProbs; i++)
-+    p[i] = kBitModelTotal >> 1; 
-+  RangeDecoderInit(&vs->RangeDecoder, 
++    p[i] = kBitModelTotal >> 1;
++  RangeDecoderInit(&vs->RangeDecoder,
 +      #ifdef _LZMA_IN_CB
 +      inCallback
 +      #else
 +      #ifdef _LZMA_IN_CB
 +      inCallback
 +      #else
@@ -392,7 +500,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  return LZMA_RESULT_OK;
 +}
 +
 +  return LZMA_RESULT_OK;
 +}
 +
-+int LzmaDecode(unsigned char *buffer, 
++int LzmaDecode(unsigned char *buffer,
 +    unsigned char *outStream, UInt32 outSize,
 +    UInt32 *outSizeProcessed)
 +{
 +    unsigned char *outStream, UInt32 outSize,
 +    UInt32 *outSizeProcessed)
 +{
@@ -462,8 +570,8 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  if (bufferSize < numProbs * sizeof(CProb))
 +    return LZMA_RESULT_NOT_ENOUGH_MEM;
 +  for (i = 0; i < numProbs; i++)
 +  if (bufferSize < numProbs * sizeof(CProb))
 +    return LZMA_RESULT_NOT_ENOUGH_MEM;
 +  for (i = 0; i < numProbs; i++)
-+    p[i] = kBitModelTotal >> 1; 
-+  RangeDecoderInit(&rd, 
++    p[i] = kBitModelTotal >> 1;
++  RangeDecoderInit(&rd,
 +      #ifdef _LZMA_IN_CB
 +      inCallback
 +      #else
 +      #ifdef _LZMA_IN_CB
 +      inCallback
 +      #else
@@ -476,7 +584,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  while(nowPos < outSize)
 +  {
 +    int posState = (int)(
 +  while(nowPos < outSize)
 +  {
 +    int posState = (int)(
-+        (nowPos 
++        (nowPos
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
@@ -490,9 +598,9 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +      return LZMA_RESULT_DATA_ERROR;
 +    if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
 +    {
 +      return LZMA_RESULT_DATA_ERROR;
 +    if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
 +    {
-+      CProb *probs = p + Literal + (LZMA_LIT_SIZE * 
++      CProb *probs = p + Literal + (LZMA_LIT_SIZE *
 +        (((
 +        (((
-+        (nowPos 
++        (nowPos
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
@@ -525,7 +633,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +        dictionaryPos = 0;
 +      #endif
 +    }
 +        dictionaryPos = 0;
 +      #endif
 +    }
-+    else             
++    else
 +    {
 +      previousIsMatch = 1;
 +      if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
 +    {
 +      previousIsMatch = 1;
 +      if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
@@ -538,7 +646,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +            UInt32 pos;
 +            #endif
 +            if (
 +            UInt32 pos;
 +            #endif
 +            if (
-+               (nowPos 
++               (nowPos
 +                #ifdef _LZMA_OUT_READ
 +                + globalPos
 +                #endif
 +                #ifdef _LZMA_OUT_READ
 +                + globalPos
 +                #endif
@@ -566,7 +674,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +          UInt32 distance;
 +          if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
 +            distance = rep1;
 +          UInt32 distance;
 +          if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
 +            distance = rep1;
-+          else 
++          else
 +          {
 +            if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
 +              distance = rep2;
 +          {
 +            if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
 +              distance = rep2;
@@ -592,7 +700,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +        state = state < 7 ? 7 : 10;
 +        len = LzmaLenDecode(p + LenCoder, &rd, posState);
 +        posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
 +        state = state < 7 ? 7 : 10;
 +        len = LzmaLenDecode(p + LenCoder, &rd, posState);
 +        posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
-+            ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << 
++            ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
 +            kNumPosSlotBits), kNumPosSlotBits, &rd);
 +        if (posSlot >= kStartPosModelIndex)
 +        {
 +            kNumPosSlotBits), kNumPosSlotBits, &rd);
 +        if (posSlot >= kStartPosModelIndex)
 +        {
@@ -605,7 +713,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +          }
 +          else
 +          {
 +          }
 +          else
 +          {
-+            rep0 += RangeDecoderDecodeDirectBits(&rd, 
++            rep0 += RangeDecoderDecodeDirectBits(&rd,
 +                numDirectBits - kNumAlignBits) << kNumAlignBits;
 +            rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
 +          }
 +                numDirectBits - kNumAlignBits) << kNumAlignBits;
 +            rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
 +          }
@@ -620,7 +728,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +        len = -1;
 +        break;
 +      }
 +        len = -1;
 +        break;
 +      }
-+      if (rep0 > nowPos 
++      if (rep0 > nowPos
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
 +        #ifdef _LZMA_OUT_READ
 +        + globalPos
 +        #endif
@@ -665,11 +773,11 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.c linux-2.6.12.5-b
 +  *outSizeProcessed = nowPos;
 +  return LZMA_RESULT_OK;
 +}
 +  *outSizeProcessed = nowPos;
 +  return LZMA_RESULT_OK;
 +}
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.h
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/LzmaDecode.h 2005-08-29 00:02:44.099124176 +0200
+diff -urN linux-2.6.19.old/fs/squashfs/LzmaDecode.h linux-2.6.19.dev/fs/squashfs/LzmaDecode.h
+--- linux-2.6.19.old/fs/squashfs/LzmaDecode.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/LzmaDecode.h  2006-12-14 03:13:20.000000000 +0100
 @@ -0,0 +1,100 @@
 @@ -0,0 +1,100 @@
-+/* 
++/*
 +  LzmaDecode.h
 +  LZMA Decoder interface
 +
 +  LzmaDecode.h
 +  LZMA Decoder interface
 +
@@ -679,14 +787,14 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +  LZMA SDK is licensed under two licenses:
 +  1) GNU Lesser General Public License (GNU LGPL)
 +  2) Common Public License (CPL)
 +  LZMA SDK is licensed under two licenses:
 +  1) GNU Lesser General Public License (GNU LGPL)
 +  2) Common Public License (CPL)
-+  It means that you can select one of these two licenses and 
++  It means that you can select one of these two licenses and
 +  follow rules of that license.
 +
 +  SPECIAL EXCEPTION:
 +  follow rules of that license.
 +
 +  SPECIAL EXCEPTION:
-+  Igor Pavlov, as the author of this code, expressly permits you to 
-+  statically or dynamically link your code (or bind by name) to the 
-+  interfaces of this file without subjecting your linked code to the 
-+  terms of the CPL or GNU LGPL. Any modifications or additions 
++  Igor Pavlov, as the author of this code, expressly permits you to
++  statically or dynamically link your code (or bind by name) to the
++  interfaces of this file without subjecting your linked code to the
++  terms of the CPL or GNU LGPL. Any modifications or additions
 +  to this file, however, are subject to the LGPL or CPL terms.
 +*/
 +
 +  to this file, however, are subject to the LGPL or CPL terms.
 +*/
 +
@@ -700,7 +808,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +/* Use read function for output data */
 +
 +/* #define _LZMA_PROB32 */
 +/* Use read function for output data */
 +
 +/* #define _LZMA_PROB32 */
-+/* It can increase speed on some 32-bit CPUs, 
++/* It can increase speed on some 32-bit CPUs,
 +   but memory usage will be doubled in that case */
 +
 +/* #define _LZMA_LOC_OPT */
 +   but memory usage will be doubled in that case */
 +
 +/* #define _LZMA_LOC_OPT */
@@ -734,10 +842,10 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +#define LZMA_BASE_SIZE 1846
 +#define LZMA_LIT_SIZE 768
 +
 +#define LZMA_BASE_SIZE 1846
 +#define LZMA_LIT_SIZE 768
 +
-+/* 
++/*
 +bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
 +bufferSize += 100 in case of _LZMA_OUT_READ
 +bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
 +bufferSize += 100 in case of _LZMA_OUT_READ
-+by default CProb is unsigned short, 
++by default CProb is unsigned short,
 +but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
 +*/
 +
 +but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
 +*/
 +
@@ -755,7 +863,7 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +#endif
 +
 +int LzmaDecode(
 +#endif
 +
 +int LzmaDecode(
-+    unsigned char *buffer, 
++    unsigned char *buffer,
 +  #ifndef _LZMA_OUT_READ
 +    UInt32 bufferSize,
 +    int lc, int lp, int pb,
 +  #ifndef _LZMA_OUT_READ
 +    UInt32 bufferSize,
 +    int lc, int lp, int pb,
@@ -769,122 +877,11 @@ diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/LzmaDecode.h linux-2.6.12.5-b
 +    UInt32 *outSizeProcessed);
 +
 +#endif
 +    UInt32 *outSizeProcessed);
 +
 +#endif
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/Makefile linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/Makefile
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/Makefile  2005-08-28 23:44:05.046246000 +0200
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/Makefile     2005-08-29 00:06:21.872017664 +0200
-@@ -4,4 +4,4 @@
+diff -urN linux-2.6.19.old/fs/squashfs/Makefile linux-2.6.19.dev/fs/squashfs/Makefile
+--- linux-2.6.19.old/fs/squashfs/Makefile      2006-12-14 03:13:20.000000000 +0100
++++ linux-2.6.19.dev/fs/squashfs/Makefile      2006-12-14 03:13:20.000000000 +0100
+@@ -5,3 +5,4 @@
  obj-$(CONFIG_SQUASHFS) += squashfs.o
  obj-$(CONFIG_SQUASHFS) += squashfs.o
--squashfs-objs := inode.o
-+squashfs-objs := inode.o LzmaDecode.o
-diff -Nur linux-2.6.12.5-brcm-squashfs/fs/squashfs/inode.c linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/inode.c
---- linux-2.6.12.5-brcm-squashfs/fs/squashfs/inode.c   2005-08-28 23:44:05.045246000 +0200
-+++ linux-2.6.12.5-brcm-squashfs-lzma/fs/squashfs/inode.c      2005-08-29 00:19:48.473476904 +0200
-@@ -3,6 +3,9 @@
-  *
-  * Copyright (c) 2002, 2003, 2004, 2005 Phillip Lougher <phillip@lougher.demon.co.uk>
-  *
-+ * LZMA decompressor support added by Oleg I. Vdovikin
-+ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
-+ *
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-  * as published by the Free Software Foundation; either version 2,
-@@ -20,7 +23,11 @@
-  * inode.c
-  */
-+#define SQUASHFS_LZMA
-+
-+#ifndef SQUASHFS_LZMA
- #define SQUASHFS_1_0_COMPATIBILITY
-+#endif
- #include <linux/types.h>
- #include <linux/squashfs_fs.h>
-@@ -43,6 +50,19 @@
- #include <linux/blkdev.h>
- #include <linux/vmalloc.h>
-+#ifdef SQUASHFS_LZMA
-+#include "LzmaDecode.h"
-+
-+/* default LZMA settings, should be in sync with mksquashfs */
-+#define LZMA_LC 3
-+#define LZMA_LP 0
-+#define LZMA_PB 2
-+
-+#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
-+      (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
-+
-+#endif
-+
- #ifdef SQUASHFS_TRACE
- #define TRACE(s, args...)                             printk(KERN_NOTICE "SQUASHFS: "s, ## args)
- #else
-@@ -85,7 +105,11 @@
- DECLARE_MUTEX(read_data_mutex);
-+#ifdef SQUASHFS_LZMA
-+static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
-+#else
- static z_stream stream;
-+#endif
- static struct file_system_type squashfs_fs_type = {
-       .owner = THIS_MODULE,
-@@ -274,6 +298,15 @@
-       if(compressed) {
-               int zlib_err;
-+#ifdef SQUASHFS_LZMA
-+              if ((zlib_err = LzmaDecode(lzma_workspace, 
-+                      LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB, 
-+                      c_buffer, c_byte, buffer, msBlk->read_size, &bytes)) != LZMA_RESULT_OK)
-+              {
-+                      ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
-+                      bytes = 0;
-+              }
-+#else
-               stream.next_in = c_buffer;
-               stream.avail_in = c_byte;
-               stream.next_out = buffer;
-@@ -285,6 +318,7 @@
-                       bytes = 0;
-               } else
-                       bytes = stream.total_out;
-+#endif
-               up(&read_data_mutex);
-       }
-@@ -1725,14 +1759,17 @@
-       printk(KERN_INFO "Squashfs 2.2 (released 2005/07/03) (C) 2002-2005 Phillip Lougher\n");
-+#ifndef SQUASHFS_LZMA
-       if(!(stream.workspace = (char *) vmalloc(zlib_inflate_workspacesize()))) {
-               ERROR("Failed to allocate zlib workspace\n");
-               destroy_inodecache();
-               return -ENOMEM;
-       }
--
-+#endif
-       if((err = register_filesystem(&squashfs_fs_type))) {
-+#ifndef SQUASHFS_LZMA
-               vfree(stream.workspace);
-+#endif
-               destroy_inodecache();
-       }
-@@ -1742,7 +1779,9 @@
- static void __exit exit_squashfs_fs(void)
- {
-+#ifndef SQUASHFS_LZMA
-       vfree(stream.workspace);
-+#endif
-       unregister_filesystem(&squashfs_fs_type);
-       destroy_inodecache();
- }
+ squashfs-y += inode.o
+ squashfs-y += squashfs2_0.o
++squashfs-y += LzmaDecode.o
This page took 0.057595 seconds and 4 git commands to generate.