Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
27fe7751
Commit
27fe7751
authored
Apr 08, 2022
by
Poul-Henning Kamp
Committed by
Dridi Boukelmoune
Oct 17, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upgrade zlib to 1.2.12
parent
d74a55e1
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
10755 additions
and
988 deletions
+10755
-988
adler32.c
lib/libvgz/adler32.c
+2
-2
crc32.c
lib/libvgz/crc32.c
+971
-292
crc32.h
lib/libvgz/crc32.h
+9441
-436
deflate.c
lib/libvgz/deflate.c
+101
-52
deflate.h
lib/libvgz/deflate.h
+12
-15
gzguts.h
lib/libvgz/gzguts.h
+3
-2
inffast.c
lib/libvgz/inffast.c
+14
-14
inflate.c
lib/libvgz/inflate.c
+42
-11
inflate.h
lib/libvgz/inflate.h
+3
-2
inftrees.c
lib/libvgz/inftrees.c
+3
-3
trees.c
lib/libvgz/trees.c
+25
-47
vgz.h
lib/libvgz/vgz.h
+124
-100
zconf.h
lib/libvgz/zconf.h
+0
-1
zutil.c
lib/libvgz/zutil.c
+2
-2
zutil.h
lib/libvgz/zutil.h
+12
-9
No files found.
lib/libvgz/adler32.c
View file @
27fe7751
...
...
@@ -185,7 +185,7 @@ uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
{
return
adler32_combine_
(
adler1
,
adler2
,
len2
);
}
#else
#else
/* NOVGZ */
uLong
ZEXPORT
adler32
(
adler
,
buf
,
len
)
uLong
adler
;
const
Bytef
*
buf
;
...
...
@@ -196,4 +196,4 @@ uLong ZEXPORT adler32(adler, buf, len)
(
void
)
len
;
abort
();
}
#endif
#endif
/* NOVGZ */
lib/libvgz/crc32.c
View file @
27fe7751
This diff is collapsed.
Click to expand it.
lib/libvgz/crc32.h
View file @
27fe7751
This diff is collapsed.
Click to expand it.
lib/libvgz/deflate.c
View file @
27fe7751
This diff is collapsed.
Click to expand it.
lib/libvgz/deflate.h
View file @
27fe7751
/* deflate.h -- internal compression state
* Copyright (C) 1995-201
6
Jean-loup Gailly
* Copyright (C) 1995-201
8
Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -217,7 +217,7 @@ typedef struct internal_state {
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
uchf
*
l_buf
;
/* buffer for literals or
lengths */
uchf
*
sym_buf
;
/* buffer for distances and literals/
lengths */
uInt
lit_bufsize
;
/* Size of match buffer for literals/lengths. There are 4 reasons for
...
...
@@ -239,13 +239,8 @@ typedef struct internal_state {
* - I can't count above 4
*/
uInt
last_lit
;
/* running index in l_buf */
ushf
*
d_buf
;
/* Buffer for distances. To simplify the code, d_buf and l_buf have
* the same number of elements. To use different lengths, an extra flag
* array would be necessary.
*/
uInt
sym_next
;
/* running index in sym_buf */
uInt
sym_end
;
/* symbol table full when sym_next reaches this */
ulg
opt_len
;
/* bit length of current block with optimal trees */
ulg
static_len
;
/* bit length of current block with static trees */
...
...
@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
s->d_buf[s->last_lit] = 0; \
s->l_buf[s->last_lit++] = cc; \
s->sym_buf[s->sym_next++] = 0; \
s->sym_buf[s->sym_next++] = 0; \
s->sym_buf[s->sym_next++] = cc; \
s->dyn_ltree[cc].Freq++; \
flush = (s->
last_lit == s->lit_bufsize-1
); \
flush = (s->
sym_next == s->sym_end
); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (uch)(length); \
ush dist = (ush)(distance); \
s->d_buf[s->last_lit] = dist; \
s->l_buf[s->last_lit++] = len; \
s->sym_buf[s->sym_next++] = dist; \
s->sym_buf[s->sym_next++] = dist >> 8; \
s->sym_buf[s->sym_next++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
flush = (s->
last_lit == s->lit_bufsize-1
); \
flush = (s->
sym_next == s->sym_end
); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
...
...
lib/libvgz/gzguts.h
View file @
27fe7751
/* gzguts.h -- zlib internal header definitions for gz* operations
* Copyright (C) 2004
, 2005, 2010, 2011, 2012, 2013, 2016
Mark Adler
* Copyright (C) 2004
-2019
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -39,7 +39,7 @@
# include <io.h>
#endif
#if defined(_WIN32)
|| defined(__CYGWIN__)
#if defined(_WIN32)
# define WIDECHAR
#endif
...
...
@@ -190,6 +190,7 @@ typedef struct {
/* just for writing */
int
level
;
/* compression level */
int
strategy
;
/* compression strategy */
int
reset
;
/* true if a reset is pending after a Z_FINISH */
/* seek request */
z_off64_t
skip
;
/* amount to skip (already rewound if backwards) */
int
seek
;
/* true if seek request pending */
...
...
lib/libvgz/inffast.c
View file @
27fe7751
...
...
@@ -70,7 +70,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
code
const
FAR
*
dcode
;
/* local strm->distcode */
unsigned
lmask
;
/* mask for first level of length codes */
unsigned
dmask
;
/* mask for first level of distance codes */
code
here
;
/* retrieved table entry */
code
const
*
here
;
/* retrieved table entry */
unsigned
op
;
/* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
unsigned
len
;
/* match length, unused bytes */
...
...
@@ -107,20 +107,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold
+=
(
unsigned
long
)(
*
in
++
)
<<
bits
;
bits
+=
8
;
}
here
=
lcode
[
hold
&
lmask
]
;
here
=
lcode
+
(
hold
&
lmask
)
;
dolen
:
op
=
(
unsigned
)(
here
.
bits
);
op
=
(
unsigned
)(
here
->
bits
);
hold
>>=
op
;
bits
-=
op
;
op
=
(
unsigned
)(
here
.
op
);
op
=
(
unsigned
)(
here
->
op
);
if
(
op
==
0
)
{
/* literal */
Tracevv
((
stderr
,
here
.
val
>=
0x20
&&
here
.
val
<
0x7f
?
Tracevv
((
stderr
,
here
->
val
>=
0x20
&&
here
->
val
<
0x7f
?
"inflate: literal '%c'
\n
"
:
"inflate: literal 0x%02x
\n
"
,
here
.
val
));
*
out
++
=
(
unsigned
char
)(
here
.
val
);
"inflate: literal 0x%02x
\n
"
,
here
->
val
));
*
out
++
=
(
unsigned
char
)(
here
->
val
);
}
else
if
(
op
&
16
)
{
/* length base */
len
=
(
unsigned
)(
here
.
val
);
len
=
(
unsigned
)(
here
->
val
);
op
&=
15
;
/* number of extra bits */
if
(
op
)
{
if
(
bits
<
op
)
{
...
...
@@ -138,14 +138,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold
+=
(
unsigned
long
)(
*
in
++
)
<<
bits
;
bits
+=
8
;
}
here
=
dcode
[
hold
&
dmask
]
;
here
=
dcode
+
(
hold
&
dmask
)
;
dodist
:
op
=
(
unsigned
)(
here
.
bits
);
op
=
(
unsigned
)(
here
->
bits
);
hold
>>=
op
;
bits
-=
op
;
op
=
(
unsigned
)(
here
.
op
);
op
=
(
unsigned
)(
here
->
op
);
if
(
op
&
16
)
{
/* distance base */
dist
=
(
unsigned
)(
here
.
val
);
dist
=
(
unsigned
)(
here
->
val
);
op
&=
15
;
/* number of extra bits */
if
(
bits
<
op
)
{
hold
+=
(
unsigned
long
)(
*
in
++
)
<<
bits
;
...
...
@@ -264,7 +264,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else
if
((
op
&
64
)
==
0
)
{
/* 2nd level distance code */
here
=
dcode
[
here
.
val
+
(
hold
&
((
1U
<<
op
)
-
1
))]
;
here
=
dcode
+
here
->
val
+
(
hold
&
((
1U
<<
op
)
-
1
))
;
goto
dodist
;
}
else
{
...
...
@@ -274,7 +274,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else
if
((
op
&
64
)
==
0
)
{
/* 2nd level length code */
here
=
lcode
[
here
.
val
+
(
hold
&
((
1U
<<
op
)
-
1
))]
;
here
=
lcode
+
here
->
val
+
(
hold
&
((
1U
<<
op
)
-
1
))
;
goto
dolen
;
}
else
if
(
op
&
32
)
{
/* end-of-block */
...
...
lib/libvgz/inflate.c
View file @
27fe7751
This diff is collapsed.
Click to expand it.
lib/libvgz/inflate.h
View file @
27fe7751
/* inflate.h -- internal inflate state definition
* Copyright (C) 1995-201
6
Mark Adler
* Copyright (C) 1995-201
9
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -86,7 +86,8 @@ struct inflate_state {
int
wrap
;
/* bit 0 true for zlib, bit 1 true for gzip,
bit 2 true to validate check value */
int
havedict
;
/* true if dictionary provided */
int
flags
;
/* gzip header method and flags (0 if zlib) */
int
flags
;
/* gzip header method and flags, 0 if zlib, or
-1 if raw or no header yet */
unsigned
dmax
;
/* zlib header max distance (INFLATE_STRICT) */
unsigned
long
check
;
/* protected copy of check value */
unsigned
long
total
;
/* protected copy of output count */
...
...
lib/libvgz/inftrees.c
View file @
27fe7751
/* inftrees.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-20
17
Mark Adler
* Copyright (C) 1995-20
22
Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -10,7 +10,7 @@
extern
const
char
inflate_copyright
[];
const
char
inflate_copyright
[]
=
" inflate 1.2.1
1 Copyright 1995-2017
Mark Adler "
;
" inflate 1.2.1
2 Copyright 1995-2022
Mark Adler "
;
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
...
...
@@ -63,7 +63,7 @@ unsigned short FAR *work;
35
,
43
,
51
,
59
,
67
,
83
,
99
,
115
,
131
,
163
,
195
,
227
,
258
,
0
,
0
};
static
const
unsigned
short
lext
[
31
]
=
{
/* Length codes 257..285 extra */
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
17
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
77
,
202
};
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
199
,
202
};
static
const
unsigned
short
dbase
[
32
]
=
{
/* Distance codes 0..29 base */
1
,
2
,
3
,
4
,
5
,
7
,
9
,
13
,
17
,
25
,
33
,
49
,
65
,
97
,
129
,
193
,
257
,
385
,
513
,
769
,
1025
,
1537
,
2049
,
3073
,
4097
,
6145
,
...
...
lib/libvgz/trees.c
View file @
27fe7751
/* trees.c -- output deflated data using Huffman coding
* Copyright (C) 1995-20
17
Jean-loup Gailly
* Copyright (C) 1995-20
21
Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -149,7 +149,7 @@ local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
local
void
compress_block
OF
((
deflate_state
*
s
,
const
ct_data
*
ltree
,
const
ct_data
*
dtree
));
local
int
detect_data_type
OF
((
deflate_state
*
s
));
local
unsigned
bi_reverse
OF
((
unsigned
value
,
int
length
));
local
unsigned
bi_reverse
OF
((
unsigned
code
,
int
len
));
local
void
bi_windup
OF
((
deflate_state
*
s
));
local
void
bi_flush
OF
((
deflate_state
*
s
));
...
...
@@ -416,7 +416,7 @@ local void init_block(s)
s
->
dyn_ltree
[
END_BLOCK
].
Freq
=
1
;
s
->
opt_len
=
s
->
static_len
=
0L
;
s
->
last_li
t
=
s
->
matches
=
0
;
s
->
sym_nex
t
=
s
->
matches
=
0
;
}
#define SMALLEST 1
...
...
@@ -959,7 +959,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
Tracev
((
stderr
,
"
\n
opt %lu(%lu) stat %lu(%lu) stored %lu lit %u "
,
opt_lenb
,
s
->
opt_len
,
static_lenb
,
s
->
static_len
,
stored_len
,
s
->
last_lit
));
s
->
sym_next
/
3
));
if
(
static_lenb
<=
opt_lenb
)
opt_lenb
=
static_lenb
;
...
...
@@ -1030,8 +1030,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
unsigned
dist
;
/* distance of matched string */
unsigned
lc
;
/* match length-MIN_MATCH or unmatched char (if dist==0) */
{
s
->
d_buf
[
s
->
last_lit
]
=
(
ush
)
dist
;
s
->
l_buf
[
s
->
last_lit
++
]
=
(
uch
)
lc
;
s
->
sym_buf
[
s
->
sym_next
++
]
=
dist
;
s
->
sym_buf
[
s
->
sym_next
++
]
=
dist
>>
8
;
s
->
sym_buf
[
s
->
sym_next
++
]
=
lc
;
if
(
dist
==
0
)
{
/* lc is the unmatched char */
s
->
dyn_ltree
[
lc
].
Freq
++
;
...
...
@@ -1046,30 +1047,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
s
->
dyn_ltree
[
_length_code
[
lc
]
+
LITERALS
+
1
].
Freq
++
;
s
->
dyn_dtree
[
d_code
(
dist
)].
Freq
++
;
}
#ifdef TRUNCATE_BLOCK
/* Try to guess if it is profitable to stop the current block here */
if
((
s
->
last_lit
&
0x1fff
)
==
0
&&
s
->
level
>
2
)
{
/* Compute an upper bound for the compressed length */
ulg
out_length
=
(
ulg
)
s
->
last_lit
*
8L
;
ulg
in_length
=
(
ulg
)((
long
)
s
->
strstart
-
s
->
block_start
);
int
dcode
;
for
(
dcode
=
0
;
dcode
<
D_CODES
;
dcode
++
)
{
out_length
+=
(
ulg
)
s
->
dyn_dtree
[
dcode
].
Freq
*
(
5L
+
extra_dbits
[
dcode
]);
}
out_length
>>=
3
;
Tracev
((
stderr
,
"
\n
last_lit %u, in %ld, out ~%ld(%ld%%) "
,
s
->
last_lit
,
in_length
,
out_length
,
100L
-
out_length
*
100L
/
in_length
));
if
(
s
->
matches
<
s
->
last_lit
/
2
&&
out_length
<
in_length
/
2
)
return
1
;
}
#endif
return
(
s
->
last_lit
==
s
->
lit_bufsize
-
1
);
/* We avoid equality with lit_bufsize because of wraparound at 64K
* on 16 bit machines and because stored blocks are restricted to
* 64K-1 bytes.
*/
return
(
s
->
sym_next
==
s
->
sym_end
);
}
/* ===========================================================================
...
...
@@ -1082,13 +1060,14 @@ local void compress_block(s, ltree, dtree)
{
unsigned
dist
;
/* distance of matched string */
int
lc
;
/* match length or unmatched char (if dist == 0) */
unsigned
lx
=
0
;
/* running index in l
_buf */
unsigned
sx
=
0
;
/* running index in sym
_buf */
unsigned
code
;
/* the code to send */
int
extra
;
/* number of extra bits to send */
if
(
s
->
last_lit
!=
0
)
do
{
dist
=
s
->
d_buf
[
lx
];
lc
=
s
->
l_buf
[
lx
++
];
if
(
s
->
sym_next
!=
0
)
do
{
dist
=
s
->
sym_buf
[
sx
++
]
&
0xff
;
dist
+=
(
unsigned
)(
s
->
sym_buf
[
sx
++
]
&
0xff
)
<<
8
;
lc
=
s
->
sym_buf
[
sx
++
];
if
(
dist
==
0
)
{
send_code
(
s
,
lc
,
ltree
);
/* send a literal byte */
Tracecv
(
isgraph
(
lc
),
(
stderr
,
" '%c' "
,
lc
));
...
...
@@ -1113,11 +1092,10 @@ local void compress_block(s, ltree, dtree)
}
}
/* literal or match pair ? */
/* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
Assert
((
uInt
)(
s
->
pending
)
<
s
->
lit_bufsize
+
2
*
lx
,
"pendingBuf overflow"
);
/* Check that the overlay between pending_buf and sym_buf is ok: */
Assert
(
s
->
pending
<
s
->
lit_bufsize
+
sx
,
"pendingBuf overflow"
);
}
while
(
lx
<
s
->
last_li
t
);
}
while
(
sx
<
s
->
sym_nex
t
);
send_code
(
s
,
END_BLOCK
,
ltree
);
}
...
...
@@ -1126,9 +1104,9 @@ local void compress_block(s, ltree, dtree)
* Check if the data type is TEXT or BINARY, using the following algorithm:
* - TEXT if the two conditions below are satisfied:
* a) There are no non-portable control characters belonging to the
* "bl
a
ck list" (0..6, 14..25, 28..31).
* "bl
o
ck list" (0..6, 14..25, 28..31).
* b) There is at least one printable character belonging to the
* "
white
list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
* "
allow
list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
* - BINARY otherwise.
* - The following partially-portable control characters form a
* "gray list" that is ignored in this detection algorithm:
...
...
@@ -1138,19 +1116,19 @@ local void compress_block(s, ltree, dtree)
local
int
detect_data_type
(
s
)
deflate_state
*
s
;
{
/* bl
ack_mask is the bit mask of bla
ck-listed bytes
/* bl
ock_mask is the bit mask of blo
ck-listed bytes
* set bits 0..6, 14..25, and 28..31
* 0xf3ffc07f = binary 11110011111111111100000001111111
*/
unsigned
long
bl
a
ck_mask
=
0xf3ffc07fUL
;
unsigned
long
bl
o
ck_mask
=
0xf3ffc07fUL
;
int
n
;
/* Check for non-textual ("bl
a
ck-listed") bytes. */
for
(
n
=
0
;
n
<=
31
;
n
++
,
bl
a
ck_mask
>>=
1
)
if
((
bl
a
ck_mask
&
1
)
&&
(
s
->
dyn_ltree
[
n
].
Freq
!=
0
))
/* Check for non-textual ("bl
o
ck-listed") bytes. */
for
(
n
=
0
;
n
<=
31
;
n
++
,
bl
o
ck_mask
>>=
1
)
if
((
bl
o
ck_mask
&
1
)
&&
(
s
->
dyn_ltree
[
n
].
Freq
!=
0
))
return
Z_BINARY
;
/* Check for textual ("
white
-listed") bytes. */
/* Check for textual ("
allow
-listed") bytes. */
if
(
s
->
dyn_ltree
[
9
].
Freq
!=
0
||
s
->
dyn_ltree
[
10
].
Freq
!=
0
||
s
->
dyn_ltree
[
13
].
Freq
!=
0
)
return
Z_TEXT
;
...
...
@@ -1158,7 +1136,7 @@ local int detect_data_type(s)
if
(
s
->
dyn_ltree
[
n
].
Freq
!=
0
)
return
Z_TEXT
;
/* There are no "bl
ack-listed" or "white
-listed" bytes:
/* There are no "bl
ock-listed" or "allow
-listed" bytes:
* this stream either is empty or has tolerated ("gray-listed") bytes only.
*/
return
Z_BINARY
;
...
...
lib/libvgz/vgz.h
View file @
27fe7751
This diff is collapsed.
Click to expand it.
lib/libvgz/zconf.h
View file @
27fe7751
...
...
@@ -501,7 +501,6 @@ typedef uLong FAR uLongf;
#endif
#ifndef z_off_t
# error "z_off_t missing"
# define z_off_t long
#endif
...
...
lib/libvgz/zutil.c
View file @
27fe7751
...
...
@@ -137,8 +137,8 @@ const char * ZEXPORT zError(err)
return
ERR_MSG
(
err
);
}
#if defined(_WIN32_WCE)
/* The Microsoft C Run-Time Library for Windows CE doesn't have
#if defined(_WIN32_WCE)
&& _WIN32_WCE < 0x800
/* The
older
Microsoft C Run-Time Library for Windows CE doesn't have
* errno. We define it as a global variable to simplify porting.
* Its value is always 0 and should not be used.
*/
...
...
lib/libvgz/zutil.h
View file @
27fe7751
/* zutil.h -- internal interface and configuration of the compression library
* Copyright (C) 1995-20
16
Jean-loup Gailly, Mark Adler
* Copyright (C) 1995-20
22
Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
...
...
@@ -29,10 +29,6 @@
# include <stdlib.h>
#endif
#ifdef Z_SOLO
typedef
long
ptrdiff_t
;
/* guess -- will be caught if guess is wrong */
#endif
#ifndef local
# define local static
#endif
...
...
@@ -46,6 +42,17 @@ typedef unsigned short ush;
typedef
ush
FAR
ushf
;
typedef
unsigned
long
ulg
;
#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
# include <limits.h>
# if (ULONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long
# elif (ULLONG_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned long long
# elif (UINT_MAX == 0xffffffffffffffff)
# define Z_U8 unsigned
# endif
#endif
extern
z_const
char
*
const
z_errmsg
[
10
];
/* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
...
...
@@ -170,10 +177,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
# if defined(_WIN32_WCE)
# define fdopen(fd,mode) NULL
/* No fdopen() */
# ifndef _PTRDIFF_T_DEFINED
typedef
int
ptrdiff_t
;
# define _PTRDIFF_T_DEFINED
# endif
# else
# define fdopen(fd,type) _fdopen(fd,type)
# endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment