~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/lib/zlib_inflate/inflate.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /lib/zlib_inflate/inflate.h (Version linux-6.11.5) and /lib/zlib_inflate/inflate.h (Version linux-6.0.19)


  1 #ifndef INFLATE_H                                   1 #ifndef INFLATE_H
  2 #define INFLATE_H                                   2 #define INFLATE_H
  3                                                     3 
  4 /* inflate.h -- internal inflate state definit      4 /* inflate.h -- internal inflate state definition
  5  * Copyright (C) 1995-2004 Mark Adler               5  * Copyright (C) 1995-2004 Mark Adler
  6  * For conditions of distribution and use, see      6  * For conditions of distribution and use, see copyright notice in zlib.h
  7  */                                                 7  */
  8                                                     8 
  9 /* WARNING: this file should *not* be used by       9 /* WARNING: this file should *not* be used by applications. It is
 10    part of the implementation of the compressi     10    part of the implementation of the compression library and is
 11    subject to change. Applications should only     11    subject to change. Applications should only use zlib.h.
 12  */                                                12  */
 13                                                    13 
 14 #include "inftrees.h"                              14 #include "inftrees.h"
 15                                                    15 
 16 /* Possible inflate modes between inflate() ca     16 /* Possible inflate modes between inflate() calls */
 17 typedef enum {                                     17 typedef enum {
 18     HEAD,       /* i: waiting for magic header     18     HEAD,       /* i: waiting for magic header */
 19     FLAGS,      /* i: waiting for method and f     19     FLAGS,      /* i: waiting for method and flags (gzip) */
 20     TIME,       /* i: waiting for modification     20     TIME,       /* i: waiting for modification time (gzip) */
 21     OS,         /* i: waiting for extra flags      21     OS,         /* i: waiting for extra flags and operating system (gzip) */
 22     EXLEN,      /* i: waiting for extra length     22     EXLEN,      /* i: waiting for extra length (gzip) */
 23     EXTRA,      /* i: waiting for extra bytes      23     EXTRA,      /* i: waiting for extra bytes (gzip) */
 24     NAME,       /* i: waiting for end of file      24     NAME,       /* i: waiting for end of file name (gzip) */
 25     COMMENT,    /* i: waiting for end of comme     25     COMMENT,    /* i: waiting for end of comment (gzip) */
 26     HCRC,       /* i: waiting for header crc (     26     HCRC,       /* i: waiting for header crc (gzip) */
 27     DICTID,     /* i: waiting for dictionary c     27     DICTID,     /* i: waiting for dictionary check value */
 28     DICT,       /* waiting for inflateSetDicti     28     DICT,       /* waiting for inflateSetDictionary() call */
 29         TYPE,       /* i: waiting for type bit     29         TYPE,       /* i: waiting for type bits, including last-flag bit */
 30         TYPEDO,     /* i: same, but skip check     30         TYPEDO,     /* i: same, but skip check to exit inflate on new block */
 31         STORED,     /* i: waiting for stored s     31         STORED,     /* i: waiting for stored size (length and complement) */
 32         COPY,       /* i/o: waiting for input      32         COPY,       /* i/o: waiting for input or output to copy stored block */
 33         TABLE,      /* i: waiting for dynamic      33         TABLE,      /* i: waiting for dynamic block table lengths */
 34         LENLENS,    /* i: waiting for code len     34         LENLENS,    /* i: waiting for code length code lengths */
 35         CODELENS,   /* i: waiting for length/l     35         CODELENS,   /* i: waiting for length/lit and distance code lengths */
 36             LEN,        /* i: waiting for leng     36             LEN,        /* i: waiting for length/lit code */
 37             LENEXT,     /* i: waiting for leng     37             LENEXT,     /* i: waiting for length extra bits */
 38             DIST,       /* i: waiting for dist     38             DIST,       /* i: waiting for distance code */
 39             DISTEXT,    /* i: waiting for dist     39             DISTEXT,    /* i: waiting for distance extra bits */
 40             MATCH,      /* o: waiting for outp     40             MATCH,      /* o: waiting for output space to copy string */
 41             LIT,        /* o: waiting for outp     41             LIT,        /* o: waiting for output space to write literal */
 42     CHECK,      /* i: waiting for 32-bit check     42     CHECK,      /* i: waiting for 32-bit check value */
 43     LENGTH,     /* i: waiting for 32-bit lengt     43     LENGTH,     /* i: waiting for 32-bit length (gzip) */
 44     DONE,       /* finished check, done -- rem     44     DONE,       /* finished check, done -- remain here until reset */
 45     BAD,        /* got a data error -- remain      45     BAD,        /* got a data error -- remain here until reset */
 46     MEM,        /* got an inflate() memory err     46     MEM,        /* got an inflate() memory error -- remain here until reset */
 47     SYNC        /* looking for synchronization     47     SYNC        /* looking for synchronization bytes to restart inflate() */
 48 } inflate_mode;                                    48 } inflate_mode;
 49                                                    49 
 50 /*                                                 50 /*
 51     State transitions between above modes -        51     State transitions between above modes -
 52                                                    52 
 53     (most modes can go to the BAD or MEM mode      53     (most modes can go to the BAD or MEM mode -- not shown for clarity)
 54                                                    54 
 55     Process header:                                55     Process header:
 56         HEAD -> (gzip) or (zlib)                   56         HEAD -> (gzip) or (zlib)
 57         (gzip) -> FLAGS -> TIME -> OS -> EXLEN     57         (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
 58         NAME -> COMMENT -> HCRC -> TYPE            58         NAME -> COMMENT -> HCRC -> TYPE
 59         (zlib) -> DICTID or TYPE                   59         (zlib) -> DICTID or TYPE
 60         DICTID -> DICT -> TYPE                     60         DICTID -> DICT -> TYPE
 61     Read deflate blocks:                           61     Read deflate blocks:
 62             TYPE -> STORED or TABLE or LEN or      62             TYPE -> STORED or TABLE or LEN or CHECK
 63             STORED -> COPY -> TYPE                 63             STORED -> COPY -> TYPE
 64             TABLE -> LENLENS -> CODELENS -> LE     64             TABLE -> LENLENS -> CODELENS -> LEN
 65     Read deflate codes:                            65     Read deflate codes:
 66                 LEN -> LENEXT or LIT or TYPE       66                 LEN -> LENEXT or LIT or TYPE
 67                 LENEXT -> DIST -> DISTEXT -> M     67                 LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
 68                 LIT -> LEN                         68                 LIT -> LEN
 69     Process trailer:                               69     Process trailer:
 70         CHECK -> LENGTH -> DONE                    70         CHECK -> LENGTH -> DONE
 71  */                                                71  */
 72                                                    72 
 73 /* state maintained between inflate() calls.       73 /* state maintained between inflate() calls.  Approximately 7K bytes. */
 74 struct inflate_state {                             74 struct inflate_state {
 75     inflate_mode mode;          /* current inf     75     inflate_mode mode;          /* current inflate mode */
 76     int last;                   /* true if pro     76     int last;                   /* true if processing last block */
 77     int wrap;                   /* bit 0 true      77     int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip */
 78     int havedict;               /* true if dic     78     int havedict;               /* true if dictionary provided */
 79     int flags;                  /* gzip header     79     int flags;                  /* gzip header method and flags (0 if zlib) */
 80     unsigned dmax;              /* zlib header     80     unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
 81     unsigned long check;        /* protected c     81     unsigned long check;        /* protected copy of check value */
 82     unsigned long total;        /* protected c     82     unsigned long total;        /* protected copy of output count */
 83  /*   gz_headerp head; */           /* where t     83  /*   gz_headerp head; */           /* where to save gzip header information */
 84         /* sliding window */                       84         /* sliding window */
 85     unsigned wbits;             /* log base 2      85     unsigned wbits;             /* log base 2 of requested window size */
 86     unsigned wsize;             /* window size     86     unsigned wsize;             /* window size or zero if not using window */
 87     unsigned whave;             /* valid bytes     87     unsigned whave;             /* valid bytes in the window */
 88     unsigned write;             /* window writ     88     unsigned write;             /* window write index */
 89     unsigned char *window;  /* allocated slidi     89     unsigned char *window;  /* allocated sliding window, if needed */
 90         /* bit accumulator */                      90         /* bit accumulator */
 91     unsigned long hold;         /* input bit a     91     unsigned long hold;         /* input bit accumulator */
 92     unsigned bits;              /* number of b     92     unsigned bits;              /* number of bits in "in" */
 93         /* for string and stored block copying     93         /* for string and stored block copying */
 94     unsigned length;            /* literal or      94     unsigned length;            /* literal or length of data to copy */
 95     unsigned offset;            /* distance ba     95     unsigned offset;            /* distance back to copy string from */
 96         /* for table and code decoding */          96         /* for table and code decoding */
 97     unsigned extra;             /* extra bits      97     unsigned extra;             /* extra bits needed */
 98         /* fixed and dynamic code tables */        98         /* fixed and dynamic code tables */
 99     code const *lencode;    /* starting table      99     code const *lencode;    /* starting table for length/literal codes */
100     code const *distcode;   /* starting table     100     code const *distcode;   /* starting table for distance codes */
101     unsigned lenbits;           /* index bits     101     unsigned lenbits;           /* index bits for lencode */
102     unsigned distbits;          /* index bits     102     unsigned distbits;          /* index bits for distcode */
103         /* dynamic table building */              103         /* dynamic table building */
104     unsigned ncode;             /* number of c    104     unsigned ncode;             /* number of code length code lengths */
105     unsigned nlen;              /* number of l    105     unsigned nlen;              /* number of length code lengths */
106     unsigned ndist;             /* number of d    106     unsigned ndist;             /* number of distance code lengths */
107     unsigned have;              /* number of c    107     unsigned have;              /* number of code lengths in lens[] */
108     code *next;             /* next available     108     code *next;             /* next available space in codes[] */
109     unsigned short lens[320];   /* temporary s    109     unsigned short lens[320];   /* temporary storage for code lengths */
110     unsigned short work[288];   /* work area f    110     unsigned short work[288];   /* work area for code table building */
111     code codes[ENOUGH];         /* space for c    111     code codes[ENOUGH];         /* space for code tables */
112 };                                                112 };
113                                                   113 
114 /* Reverse the bytes in a 32-bit value */         114 /* Reverse the bytes in a 32-bit value */
115 #define REVERSE(q) \                              115 #define REVERSE(q) \
116     ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff    116     ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
117      (((q) & 0xff00) << 8) + (((q) & 0xff) <<     117      (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
118                                                   118 
119 #endif                                            119 #endif
120                                                   120 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php