On Saturday 02 June 2007 20:21:13 Prakash Punnoor wrote: > Daniel Hazelton wrote: > > Signed-off-by: Daniel Hazelton <[EMAIL PROTECTED]> > > > > DRH > > > > diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c > > index 2b87fcc..9f1b935 100644 > > --- a/fs/jffs2/compr_zlib.c > > +++ b/fs/jffs2/compr_zlib.c > > @@ -16,7 +16,6 @@ > > #include <linux/kernel.h> > > #include <linux/slab.h> > > #include <linux/zlib.h> > > -#include <linux/zutil.h> > > #include "nodelist.h" > > #include "compr.h" > > > > @@ -154,7 +153,7 @@ static int jffs2_zlib_decompress(unsigned char > > *data_in, > > > > /* If it's deflate, and it's got no preset dictionary, then > > we can tell zlib to skip the adler32 check. */ > > - if (srclen > 2 && !(data_in[1] & PRESET_DICT) && > > + if (srclen > 2 && !(data_in[1] & 0x20) && > > ((data_in[0] & 0x0f) == Z_DEFLATED) && > > !(((data_in[0]<<8) + data_in[1]) % 31)) { > > Why not > > #define PRESET_DICT 0x20 > > instead of obfuscating the code with a magic number ? (Or name it > differently if it clashes with something else...) > > > Cheers, > > Prakash
Not a problem. This patch was just a result of a quick s/PRESET_DICT/0x20/p - I'll change the patch so there is a localized PRESET_DICT macro. I've attached an updated patch that does just that. (Mark Adler suggested a second, more involved patch that would put the burdon of all the checking that JFFS2 is doing where it belongs, and already is done actually, zlib's inflate() ) DRH diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c index 2b87fcc..f4519db 100644 --- a/fs/jffs2/compr_zlib.c +++ b/fs/jffs2/compr_zlib.c @@ -16,7 +16,6 @@ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/zlib.h> -#include <linux/zutil.h> #include "nodelist.h" #include "compr.h" @@ -29,6 +28,13 @@ */ #define STREAM_END_SPACE 12 +/* + * PRESET_DICT is set in the internal (aka: private) zlib header zutil.h + * the value - 0x20 - is defined in RFC 1950, so making a duplicate + * definition here to remove this code's dependency on that file is safe. + */ +#define PRESET_DICT 0x20 + static DEFINE_MUTEX(deflate_mutex); static DEFINE_MUTEX(inflate_mutex); static z_stream inf_strm, def_strm;
diff --git a/fs/jffs2/compr_zlib.c b/fs/jffs2/compr_zlib.c index 2b87fcc..f4519db 100644 --- a/fs/jffs2/compr_zlib.c +++ b/fs/jffs2/compr_zlib.c @@ -16,7 +16,6 @@ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/zlib.h> -#include <linux/zutil.h> #include "nodelist.h" #include "compr.h" @@ -29,6 +28,13 @@ */ #define STREAM_END_SPACE 12 +/* + * PRESET_DICT is set in the internal (aka: private) zlib header zutil.h + * the value - 0x20 - is defined in RFC 1950, so making a duplicate + * definition here to remove this code's dependency on that file is safe. + */ +#define PRESET_DICT 0x20 + static DEFINE_MUTEX(deflate_mutex); static DEFINE_MUTEX(inflate_mutex); static z_stream inf_strm, def_strm;