1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
/* portab.h -- portability layer
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library 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 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
http://www.oberhumer.com/opensource/lzo/
*/
#include <lzo/lzoconf.h>
#if (LZO_CC_MSC && (_MSC_VER >= 1000 && _MSC_VER < 1200))
/* avoid '-W4' warnings in system header files */
# pragma warning(disable: 4201 4214 4514)
#endif
#if (LZO_CC_MSC && (_MSC_VER >= 1300))
/* avoid '-Wall' warnings in system header files */
# pragma warning(disable: 4163 4255 4820)
/* avoid warnings about inlining */
# pragma warning(disable: 4710 4711)
#endif
/* disable silly warnings about using "deprecated" POSIX functions like "fopen" */
#if (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 1100))
# pragma warning(disable: 1786)
#elif (LZO_CC_INTELC_MSC && (__INTEL_COMPILER >= 1000))
# pragma warning(disable: 1478)
#elif (LZO_CC_MSC && (_MSC_VER >= 1400))
# pragma warning(disable: 4996)
#endif
#if (LZO_CC_PELLESC && (__POCC__ >= 290))
# pragma warn(disable:2002)
#endif
/*************************************************************************
//
**************************************************************************/
#if defined(LZO_WANT_ACCLIB_GETOPT) || !(defined(LZO_LIBC_ISOC90) || defined(LZO_LIBC_ISOC99))
#include "examples/portab_a.h"
#else
/* On any halfway modern machine we can use the following pure ANSI-C code. */
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#if defined(CLK_TCK) && !defined(CLOCKS_PER_SEC)
# define CLOCKS_PER_SEC CLK_TCK
#endif
#if defined(WANT_LZO_MALLOC)
# define lzo_malloc(a) (malloc(a))
# define lzo_free(a) (free(a))
#endif
#if defined(WANT_LZO_FREAD)
# define lzo_fread(f,b,s) (fread(b,1,s,f))
# define lzo_fwrite(f,b,s) (fwrite(b,1,s,f))
#endif
#if defined(WANT_LZO_PCLOCK)
# define lzo_pclock_handle_t int
# define lzo_pclock_t double
# define lzo_pclock_open_default(a) ((void)(a))
# define lzo_pclock_close(a) ((void)(a))
# define lzo_pclock_read(a,b) *(b) = (clock() / (double)(CLOCKS_PER_SEC))
# define lzo_pclock_get_elapsed(a,b,c) (*(c) - *(b))
# define lzo_pclock_flush_cpu_cache(a,b) ((void)(a))
#endif
#if defined(WANT_LZO_WILDARGV)
# define lzo_wildargv(a,b) ((void)0)
#endif
#endif
/*************************************************************************
// misc
**************************************************************************/
/* turn on assertions */
#undef NDEBUG
#include <assert.h>
/* just in case */
#undef xmalloc
#undef xfree
#undef xread
#undef xwrite
#undef xputc
#undef xgetc
#undef xread32
#undef xwrite32
#if defined(WANT_XMALLOC)
static lzo_voidp xmalloc(lzo_uint len)
{
lzo_voidp p;
lzo_uint align = (lzo_uint) sizeof(lzo_align_t);
p = (lzo_voidp) lzo_malloc(len > 0 ? len : 1);
if (p == NULL)
{
printf("%s: out of memory\n", progname);
exit(1);
}
if (len >= align && __lzo_align_gap(p, align) != 0)
{
printf("%s: C library problem: malloc() returned misaligned pointer!\n", progname);
exit(1);
}
return p;
}
#endif
/* vim:set ts=4 sw=4 et: */
|