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 142 143 144
|
/* portab.h -- portability layer
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2017 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_CLANG_MSC && LZO_CC_CLANG >= 0x030500)
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
#elif (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);
lzo_free(p);
exit(1);
}
return p;
}
#endif
/* vim:set ts=4 sw=4 et: */
|