1 /* lzo_supp.h -- architecture, OS and compiler specific defines 2 3 This file is part of the LZO real-time data compression library. 4 5 Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer 6 All Rights Reserved. 7 8 The LZO library is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License as 10 published by the Free Software Foundation; either version 2 of 11 the License, or (at your option) any later version. 12 13 The LZO library is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with the LZO library; see the file COPYING. 20 If not, write to the Free Software Foundation, Inc., 21 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 23 Markus F.X.J. Oberhumer 24 <markus (at) oberhumer.com> 25 http://www.oberhumer.com/opensource/lzo/ 26 */ 27 28 29 #ifndef __LZO_SUPP_H_INCLUDED 30 #define __LZO_SUPP_H_INCLUDED 1 31 #if (LZO_CFG_NO_CONFIG_HEADER) 32 #elif defined(LZO_CFG_CONFIG_HEADER) 33 #else 34 #if !(LZO_CFG_AUTO_NO_HEADERS) 35 #if (LZO_LIBC_NAKED) 36 #elif (LZO_LIBC_FREESTANDING) 37 # define HAVE_LIMITS_H 1 38 # define HAVE_STDARG_H 1 39 # define HAVE_STDDEF_H 1 40 #elif (LZO_LIBC_MOSTLY_FREESTANDING) 41 # define HAVE_LIMITS_H 1 42 # define HAVE_SETJMP_H 1 43 # define HAVE_STDARG_H 1 44 # define HAVE_STDDEF_H 1 45 # define HAVE_STDIO_H 1 46 # define HAVE_STRING_H 1 47 #else 48 #define STDC_HEADERS 1 49 #define HAVE_ASSERT_H 1 50 #define HAVE_CTYPE_H 1 51 #define HAVE_DIRENT_H 1 52 #define HAVE_ERRNO_H 1 53 #define HAVE_FCNTL_H 1 54 #define HAVE_FLOAT_H 1 55 #define HAVE_LIMITS_H 1 56 #define HAVE_MALLOC_H 1 57 #define HAVE_MEMORY_H 1 58 #define HAVE_SETJMP_H 1 59 #define HAVE_SIGNAL_H 1 60 #define HAVE_STDARG_H 1 61 #define HAVE_STDDEF_H 1 62 #define HAVE_STDIO_H 1 63 #define HAVE_STDLIB_H 1 64 #define HAVE_STRING_H 1 65 #define HAVE_TIME_H 1 66 #define HAVE_UNISTD_H 1 67 #define HAVE_UTIME_H 1 68 #define HAVE_SYS_STAT_H 1 69 #define HAVE_SYS_TIME_H 1 70 #define HAVE_SYS_TYPES_H 1 71 #if (LZO_OS_POSIX) 72 # if (LZO_OS_POSIX_AIX) 73 # define HAVE_SYS_RESOURCE_H 1 74 # elif (LZO_OS_POSIX_FREEBSD || LZO_OS_POSIX_MACOSX || LZO_OS_POSIX_NETBSD || LZO_OS_POSIX_OPENBSD) 75 # define HAVE_STRINGS_H 1 76 # undef HAVE_MALLOC_H 77 # elif (LZO_OS_POSIX_HPUX || LZO_OS_POSIX_INTERIX) 78 # define HAVE_ALLOCA_H 1 79 # elif (LZO_OS_POSIX_MACOSX && LZO_LIBC_MSL) 80 # undef HAVE_SYS_TIME_H 81 # undef HAVE_SYS_TYPES_H 82 # elif (LZO_OS_POSIX_SOLARIS || LZO_OS_POSIX_SUNOS) 83 # define HAVE_ALLOCA_H 1 84 # endif 85 # if (LZO_LIBC_DIETLIBC || LZO_LIBC_GLIBC || LZO_LIBC_UCLIBC) 86 # define HAVE_STRINGS_H 1 87 # define HAVE_SYS_MMAN_H 1 88 # define HAVE_SYS_RESOURCE_H 1 89 # define HAVE_SYS_WAIT_H 1 90 # endif 91 # if (LZO_LIBC_NEWLIB) 92 # undef HAVE_STRINGS_H 93 # endif 94 #elif (LZO_OS_CYGWIN) 95 # define HAVE_IO_H 1 96 #elif (LZO_OS_EMX) 97 # define HAVE_ALLOCA_H 1 98 # define HAVE_IO_H 1 99 #elif (LZO_ARCH_M68K && LZO_OS_TOS && LZO_CC_GNUC) 100 # if !defined(__MINT__) 101 # undef HAVE_MALLOC_H 102 # endif 103 #elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) 104 # undef HAVE_DIRENT_H 105 # undef HAVE_FCNTL_H 106 # undef HAVE_MALLOC_H 107 # undef HAVE_MEMORY_H 108 # undef HAVE_UNISTD_H 109 # undef HAVE_UTIME_H 110 # undef HAVE_SYS_STAT_H 111 # undef HAVE_SYS_TIME_H 112 # undef HAVE_SYS_TYPES_H 113 #endif 114 #if (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) 115 #define HAVE_CONIO_H 1 116 #define HAVE_DIRECT_H 1 117 #define HAVE_DOS_H 1 118 #define HAVE_IO_H 1 119 #define HAVE_SHARE_H 1 120 #if (LZO_CC_AZTECC) 121 # undef HAVE_CONIO_H 122 # undef HAVE_DIRECT_H 123 # undef HAVE_DIRENT_H 124 # undef HAVE_MALLOC_H 125 # undef HAVE_SHARE_H 126 # undef HAVE_UNISTD_H 127 # undef HAVE_UTIME_H 128 # undef HAVE_SYS_STAT_H 129 # undef HAVE_SYS_TIME_H 130 # undef HAVE_SYS_TYPES_H 131 #elif (LZO_CC_BORLANDC) 132 # undef HAVE_UNISTD_H 133 # undef HAVE_SYS_TIME_H 134 # if (LZO_OS_WIN32 || LZO_OS_WIN64) 135 # undef HAVE_DIRENT_H 136 # endif 137 # if (__BORLANDC__ < 0x0400) 138 # undef HAVE_DIRENT_H 139 # undef HAVE_UTIME_H 140 # endif 141 #elif (LZO_CC_DMC) 142 # undef HAVE_DIRENT_H 143 # undef HAVE_UNISTD_H 144 # define HAVE_SYS_DIRENT_H 1 145 #elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 146 #elif (LZO_OS_DOS32 && LZO_CC_HIGHC) 147 # define HAVE_ALLOCA_H 1 148 # undef HAVE_DIRENT_H 149 # undef HAVE_UNISTD_H 150 #elif (LZO_CC_IBMC && LZO_OS_OS2) 151 # undef HAVE_DOS_H 152 # undef HAVE_DIRENT_H 153 # undef HAVE_UNISTD_H 154 # undef HAVE_UTIME_H 155 # undef HAVE_SYS_TIME_H 156 # define HAVE_SYS_UTIME_H 1 157 #elif (LZO_CC_GHS || LZO_CC_INTELC || LZO_CC_MSC) 158 # undef HAVE_DIRENT_H 159 # undef HAVE_UNISTD_H 160 # undef HAVE_UTIME_H 161 # undef HAVE_SYS_TIME_H 162 # define HAVE_SYS_UTIME_H 1 163 #elif (LZO_CC_LCCWIN32) 164 # undef HAVE_DIRENT_H 165 # undef HAVE_DOS_H 166 # undef HAVE_UNISTD_H 167 # undef HAVE_SYS_TIME_H 168 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__MINGW32__) 169 # undef HAVE_UTIME_H 170 # define HAVE_SYS_UTIME_H 1 171 #elif (LZO_OS_WIN32 && LZO_LIBC_MSL) 172 # define HAVE_ALLOCA_H 1 173 # undef HAVE_DOS_H 174 # undef HAVE_SHARE_H 175 # undef HAVE_SYS_TIME_H 176 #elif (LZO_CC_NDPC) 177 # undef HAVE_DIRENT_H 178 # undef HAVE_DOS_H 179 # undef HAVE_UNISTD_H 180 # undef HAVE_UTIME_H 181 # undef HAVE_SYS_TIME_H 182 #elif (LZO_CC_PACIFICC) 183 # undef HAVE_DIRECT_H 184 # undef HAVE_DIRENT_H 185 # undef HAVE_FCNTL_H 186 # undef HAVE_IO_H 187 # undef HAVE_MALLOC_H 188 # undef HAVE_MEMORY_H 189 # undef HAVE_SHARE_H 190 # undef HAVE_UNISTD_H 191 # undef HAVE_UTIME_H 192 # undef HAVE_SYS_STAT_H 193 # undef HAVE_SYS_TIME_H 194 # undef HAVE_SYS_TYPES_H 195 #elif (LZO_OS_WIN32 && LZO_CC_PELLESC) 196 # undef HAVE_DIRENT_H 197 # undef HAVE_DOS_H 198 # undef HAVE_MALLOC_H 199 # undef HAVE_SHARE_H 200 # undef HAVE_UNISTD_H 201 # undef HAVE_UTIME_H 202 # undef HAVE_SYS_TIME_H 203 # if (__POCC__ < 280) 204 # else 205 # define HAVE_SYS_UTIME_H 1 206 # endif 207 #elif (LZO_OS_WIN32 && LZO_CC_PGI) && defined(__MINGW32__) 208 # undef HAVE_UTIME_H 209 # define HAVE_SYS_UTIME_H 1 210 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 211 #elif (LZO_CC_SYMANTECC) 212 # undef HAVE_DIRENT_H 213 # undef HAVE_UNISTD_H 214 # if (__SC__ < 0x700) 215 # undef HAVE_UTIME_H 216 # undef HAVE_SYS_TIME_H 217 # endif 218 #elif (LZO_CC_TOPSPEEDC) 219 # undef HAVE_DIRENT_H 220 # undef HAVE_UNISTD_H 221 # undef HAVE_UTIME_H 222 # undef HAVE_SYS_STAT_H 223 # undef HAVE_SYS_TIME_H 224 # undef HAVE_SYS_TYPES_H 225 #elif (LZO_CC_TURBOC) 226 # undef HAVE_UNISTD_H 227 # undef HAVE_SYS_TIME_H 228 # undef HAVE_SYS_TYPES_H 229 # if (LZO_OS_WIN32 || LZO_OS_WIN64) 230 # undef HAVE_DIRENT_H 231 # endif 232 # if (__TURBOC__ < 0x0200) 233 # undef HAVE_SIGNAL_H 234 # endif 235 # if (__TURBOC__ < 0x0400) 236 # undef HAVE_DIRECT_H 237 # undef HAVE_DIRENT_H 238 # undef HAVE_MALLOC_H 239 # undef HAVE_MEMORY_H 240 # undef HAVE_UTIME_H 241 # endif 242 #elif (LZO_CC_WATCOMC) 243 # undef HAVE_DIRENT_H 244 # undef HAVE_UTIME_H 245 # undef HAVE_SYS_TIME_H 246 # define HAVE_SYS_UTIME_H 1 247 # if (__WATCOMC__ < 950) 248 # undef HAVE_UNISTD_H 249 # endif 250 #elif (LZO_CC_ZORTECHC) 251 # undef HAVE_DIRENT_H 252 # undef HAVE_MEMORY_H 253 # undef HAVE_UNISTD_H 254 # undef HAVE_UTIME_H 255 # undef HAVE_SYS_TIME_H 256 #endif 257 #endif 258 #if (LZO_OS_CONSOLE) 259 # undef HAVE_DIRENT_H 260 #endif 261 #if (LZO_OS_EMBEDDED) 262 # undef HAVE_DIRENT_H 263 #endif 264 #if (LZO_LIBC_ISOC90 || LZO_LIBC_ISOC99) 265 # undef HAVE_DIRENT_H 266 # undef HAVE_FCNTL_H 267 # undef HAVE_MALLOC_H 268 # undef HAVE_UNISTD_H 269 # undef HAVE_UTIME_H 270 # undef HAVE_SYS_STAT_H 271 # undef HAVE_SYS_TIME_H 272 # undef HAVE_SYS_TYPES_H 273 #endif 274 #if (LZO_LIBC_GLIBC >= 0x020100ul) 275 # define HAVE_STDINT_H 1 276 #elif (LZO_LIBC_DIETLIBC) 277 # undef HAVE_STDINT_H 278 #elif (LZO_LIBC_UCLIBC) 279 # define HAVE_STDINT_H 1 280 #elif (LZO_CC_BORLANDC) && (__BORLANDC__ >= 0x560) 281 # undef HAVE_STDINT_H 282 #elif (LZO_CC_DMC) && (__DMC__ >= 0x825) 283 # define HAVE_STDINT_H 1 284 #endif 285 #if (HAVE_SYS_TIME_H && HAVE_TIME_H) 286 # define TIME_WITH_SYS_TIME 1 287 #endif 288 #endif 289 #endif 290 #if !(LZO_CFG_AUTO_NO_FUNCTIONS) 291 #if (LZO_LIBC_NAKED) 292 #elif (LZO_LIBC_FREESTANDING) 293 #elif (LZO_LIBC_MOSTLY_FREESTANDING) 294 # define HAVE_LONGJMP 1 295 # define HAVE_MEMCMP 1 296 # define HAVE_MEMCPY 1 297 # define HAVE_MEMMOVE 1 298 # define HAVE_MEMSET 1 299 # define HAVE_SETJMP 1 300 #else 301 #define HAVE_ACCESS 1 302 #define HAVE_ALLOCA 1 303 #define HAVE_ATEXIT 1 304 #define HAVE_ATOI 1 305 #define HAVE_ATOL 1 306 #define HAVE_CHMOD 1 307 #define HAVE_CHOWN 1 308 #define HAVE_CTIME 1 309 #define HAVE_DIFFTIME 1 310 #define HAVE_FILENO 1 311 #define HAVE_FSTAT 1 312 #define HAVE_GETENV 1 313 #define HAVE_GETTIMEOFDAY 1 314 #define HAVE_GMTIME 1 315 #define HAVE_ISATTY 1 316 #define HAVE_LOCALTIME 1 317 #define HAVE_LONGJMP 1 318 #define HAVE_LSTAT 1 319 #define HAVE_MEMCMP 1 320 #define HAVE_MEMCPY 1 321 #define HAVE_MEMMOVE 1 322 #define HAVE_MEMSET 1 323 #define HAVE_MKDIR 1 324 #define HAVE_MKTIME 1 325 #define HAVE_QSORT 1 326 #define HAVE_RAISE 1 327 #define HAVE_RMDIR 1 328 #define HAVE_SETJMP 1 329 #define HAVE_SIGNAL 1 330 #define HAVE_SNPRINTF 1 331 #define HAVE_STAT 1 332 #define HAVE_STRCHR 1 333 #define HAVE_STRDUP 1 334 #define HAVE_STRERROR 1 335 #define HAVE_STRFTIME 1 336 #define HAVE_STRRCHR 1 337 #define HAVE_STRSTR 1 338 #define HAVE_TIME 1 339 #define HAVE_UMASK 1 340 #define HAVE_UTIME 1 341 #define HAVE_VSNPRINTF 1 342 #if (LZO_OS_BEOS || LZO_OS_CYGWIN || LZO_OS_POSIX || LZO_OS_QNX || LZO_OS_VMS) 343 # define HAVE_STRCASECMP 1 344 # define HAVE_STRNCASECMP 1 345 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 346 # define HAVE_STRCASECMP 1 347 # define HAVE_STRNCASECMP 1 348 #else 349 # define HAVE_STRICMP 1 350 # define HAVE_STRNICMP 1 351 #endif 352 #if (LZO_OS_POSIX) 353 # if (LZO_OS_POSIX_AIX) 354 # define HAVE_GETRUSAGE 1 355 # elif (LZO_OS_POSIX_MACOSX && LZO_LIBC_MSL) 356 # undef HAVE_CHOWN 357 # undef HAVE_LSTAT 358 # elif (LZO_OS_POSIX_UNICOS) 359 # undef HAVE_ALLOCA 360 # undef HAVE_SNPRINTF 361 # undef HAVE_VSNPRINTF 362 # endif 363 # if (LZO_CC_TINYC) 364 # undef HAVE_ALLOCA 365 # endif 366 # if (LZO_LIBC_DIETLIBC || LZO_LIBC_GLIBC || LZO_LIBC_UCLIBC) 367 # define HAVE_GETRUSAGE 1 368 # define HAVE_GETPAGESIZE 1 369 # define HAVE_MMAP 1 370 # define HAVE_MPROTECT 1 371 # define HAVE_MUNMAP 1 372 # endif 373 #elif (LZO_OS_CYGWIN) 374 # if (LZO_CC_GNUC < 0x025a00ul) 375 # undef HAVE_GETTIMEOFDAY 376 # undef HAVE_LSTAT 377 # endif 378 # if (LZO_CC_GNUC < 0x025f00ul) 379 # undef HAVE_SNPRINTF 380 # undef HAVE_VSNPRINTF 381 # endif 382 #elif (LZO_OS_EMX) 383 # undef HAVE_CHOWN 384 # undef HAVE_LSTAT 385 #elif (LZO_ARCH_M68K && LZO_OS_TOS && LZO_CC_GNUC) 386 # if !defined(__MINT__) 387 # undef HAVE_SNPRINTF 388 # undef HAVE_VSNPRINTF 389 # endif 390 #elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) 391 # undef HAVE_ALLOCA 392 # undef HAVE_ACCESS 393 # undef HAVE_CHMOD 394 # undef HAVE_CHOWN 395 # undef HAVE_FSTAT 396 # undef HAVE_GETTIMEOFDAY 397 # undef HAVE_LSTAT 398 # undef HAVE_SNPRINTF 399 # undef HAVE_UMASK 400 # undef HAVE_UTIME 401 # undef HAVE_VSNPRINTF 402 #endif 403 #if (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) 404 #undef HAVE_CHOWN 405 #undef HAVE_GETTIMEOFDAY 406 #undef HAVE_LSTAT 407 #undef HAVE_UMASK 408 #if (LZO_CC_AZTECC) 409 # undef HAVE_ALLOCA 410 # undef HAVE_DIFFTIME 411 # undef HAVE_FSTAT 412 # undef HAVE_STRDUP 413 # undef HAVE_SNPRINTF 414 # undef HAVE_UTIME 415 # undef HAVE_VSNPRINTF 416 #elif (LZO_CC_BORLANDC) 417 # if (__BORLANDC__ < 0x0400) 418 # undef HAVE_ALLOCA 419 # undef HAVE_UTIME 420 # endif 421 # if ((__BORLANDC__ < 0x0410) && LZO_OS_WIN16) 422 # undef HAVE_ALLOCA 423 # endif 424 # if (__BORLANDC__ < 0x0550) 425 # undef HAVE_SNPRINTF 426 # undef HAVE_VSNPRINTF 427 # endif 428 #elif (LZO_CC_DMC) 429 # if (LZO_OS_WIN16) 430 # undef HAVE_ALLOCA 431 # endif 432 # define snprintf _snprintf 433 # define vsnprintf _vsnprintf 434 #elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 435 # undef HAVE_SNPRINTF 436 # undef HAVE_VSNPRINTF 437 #elif (LZO_OS_DOS32 && LZO_CC_HIGHC) 438 # undef HAVE_SNPRINTF 439 # undef HAVE_VSNPRINTF 440 #elif (LZO_CC_GHS) 441 # undef HAVE_ALLOCA 442 # ifndef snprintf 443 # define snprintf _snprintf 444 # endif 445 # ifndef vsnprintf 446 # define vsnprintf _vsnprintf 447 # endif 448 #elif (LZO_CC_IBMC) 449 # undef HAVE_SNPRINTF 450 # undef HAVE_VSNPRINTF 451 #elif (LZO_CC_INTELC) 452 # ifndef snprintf 453 # define snprintf _snprintf 454 # endif 455 # ifndef vsnprintf 456 # define vsnprintf _vsnprintf 457 # endif 458 #elif (LZO_CC_LCCWIN32) 459 # define utime _utime 460 #elif (LZO_CC_MSC) 461 # if (_MSC_VER < 600) 462 # undef HAVE_STRFTIME 463 # endif 464 # if (_MSC_VER < 700) 465 # undef HAVE_SNPRINTF 466 # undef HAVE_VSNPRINTF 467 # elif (_MSC_VER < 1500) 468 # ifndef snprintf 469 # define snprintf _snprintf 470 # endif 471 # ifndef vsnprintf 472 # define vsnprintf _vsnprintf 473 # endif 474 # else 475 # ifndef snprintf 476 # define snprintf _snprintf 477 # endif 478 # endif 479 # if ((_MSC_VER < 800) && LZO_OS_WIN16) 480 # undef HAVE_ALLOCA 481 # endif 482 # if (LZO_ARCH_I086) && defined(__cplusplus) 483 # undef HAVE_LONGJMP 484 # undef HAVE_SETJMP 485 # endif 486 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__MINGW32__) 487 # if (LZO_CC_GNUC < 0x025f00ul) 488 # undef HAVE_SNPRINTF 489 # undef HAVE_VSNPRINTF 490 # else 491 # define snprintf _snprintf 492 # define vsnprintf _vsnprintf 493 # endif 494 #elif (LZO_OS_WIN32 && LZO_LIBC_MSL) 495 # if (__MSL__ < 0x8000ul) 496 # undef HAVE_CHMOD 497 # endif 498 #elif (LZO_CC_NDPC) 499 # undef HAVE_ALLOCA 500 # undef HAVE_SNPRINTF 501 # undef HAVE_STRNICMP 502 # undef HAVE_UTIME 503 # undef HAVE_VSNPRINTF 504 # if defined(__cplusplus) 505 # undef HAVE_STAT 506 # endif 507 #elif (LZO_CC_PACIFICC) 508 # undef HAVE_ACCESS 509 # undef HAVE_ALLOCA 510 # undef HAVE_CHMOD 511 # undef HAVE_DIFFTIME 512 # undef HAVE_FSTAT 513 # undef HAVE_MKTIME 514 # undef HAVE_RAISE 515 # undef HAVE_SNPRINTF 516 # undef HAVE_STRFTIME 517 # undef HAVE_UTIME 518 # undef HAVE_VSNPRINTF 519 #elif (LZO_OS_WIN32 && LZO_CC_PELLESC) 520 # if (__POCC__ < 280) 521 # define alloca _alloca 522 # undef HAVE_UTIME 523 # endif 524 #elif (LZO_OS_WIN32 && LZO_CC_PGI) && defined(__MINGW32__) 525 # define snprintf _snprintf 526 # define vsnprintf _vsnprintf 527 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 528 # undef HAVE_SNPRINTF 529 # undef HAVE_VSNPRINTF 530 #elif (LZO_CC_SYMANTECC) 531 # if (LZO_OS_WIN16 && (LZO_MM_MEDIUM || LZO_MM_LARGE || LZO_MM_HUGE)) 532 # undef HAVE_ALLOCA 533 # endif 534 # if (__SC__ < 0x600) 535 # undef HAVE_SNPRINTF 536 # undef HAVE_VSNPRINTF 537 # else 538 # define snprintf _snprintf 539 # define vsnprintf _vsnprintf 540 # endif 541 # if (__SC__ < 0x700) 542 # undef HAVE_DIFFTIME 543 # undef HAVE_UTIME 544 # endif 545 #elif (LZO_CC_TOPSPEEDC) 546 # undef HAVE_SNPRINTF 547 # undef HAVE_VSNPRINTF 548 #elif (LZO_CC_TURBOC) 549 # undef HAVE_ALLOCA 550 # undef HAVE_SNPRINTF 551 # undef HAVE_VSNPRINTF 552 # if (__TURBOC__ < 0x0200) 553 # undef HAVE_RAISE 554 # undef HAVE_SIGNAL 555 # endif 556 # if (__TURBOC__ < 0x0295) 557 # undef HAVE_MKTIME 558 # undef HAVE_STRFTIME 559 # endif 560 # if (__TURBOC__ < 0x0400) 561 # undef HAVE_UTIME 562 # endif 563 #elif (LZO_CC_WATCOMC) 564 # if (__WATCOMC__ < 1100) 565 # undef HAVE_SNPRINTF 566 # undef HAVE_VSNPRINTF 567 # elif (__WATCOMC__ < 1200) 568 # define snprintf _snprintf 569 # define vsnprintf _vsnprintf 570 # endif 571 #elif (LZO_CC_ZORTECHC) 572 # if (LZO_OS_WIN16 && (LZO_MM_MEDIUM || LZO_MM_LARGE || LZO_MM_HUGE)) 573 # undef HAVE_ALLOCA 574 # endif 575 # undef HAVE_DIFFTIME 576 # undef HAVE_SNPRINTF 577 # undef HAVE_UTIME 578 # undef HAVE_VSNPRINTF 579 #endif 580 #endif 581 #if (LZO_OS_CONSOLE) 582 # undef HAVE_ACCESS 583 # undef HAVE_CHMOD 584 # undef HAVE_CHOWN 585 # undef HAVE_GETTIMEOFDAY 586 # undef HAVE_LSTAT 587 # undef HAVE_TIME 588 # undef HAVE_UMASK 589 # undef HAVE_UTIME 590 #endif 591 #if (LZO_LIBC_ISOC90 || LZO_LIBC_ISOC99) 592 # undef HAVE_ACCESS 593 # undef HAVE_CHMOD 594 # undef HAVE_CHOWN 595 # undef HAVE_FILENO 596 # undef HAVE_FSTAT 597 # undef HAVE_GETTIMEOFDAY 598 # undef HAVE_LSTAT 599 # undef HAVE_STAT 600 # undef HAVE_UMASK 601 # undef HAVE_UTIME 602 # if 1 603 # undef HAVE_ALLOCA 604 # undef HAVE_ISATTY 605 # undef HAVE_MKDIR 606 # undef HAVE_RMDIR 607 # undef HAVE_STRDUP 608 # undef HAVE_STRICMP 609 # undef HAVE_STRNICMP 610 # endif 611 #endif 612 #endif 613 #endif 614 #if !(LZO_CFG_AUTO_NO_SIZES) 615 #if !defined(SIZEOF_SHORT) && defined(LZO_SIZEOF_SHORT) 616 # define SIZEOF_SHORT LZO_SIZEOF_SHORT 617 #endif 618 #if !defined(SIZEOF_INT) && defined(LZO_SIZEOF_INT) 619 # define SIZEOF_INT LZO_SIZEOF_INT 620 #endif 621 #if !defined(SIZEOF_LONG) && defined(LZO_SIZEOF_LONG) 622 # define SIZEOF_LONG LZO_SIZEOF_LONG 623 #endif 624 #if !defined(SIZEOF_LONG_LONG) && defined(LZO_SIZEOF_LONG_LONG) 625 # define SIZEOF_LONG_LONG LZO_SIZEOF_LONG_LONG 626 #endif 627 #if !defined(SIZEOF___INT32) && defined(LZO_SIZEOF___INT32) 628 # define SIZEOF___INT32 LZO_SIZEOF___INT32 629 #endif 630 #if !defined(SIZEOF___INT64) && defined(LZO_SIZEOF___INT64) 631 # define SIZEOF___INT64 LZO_SIZEOF___INT64 632 #endif 633 #if !defined(SIZEOF_VOID_P) && defined(LZO_SIZEOF_VOID_P) 634 # define SIZEOF_VOID_P LZO_SIZEOF_VOID_P 635 #endif 636 #if !defined(SIZEOF_SIZE_T) && defined(LZO_SIZEOF_SIZE_T) 637 # define SIZEOF_SIZE_T LZO_SIZEOF_SIZE_T 638 #endif 639 #if !defined(SIZEOF_PTRDIFF_T) && defined(LZO_SIZEOF_PTRDIFF_T) 640 # define SIZEOF_PTRDIFF_T LZO_SIZEOF_PTRDIFF_T 641 #endif 642 #endif 643 #if (HAVE_SIGNAL) && !defined(RETSIGTYPE) 644 # define RETSIGTYPE void 645 #endif 646 #endif 647 #if !(LZO_CFG_SKIP_LZO_TYPES) 648 #if 1 && !defined(lzo_signo_t) && defined(__linux__) && defined(__dietlibc__) && (LZO_SIZEOF_INT != 4) 649 # define lzo_signo_t lzo_int32e_t 650 #endif 651 #if !defined(lzo_signo_t) 652 # define lzo_signo_t int 653 #endif 654 #if defined(__cplusplus) 655 extern "C" { 656 #endif 657 #if (LZO_BROKEN_CDECL_ALT_SYNTAX) 658 typedef void __lzo_cdecl_sighandler (*lzo_sighandler_t)(lzo_signo_t); 659 #elif defined(RETSIGTYPE) 660 typedef RETSIGTYPE (__lzo_cdecl_sighandler *lzo_sighandler_t)(lzo_signo_t); 661 #else 662 typedef void (__lzo_cdecl_sighandler *lzo_sighandler_t)(lzo_signo_t); 663 #endif 664 #if defined(__cplusplus) 665 } 666 #endif 667 #endif 668 #endif 669 #if defined(LZO_WANT_ACC_INCD_H) 670 # undef LZO_WANT_ACC_INCD_H 671 #ifndef __LZO_INCD_H_INCLUDED 672 #define __LZO_INCD_H_INCLUDED 1 673 #if (LZO_LIBC_NAKED) 674 #ifndef __LZO_FALLBACK_STDDEF_H_INCLUDED 675 #define __LZO_FALLBACK_STDDEF_H_INCLUDED 1 676 #if defined(__PTRDIFF_TYPE__) 677 typedef __PTRDIFF_TYPE__ lzo_fallback_ptrdiff_t; 678 #elif defined(__MIPS_PSX2__) 679 typedef int lzo_fallback_ptrdiff_t; 680 #else 681 typedef long lzo_fallback_ptrdiff_t; 682 #endif 683 #if defined(__SIZE_TYPE__) 684 typedef __SIZE_TYPE__ lzo_fallback_size_t; 685 #elif defined(__MIPS_PSX2__) 686 typedef unsigned int lzo_fallback_size_t; 687 #else 688 typedef unsigned long lzo_fallback_size_t; 689 #endif 690 #if !defined(ptrdiff_t) 691 typedef lzo_fallback_ptrdiff_t ptrdiff_t; 692 #ifndef _PTRDIFF_T_DEFINED 693 #define _PTRDIFF_T_DEFINED 1 694 #endif 695 #endif 696 #if !defined(size_t) 697 typedef lzo_fallback_size_t size_t; 698 #ifndef _SIZE_T_DEFINED 699 #define _SIZE_T_DEFINED 1 700 #endif 701 #endif 702 #if !defined(__cplusplus) && !defined(wchar_t) 703 typedef unsigned short wchar_t; 704 #ifndef _WCHAR_T_DEFINED 705 #define _WCHAR_T_DEFINED 1 706 #endif 707 #endif 708 #ifndef NULL 709 #if defined(__cplusplus) && defined(__GNUC__) && (__GNUC__ >= 4) 710 #define NULL __null 711 #elif defined(__cplusplus) 712 #define NULL 0 713 #else 714 #define NULL ((void*)0) 715 #endif 716 #endif 717 #ifndef offsetof 718 #define offsetof(s,m) ((size_t)((ptrdiff_t)&(((s*)0)->m))) 719 #endif 720 #endif 721 #elif (LZO_LIBC_FREESTANDING) 722 # if defined(HAVE_STDDEF_H) && (HAVE_STDDEF_H+0) 723 # include <stddef.h> 724 # endif 725 # if defined(HAVE_STDINT_H) && (HAVE_STDINT_H+0) 726 # include <stdint.h> 727 # endif 728 #elif (LZO_LIBC_MOSTLY_FREESTANDING) 729 # if defined(HAVE_STDIO_H) && (HAVE_STDIO_H+0) 730 # include <stdio.h> 731 # endif 732 # if defined(HAVE_STDDEF_H) && (HAVE_STDDEF_H+0) 733 # include <stddef.h> 734 # endif 735 # if defined(HAVE_STDINT_H) && (HAVE_STDINT_H+0) 736 # include <stdint.h> 737 # endif 738 #else 739 #include <stdio.h> 740 #if defined(HAVE_TIME_H) && (HAVE_TIME_H+0) && defined(__MSL__) && defined(__cplusplus) 741 # include <time.h> 742 #endif 743 #if defined(HAVE_SYS_TYPES_H) && (HAVE_SYS_TYPES_H+0) 744 # include <sys/types.h> 745 #endif 746 #if defined(HAVE_SYS_STAT_H) && (HAVE_SYS_STAT_H+0) 747 # include <sys/stat.h> 748 #endif 749 #if defined(STDC_HEADERS) && (STDC_HEADERS+0) 750 # include <stdlib.h> 751 #elif defined(HAVE_STDLIB_H) && (HAVE_STDLIB_H+0) 752 # include <stdlib.h> 753 #endif 754 #include <stddef.h> 755 #if defined(HAVE_STRING_H) && (HAVE_STRING_H+0) 756 # if defined(STDC_HEADERS) && (STDC_HEADERS+0) 757 # elif defined(HAVE_MEMORY_H) && (HAVE_MEMORY_H+0) 758 # include <memory.h> 759 # endif 760 # include <string.h> 761 #endif 762 #if defined(HAVE_STRINGS_H) && (HAVE_STRINGS_H+0) 763 # include <strings.h> 764 #endif 765 #if defined(HAVE_INTTYPES_H) && (HAVE_INTTYPES_H+0) 766 # include <inttypes.h> 767 #endif 768 #if defined(HAVE_STDINT_H) && (HAVE_STDINT_H+0) 769 # include <stdint.h> 770 #endif 771 #if defined(HAVE_UNISTD_H) && (HAVE_UNISTD_H+0) 772 # include <unistd.h> 773 #endif 774 #endif 775 #endif 776 #endif 777 #if defined(LZO_WANT_ACC_INCE_H) 778 # undef LZO_WANT_ACC_INCE_H 779 #ifndef __LZO_INCE_H_INCLUDED 780 #define __LZO_INCE_H_INCLUDED 1 781 #if (LZO_LIBC_NAKED) 782 #elif (LZO_LIBC_FREESTANDING) 783 #elif (LZO_LIBC_MOSTLY_FREESTANDING) 784 # if (HAVE_SETJMP_H) 785 # include <setjmp.h> 786 # endif 787 #else 788 #if (HAVE_STDARG_H) 789 # include <stdarg.h> 790 #endif 791 #if (HAVE_CTYPE_H) 792 # include <ctype.h> 793 #endif 794 #if (HAVE_ERRNO_H) 795 # include <errno.h> 796 #endif 797 #if (HAVE_MALLOC_H) 798 # include <malloc.h> 799 #endif 800 #if (HAVE_ALLOCA_H) 801 # include <alloca.h> 802 #endif 803 #if (HAVE_FCNTL_H) 804 # include <fcntl.h> 805 #endif 806 #if (HAVE_DIRENT_H) 807 # include <dirent.h> 808 #endif 809 #if (HAVE_SETJMP_H) 810 # include <setjmp.h> 811 #endif 812 #if (HAVE_SIGNAL_H) 813 # include <signal.h> 814 #endif 815 #if (TIME_WITH_SYS_TIME) 816 # include <sys/time.h> 817 # include <time.h> 818 #elif (HAVE_TIME_H) 819 # include <time.h> 820 #endif 821 #if (HAVE_UTIME_H) 822 # include <utime.h> 823 #elif (HAVE_SYS_UTIME_H) 824 # include <sys/utime.h> 825 #endif 826 #if (HAVE_IO_H) 827 # include <io.h> 828 #endif 829 #if (HAVE_DOS_H) 830 # include <dos.h> 831 #endif 832 #if (HAVE_DIRECT_H) 833 # include <direct.h> 834 #endif 835 #if (HAVE_SHARE_H) 836 # include <share.h> 837 #endif 838 #if (LZO_CC_NDPC) 839 # include <os.h> 840 #endif 841 #if defined(__TOS__) && (defined(__PUREC__) || defined(__TURBOC__)) 842 # include <ext.h> 843 #endif 844 #endif 845 #endif 846 #endif 847 #if defined(LZO_WANT_ACC_INCI_H) 848 # undef LZO_WANT_ACC_INCI_H 849 #ifndef __LZO_INCI_H_INCLUDED 850 #define __LZO_INCI_H_INCLUDED 1 851 #if (LZO_LIBC_NAKED) 852 #elif (LZO_LIBC_FREESTANDING) 853 #elif (LZO_LIBC_MOSTLY_FREESTANDING) 854 #else 855 #if (LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) 856 # include <tos.h> 857 #elif (LZO_HAVE_WINDOWS_H) 858 # if 1 && !defined(WIN32_LEAN_AND_MEAN) 859 # define WIN32_LEAN_AND_MEAN 1 860 # endif 861 # if 1 && !defined(_WIN32_WINNT) 862 # define _WIN32_WINNT 0x0400 863 # endif 864 # include <windows.h> 865 # if (LZO_CC_BORLANDC || LZO_CC_TURBOC) 866 # include <dir.h> 867 # endif 868 #elif (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_WIN16) 869 # if (LZO_CC_AZTECC) 870 # include <model.h> 871 # include <stat.h> 872 # elif (LZO_CC_BORLANDC || LZO_CC_TURBOC) 873 # include <alloc.h> 874 # include <dir.h> 875 # elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 876 # include <sys/exceptn.h> 877 # elif (LZO_CC_PACIFICC) 878 # include <unixio.h> 879 # include <stat.h> 880 # include <sys.h> 881 # elif (LZO_CC_WATCOMC) 882 # include <i86.h> 883 # endif 884 #elif (LZO_OS_OS216) 885 # if (LZO_CC_WATCOMC) 886 # include <i86.h> 887 # endif 888 #endif 889 #if (HAVE_SYS_MMAN_H) 890 # include <sys/mman.h> 891 #endif 892 #if (HAVE_SYS_RESOURCE_H) 893 # include <sys/resource.h> 894 #endif 895 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) 896 # if defined(FP_OFF) 897 # define LZO_PTR_FP_OFF(x) FP_OFF(x) 898 # elif defined(_FP_OFF) 899 # define LZO_PTR_FP_OFF(x) _FP_OFF(x) 900 # else 901 # define LZO_PTR_FP_OFF(x) (((const unsigned __far*)&(x))[0]) 902 # endif 903 # if defined(FP_SEG) 904 # define LZO_PTR_FP_SEG(x) FP_SEG(x) 905 # elif defined(_FP_SEG) 906 # define LZO_PTR_FP_SEG(x) _FP_SEG(x) 907 # else 908 # define LZO_PTR_FP_SEG(x) (((const unsigned __far*)&(x))[1]) 909 # endif 910 # if defined(MK_FP) 911 # define LZO_PTR_MK_FP(s,o) MK_FP(s,o) 912 # elif defined(_MK_FP) 913 # define LZO_PTR_MK_FP(s,o) _MK_FP(s,o) 914 # else 915 # define LZO_PTR_MK_FP(s,o) ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o))) 916 # endif 917 # if 0 918 # undef LZO_PTR_FP_OFF 919 # undef LZO_PTR_FP_SEG 920 # undef LZO_PTR_MK_FP 921 # define LZO_PTR_FP_OFF(x) (((const unsigned __far*)&(x))[0]) 922 # define LZO_PTR_FP_SEG(x) (((const unsigned __far*)&(x))[1]) 923 # define LZO_PTR_MK_FP(s,o) ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o))) 924 # endif 925 #endif 926 #endif 927 #endif 928 #endif 929 #if defined(LZO_WANT_ACC_LIB_H) 930 # undef LZO_WANT_ACC_LIB_H 931 #ifndef __LZO_LIB_H_INCLUDED 932 #define __LZO_LIB_H_INCLUDED 1 933 #if !defined(__LZOLIB_FUNCNAME) 934 # define __LZOLIB_FUNCNAME(f) f 935 #endif 936 #if !defined(LZOLIB_EXTERN) 937 # define LZOLIB_EXTERN(r,f) extern r __LZOLIB_FUNCNAME(f) 938 #endif 939 #if !defined(LZOLIB_EXTERN_NOINLINE) 940 # if defined(__lzo_noinline) 941 # define LZOLIB_EXTERN_NOINLINE(r,f) extern __lzo_noinline r __LZOLIB_FUNCNAME(f) 942 # else 943 # define LZOLIB_EXTERN_NOINLINE(r,f) extern r __LZOLIB_FUNCNAME(f) 944 # endif 945 #endif 946 #if (LZO_SIZEOF_LONG > LZO_SIZEOF_VOID_P) 947 # define lzolib_handle_t long 948 #else 949 # define lzolib_handle_t lzo_intptr_t 950 #endif 951 #if 0 952 LZOLIB_EXTERN(int, lzo_ascii_digit) (int); 953 LZOLIB_EXTERN(int, lzo_ascii_islower) (int); 954 LZOLIB_EXTERN(int, lzo_ascii_isupper) (int); 955 LZOLIB_EXTERN(int, lzo_ascii_tolower) (int); 956 LZOLIB_EXTERN(int, lzo_ascii_toupper) (int); 957 LZOLIB_EXTERN(int, lzo_ascii_utolower) (int); 958 LZOLIB_EXTERN(int, lzo_ascii_utoupper) (int); 959 #endif 960 #define lzo_ascii_isdigit(c) ((LZO_ICAST(unsigned, c) - 48) < 10) 961 #define lzo_ascii_islower(c) ((LZO_ICAST(unsigned, c) - 97) < 26) 962 #define lzo_ascii_isupper(c) ((LZO_ICAST(unsigned, c) - 65) < 26) 963 #define lzo_ascii_tolower(c) (LZO_ICAST(int, c) + (lzo_ascii_isupper(c) << 5)) 964 #define lzo_ascii_toupper(c) (LZO_ICAST(int, c) - (lzo_ascii_islower(c) << 5)) 965 #define lzo_ascii_utolower(c) lzo_ascii_tolower(LZO_ITRUNC(unsigned char, c)) 966 #define lzo_ascii_utoupper(c) lzo_ascii_toupper(LZO_ITRUNC(unsigned char, c)) 967 #ifndef lzo_hsize_t 968 #if (LZO_HAVE_MM_HUGE_PTR) 969 # define lzo_hsize_t unsigned long 970 # define lzo_hvoid_p void __huge * 971 # define lzo_hchar_p char __huge * 972 # define lzo_hchar_pp char __huge * __huge * 973 # define lzo_hbyte_p unsigned char __huge * 974 #else 975 # define lzo_hsize_t size_t 976 # define lzo_hvoid_p void * 977 # define lzo_hchar_p char * 978 # define lzo_hchar_pp char ** 979 # define lzo_hbyte_p unsigned char * 980 #endif 981 #endif 982 LZOLIB_EXTERN(lzo_hvoid_p, lzo_halloc) (lzo_hsize_t); 983 LZOLIB_EXTERN(void, lzo_hfree) (lzo_hvoid_p); 984 #if (LZO_OS_DOS16 || LZO_OS_OS216) 985 LZOLIB_EXTERN(void __far*, lzo_dos_alloc) (unsigned long); 986 LZOLIB_EXTERN(int, lzo_dos_free) (void __far*); 987 #endif 988 LZOLIB_EXTERN(int, lzo_hmemcmp) (const lzo_hvoid_p, const lzo_hvoid_p, lzo_hsize_t); 989 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p, const lzo_hvoid_p, lzo_hsize_t); 990 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p, const lzo_hvoid_p, lzo_hsize_t); 991 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p, int, lzo_hsize_t); 992 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrlen) (const lzo_hchar_p); 993 LZOLIB_EXTERN(int, lzo_hstrcmp) (const lzo_hchar_p, const lzo_hchar_p); 994 LZOLIB_EXTERN(int, lzo_hstrncmp)(const lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 995 LZOLIB_EXTERN(int, lzo_ascii_hstricmp) (const lzo_hchar_p, const lzo_hchar_p); 996 LZOLIB_EXTERN(int, lzo_ascii_hstrnicmp)(const lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 997 LZOLIB_EXTERN(int, lzo_ascii_hmemicmp) (const lzo_hvoid_p, const lzo_hvoid_p, lzo_hsize_t); 998 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrstr) (const lzo_hchar_p, const lzo_hchar_p); 999 LZOLIB_EXTERN(lzo_hchar_p, lzo_ascii_hstristr) (const lzo_hchar_p, const lzo_hchar_p); 1000 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemmem) (const lzo_hvoid_p, lzo_hsize_t, const lzo_hvoid_p, lzo_hsize_t); 1001 LZOLIB_EXTERN(lzo_hvoid_p, lzo_ascii_hmemimem) (const lzo_hvoid_p, lzo_hsize_t, const lzo_hvoid_p, lzo_hsize_t); 1002 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrcpy) (lzo_hchar_p, const lzo_hchar_p); 1003 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrcat) (lzo_hchar_p, const lzo_hchar_p); 1004 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrlcpy) (lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 1005 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrlcat) (lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 1006 LZOLIB_EXTERN(int, lzo_hstrscpy) (lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 1007 LZOLIB_EXTERN(int, lzo_hstrscat) (lzo_hchar_p, const lzo_hchar_p, lzo_hsize_t); 1008 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrccpy) (lzo_hchar_p, const lzo_hchar_p, int); 1009 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemccpy) (lzo_hvoid_p, const lzo_hvoid_p, int, lzo_hsize_t); 1010 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrchr) (const lzo_hchar_p, int); 1011 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrrchr) (const lzo_hchar_p, int); 1012 LZOLIB_EXTERN(lzo_hchar_p, lzo_ascii_hstrichr) (const lzo_hchar_p, int); 1013 LZOLIB_EXTERN(lzo_hchar_p, lzo_ascii_hstrrichr) (const lzo_hchar_p, int); 1014 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemchr) (const lzo_hvoid_p, int, lzo_hsize_t); 1015 LZOLIB_EXTERN(lzo_hvoid_p, lzo_hmemrchr) (const lzo_hvoid_p, int, lzo_hsize_t); 1016 LZOLIB_EXTERN(lzo_hvoid_p, lzo_ascii_hmemichr) (const lzo_hvoid_p, int, lzo_hsize_t); 1017 LZOLIB_EXTERN(lzo_hvoid_p, lzo_ascii_hmemrichr) (const lzo_hvoid_p, int, lzo_hsize_t); 1018 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrspn) (const lzo_hchar_p, const lzo_hchar_p); 1019 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrrspn) (const lzo_hchar_p, const lzo_hchar_p); 1020 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrcspn) (const lzo_hchar_p, const lzo_hchar_p); 1021 LZOLIB_EXTERN(lzo_hsize_t, lzo_hstrrcspn) (const lzo_hchar_p, const lzo_hchar_p); 1022 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrpbrk) (const lzo_hchar_p, const lzo_hchar_p); 1023 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrrpbrk) (const lzo_hchar_p, const lzo_hchar_p); 1024 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrsep) (lzo_hchar_pp, const lzo_hchar_p); 1025 LZOLIB_EXTERN(lzo_hchar_p, lzo_hstrrsep) (lzo_hchar_pp, const lzo_hchar_p); 1026 LZOLIB_EXTERN(lzo_hchar_p, lzo_ascii_hstrlwr) (lzo_hchar_p); 1027 LZOLIB_EXTERN(lzo_hchar_p, lzo_ascii_hstrupr) (lzo_hchar_p); 1028 LZOLIB_EXTERN(lzo_hvoid_p, lzo_ascii_hmemlwr) (lzo_hvoid_p, lzo_hsize_t); 1029 LZOLIB_EXTERN(lzo_hvoid_p, lzo_ascii_hmemupr) (lzo_hvoid_p, lzo_hsize_t); 1030 LZOLIB_EXTERN(lzo_hsize_t, lzo_hfread) (void *, lzo_hvoid_p, lzo_hsize_t); 1031 LZOLIB_EXTERN(lzo_hsize_t, lzo_hfwrite) (void *, const lzo_hvoid_p, lzo_hsize_t); 1032 #if (LZO_HAVE_MM_HUGE_PTR) 1033 LZOLIB_EXTERN(long, lzo_hread) (int, lzo_hvoid_p, long); 1034 LZOLIB_EXTERN(long, lzo_hwrite) (int, const lzo_hvoid_p, long); 1035 #endif 1036 LZOLIB_EXTERN(long, lzo_safe_hread) (int, lzo_hvoid_p, long); 1037 LZOLIB_EXTERN(long, lzo_safe_hwrite) (int, const lzo_hvoid_p, long); 1038 LZOLIB_EXTERN(unsigned, lzo_ua_get_be16) (const lzo_hvoid_p); 1039 LZOLIB_EXTERN(lzo_uint32l_t, lzo_ua_get_be24) (const lzo_hvoid_p); 1040 LZOLIB_EXTERN(lzo_uint32l_t, lzo_ua_get_be32) (const lzo_hvoid_p); 1041 LZOLIB_EXTERN(void, lzo_ua_set_be16) (lzo_hvoid_p, unsigned); 1042 LZOLIB_EXTERN(void, lzo_ua_set_be24) (lzo_hvoid_p, lzo_uint32l_t); 1043 LZOLIB_EXTERN(void, lzo_ua_set_be32) (lzo_hvoid_p, lzo_uint32l_t); 1044 LZOLIB_EXTERN(unsigned, lzo_ua_get_le16) (const lzo_hvoid_p); 1045 LZOLIB_EXTERN(lzo_uint32l_t, lzo_ua_get_le24) (const lzo_hvoid_p); 1046 LZOLIB_EXTERN(lzo_uint32l_t, lzo_ua_get_le32) (const lzo_hvoid_p); 1047 LZOLIB_EXTERN(void, lzo_ua_set_le16) (lzo_hvoid_p, unsigned); 1048 LZOLIB_EXTERN(void, lzo_ua_set_le24) (lzo_hvoid_p, lzo_uint32l_t); 1049 LZOLIB_EXTERN(void, lzo_ua_set_le32) (lzo_hvoid_p, lzo_uint32l_t); 1050 #if defined(lzo_int64l_t) 1051 LZOLIB_EXTERN(lzo_uint64l_t, lzo_ua_get_be64) (const lzo_hvoid_p); 1052 LZOLIB_EXTERN(void, lzo_ua_set_be64) (lzo_hvoid_p, lzo_uint64l_t); 1053 LZOLIB_EXTERN(lzo_uint64l_t, lzo_ua_get_le64) (const lzo_hvoid_p); 1054 LZOLIB_EXTERN(void, lzo_ua_set_le64) (lzo_hvoid_p, lzo_uint64l_t); 1055 #endif 1056 LZOLIB_EXTERN_NOINLINE(short, lzo_vget_short) (short, int); 1057 LZOLIB_EXTERN_NOINLINE(int, lzo_vget_int) (int, int); 1058 LZOLIB_EXTERN_NOINLINE(long, lzo_vget_long) (long, int); 1059 #if defined(lzo_int64l_t) 1060 LZOLIB_EXTERN_NOINLINE(lzo_int64l_t, lzo_vget_lzo_int64l_t) (lzo_int64l_t, int); 1061 #endif 1062 LZOLIB_EXTERN_NOINLINE(lzo_hsize_t, lzo_vget_lzo_hsize_t) (lzo_hsize_t, int); 1063 #if !(LZO_CFG_NO_FLOAT) 1064 LZOLIB_EXTERN_NOINLINE(float, lzo_vget_float) (float, int); 1065 #endif 1066 #if !(LZO_CFG_NO_DOUBLE) 1067 LZOLIB_EXTERN_NOINLINE(double, lzo_vget_double) (double, int); 1068 #endif 1069 LZOLIB_EXTERN_NOINLINE(lzo_hvoid_p, lzo_vget_lzo_hvoid_p) (lzo_hvoid_p, int); 1070 LZOLIB_EXTERN_NOINLINE(const lzo_hvoid_p, lzo_vget_lzo_hvoid_cp) (const lzo_hvoid_p, int); 1071 #if !defined(LZO_FN_PATH_MAX) 1072 #if (LZO_OS_DOS16 || LZO_OS_WIN16) 1073 # define LZO_FN_PATH_MAX 143 1074 #elif (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN32 || LZO_OS_WIN64) 1075 # define LZO_FN_PATH_MAX 259 1076 #elif (LZO_OS_TOS) 1077 # define LZO_FN_PATH_MAX 259 1078 #endif 1079 #endif 1080 #if !defined(LZO_FN_PATH_MAX) 1081 # define LZO_FN_PATH_MAX 1023 1082 #endif 1083 #if !defined(LZO_FN_NAME_MAX) 1084 #if (LZO_OS_DOS16 || LZO_OS_WIN16) 1085 # define LZO_FN_NAME_MAX 12 1086 #elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) 1087 # define LZO_FN_NAME_MAX 12 1088 #elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 1089 #elif (LZO_OS_DOS32) 1090 # define LZO_FN_NAME_MAX 12 1091 #endif 1092 #endif 1093 #if !defined(LZO_FN_NAME_MAX) 1094 # define LZO_FN_NAME_MAX LZO_FN_PATH_MAX 1095 #endif 1096 #define LZO_FNMATCH_NOESCAPE 1 1097 #define LZO_FNMATCH_PATHNAME 2 1098 #define LZO_FNMATCH_PATHSTAR 4 1099 #define LZO_FNMATCH_PERIOD 8 1100 #define LZO_FNMATCH_ASCII_CASEFOLD 16 1101 LZOLIB_EXTERN(int, lzo_fnmatch) (const lzo_hchar_p, const lzo_hchar_p, int); 1102 #undef __LZOLIB_USE_OPENDIR 1103 #if (HAVE_DIRENT_H || LZO_CC_WATCOMC) 1104 # define __LZOLIB_USE_OPENDIR 1 1105 # if (LZO_OS_DOS32 && defined(__BORLANDC__)) 1106 # elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 1107 # elif (LZO_OS_OS2 || LZO_OS_OS216) 1108 # elif (LZO_ARCH_M68K && LZO_OS_TOS && LZO_CC_GNUC) 1109 # elif (LZO_OS_WIN32 && !(LZO_HAVE_WINDOWS_H)) 1110 # elif (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_TOS || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) 1111 # undef __LZOLIB_USE_OPENDIR 1112 # endif 1113 #endif 1114 typedef struct 1115 { 1116 #if defined(__LZOLIB_USE_OPENDIR) 1117 void* u_dirp; 1118 # if (LZO_CC_WATCOMC) 1119 unsigned short f_time; 1120 unsigned short f_date; 1121 unsigned long f_size; 1122 # endif 1123 char f_name[LZO_FN_NAME_MAX+1]; 1124 #elif (LZO_OS_WIN32 || LZO_OS_WIN64) 1125 lzolib_handle_t u_handle; 1126 unsigned f_attr; 1127 unsigned f_size_low; 1128 unsigned f_size_high; 1129 char f_name[LZO_FN_NAME_MAX+1]; 1130 #elif (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_TOS || LZO_OS_WIN16) 1131 char u_dta[21]; 1132 unsigned char f_attr; 1133 unsigned short f_time; 1134 unsigned short f_date; 1135 unsigned short f_size_low; 1136 unsigned short f_size_high; 1137 char f_name[LZO_FN_NAME_MAX+1]; 1138 char u_dirp; 1139 #else 1140 void* u_dirp; 1141 char f_name[LZO_FN_NAME_MAX+1]; 1142 #endif 1143 } lzo_dir_t; 1144 #ifndef lzo_dir_p 1145 #define lzo_dir_p lzo_dir_t * 1146 #endif 1147 LZOLIB_EXTERN(int, lzo_opendir) (lzo_dir_p, const char*); 1148 LZOLIB_EXTERN(int, lzo_readdir) (lzo_dir_p); 1149 LZOLIB_EXTERN(int, lzo_closedir) (lzo_dir_p); 1150 #if (LZO_CC_GNUC) && (defined(__CYGWIN__) || defined(__MINGW32__)) 1151 # define lzo_alloca(x) __builtin_alloca((x)) 1152 #elif (LZO_CC_GNUC) && (LZO_OS_CONSOLE_PS2) 1153 # define lzo_alloca(x) __builtin_alloca((x)) 1154 #elif (LZO_CC_BORLANDC || LZO_CC_LCC) && defined(__linux__) 1155 #elif (HAVE_ALLOCA) 1156 # define lzo_alloca(x) LZO_STATIC_CAST(void *, alloca((x))) 1157 #endif 1158 #if (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 1159 # define lzo_stackavail() stackavail() 1160 #elif (LZO_ARCH_I086 && LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0410)) 1161 # define lzo_stackavail() stackavail() 1162 #elif (LZO_ARCH_I086 && LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0400)) 1163 # if (LZO_OS_WIN16) && (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) 1164 # else 1165 # define lzo_stackavail() stackavail() 1166 # endif 1167 #elif ((LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_CC_DMC || LZO_CC_SYMANTECC)) 1168 # define lzo_stackavail() stackavail() 1169 #elif ((LZO_ARCH_I086) && LZO_CC_MSC && (_MSC_VER >= 700)) 1170 # define lzo_stackavail() _stackavail() 1171 #elif ((LZO_ARCH_I086) && LZO_CC_MSC) 1172 # define lzo_stackavail() stackavail() 1173 #elif ((LZO_ARCH_I086 || LZO_ARCH_I386) && LZO_CC_TURBOC && (__TURBOC__ >= 0x0450)) 1174 # define lzo_stackavail() stackavail() 1175 #elif (LZO_ARCH_I086 && LZO_CC_TURBOC && (__TURBOC__ >= 0x0400)) 1176 LZO_EXTERN_C size_t __cdecl stackavail(void); 1177 # define lzo_stackavail() stackavail() 1178 #elif ((LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_CC_WATCOMC)) 1179 # define lzo_stackavail() stackavail() 1180 #elif (LZO_ARCH_I086 && LZO_CC_ZORTECHC) 1181 # define lzo_stackavail() _chkstack() 1182 #endif 1183 LZOLIB_EXTERN(lzo_intptr_t, lzo_get_osfhandle) (int); 1184 LZOLIB_EXTERN(const char *, lzo_getenv) (const char *); 1185 LZOLIB_EXTERN(int, lzo_isatty) (int); 1186 LZOLIB_EXTERN(int, lzo_mkdir) (const char*, unsigned); 1187 LZOLIB_EXTERN(int, lzo_rmdir) (const char*); 1188 LZOLIB_EXTERN(int, lzo_response) (int*, char***); 1189 LZOLIB_EXTERN(int, lzo_set_binmode) (int, int); 1190 #if defined(lzo_int32e_t) 1191 LZOLIB_EXTERN(lzo_int32e_t, lzo_muldiv32s) (lzo_int32e_t, lzo_int32e_t, lzo_int32e_t); 1192 LZOLIB_EXTERN(lzo_uint32e_t, lzo_muldiv32u) (lzo_uint32e_t, lzo_uint32e_t, lzo_uint32e_t); 1193 #endif 1194 LZOLIB_EXTERN(void, lzo_wildargv) (int*, char***); 1195 LZOLIB_EXTERN_NOINLINE(void, lzo_debug_break) (void); 1196 LZOLIB_EXTERN_NOINLINE(void, lzo_debug_nop) (void); 1197 LZOLIB_EXTERN_NOINLINE(int, lzo_debug_align_check_query) (void); 1198 LZOLIB_EXTERN_NOINLINE(int, lzo_debug_align_check_enable) (int); 1199 LZOLIB_EXTERN_NOINLINE(unsigned, lzo_debug_running_on_qemu) (void); 1200 LZOLIB_EXTERN_NOINLINE(unsigned, lzo_debug_running_on_valgrind) (void); 1201 #if defined(lzo_int32e_t) 1202 LZOLIB_EXTERN(int, lzo_tsc_read) (lzo_uint32e_t*); 1203 #endif 1204 struct lzo_pclock_handle_t; 1205 struct lzo_pclock_t; 1206 typedef struct lzo_pclock_handle_t lzo_pclock_handle_t; 1207 typedef struct lzo_pclock_t lzo_pclock_t; 1208 #ifndef lzo_pclock_handle_p 1209 #define lzo_pclock_handle_p lzo_pclock_handle_t * 1210 #endif 1211 #ifndef lzo_pclock_p 1212 #define lzo_pclock_p lzo_pclock_t * 1213 #endif 1214 #define LZO_PCLOCK_REALTIME 0 1215 #define LZO_PCLOCK_MONOTONIC 1 1216 #define LZO_PCLOCK_PROCESS_CPUTIME_ID 2 1217 #define LZO_PCLOCK_THREAD_CPUTIME_ID 3 1218 typedef int (*lzo_pclock_gettime_t) (lzo_pclock_handle_p, lzo_pclock_p); 1219 struct lzo_pclock_handle_t { 1220 lzolib_handle_t h; 1221 int mode; 1222 int read_error; 1223 const char* name; 1224 lzo_pclock_gettime_t gettime; 1225 #if defined(lzo_int64l_t) 1226 lzo_uint64l_t ticks_base; 1227 #endif 1228 }; 1229 struct lzo_pclock_t { 1230 #if defined(lzo_int64l_t) 1231 lzo_int64l_t tv_sec; 1232 #else 1233 lzo_int32l_t tv_sec_high; 1234 lzo_uint32l_t tv_sec_low; 1235 #endif 1236 lzo_uint32l_t tv_nsec; 1237 }; 1238 LZOLIB_EXTERN(int, lzo_pclock_open) (lzo_pclock_handle_p, int); 1239 LZOLIB_EXTERN(int, lzo_pclock_open_default) (lzo_pclock_handle_p); 1240 LZOLIB_EXTERN(int, lzo_pclock_close) (lzo_pclock_handle_p); 1241 LZOLIB_EXTERN(void, lzo_pclock_read) (lzo_pclock_handle_p, lzo_pclock_p); 1242 #if !(LZO_CFG_NO_DOUBLE) 1243 LZOLIB_EXTERN(double, lzo_pclock_get_elapsed) (lzo_pclock_handle_p, const lzo_pclock_p, const lzo_pclock_p); 1244 #endif 1245 LZOLIB_EXTERN(int, lzo_pclock_flush_cpu_cache) (lzo_pclock_handle_p, unsigned); 1246 struct lzo_getopt_t; 1247 typedef struct lzo_getopt_t lzo_getopt_t; 1248 #ifndef lzo_getopt_p 1249 #define lzo_getopt_p lzo_getopt_t * 1250 #endif 1251 struct lzo_getopt_longopt_t; 1252 typedef struct lzo_getopt_longopt_t lzo_getopt_longopt_t; 1253 #ifndef lzo_getopt_longopt_p 1254 #define lzo_getopt_longopt_p lzo_getopt_longopt_t * 1255 #endif 1256 struct lzo_getopt_longopt_t { 1257 const char* name; 1258 int has_arg; 1259 int* flag; 1260 int val; 1261 }; 1262 typedef void (*lzo_getopt_opterr_t)(lzo_getopt_p, const char*, void *); 1263 struct lzo_getopt_t { 1264 void *user; 1265 const char *progname; 1266 int bad_option; 1267 char *optarg; 1268 lzo_getopt_opterr_t opterr; 1269 int optind; 1270 int optopt; 1271 int errcount; 1272 int argc; char** argv; 1273 int eof; int shortpos; 1274 int pending_rotate_first, pending_rotate_middle; 1275 }; 1276 enum { LZO_GETOPT_NO_ARG, LZO_GETOPT_REQUIRED_ARG, LZO_GETOPT_OPTIONAL_ARG, LZO_GETOPT_EXACT_ARG = 0x10 }; 1277 enum { LZO_GETOPT_PERMUTE, LZO_GETOPT_RETURN_IN_ORDER, LZO_GETOPT_REQUIRE_ORDER }; 1278 LZOLIB_EXTERN(void, lzo_getopt_init) (lzo_getopt_p g, 1279 int start_argc, int argc, char** argv); 1280 LZOLIB_EXTERN(int, lzo_getopt) (lzo_getopt_p g, 1281 const char* shortopts, 1282 const lzo_getopt_longopt_p longopts, 1283 int* longind); 1284 typedef struct { 1285 lzo_uint32l_t seed; 1286 } lzo_rand31_t; 1287 #ifndef lzo_rand31_p 1288 #define lzo_rand31_p lzo_rand31_t * 1289 #endif 1290 LZOLIB_EXTERN(void, lzo_srand31) (lzo_rand31_p, lzo_uint32l_t); 1291 LZOLIB_EXTERN(lzo_uint32l_t, lzo_rand31) (lzo_rand31_p); 1292 #if defined(lzo_int64l_t) 1293 typedef struct { 1294 lzo_uint64l_t seed; 1295 } lzo_rand48_t; 1296 #ifndef lzo_rand48_p 1297 #define lzo_rand48_p lzo_rand48_t * 1298 #endif 1299 LZOLIB_EXTERN(void, lzo_srand48) (lzo_rand48_p, lzo_uint32l_t); 1300 LZOLIB_EXTERN(lzo_uint32l_t, lzo_rand48) (lzo_rand48_p); 1301 LZOLIB_EXTERN(lzo_uint32l_t, lzo_rand48_r32) (lzo_rand48_p); 1302 #endif 1303 #if defined(lzo_int64l_t) 1304 typedef struct { 1305 lzo_uint64l_t seed; 1306 } lzo_rand64_t; 1307 #ifndef lzo_rand64_p 1308 #define lzo_rand64_p lzo_rand64_t * 1309 #endif 1310 LZOLIB_EXTERN(void, lzo_srand64) (lzo_rand64_p, lzo_uint64l_t); 1311 LZOLIB_EXTERN(lzo_uint32l_t, lzo_rand64) (lzo_rand64_p); 1312 LZOLIB_EXTERN(lzo_uint32l_t, lzo_rand64_r32) (lzo_rand64_p); 1313 #endif 1314 typedef struct { 1315 unsigned n; 1316 lzo_uint32l_t s[624]; 1317 } lzo_randmt_t; 1318 #ifndef lzo_randmt_p 1319 #define lzo_randmt_p lzo_randmt_t * 1320 #endif 1321 LZOLIB_EXTERN(void, lzo_srandmt) (lzo_randmt_p, lzo_uint32l_t); 1322 LZOLIB_EXTERN(lzo_uint32l_t, lzo_randmt) (lzo_randmt_p); 1323 LZOLIB_EXTERN(lzo_uint32l_t, lzo_randmt_r32) (lzo_randmt_p); 1324 #if defined(lzo_int64l_t) 1325 typedef struct { 1326 unsigned n; 1327 lzo_uint64l_t s[312]; 1328 } lzo_randmt64_t; 1329 #ifndef lzo_randmt64_p 1330 #define lzo_randmt64_p lzo_randmt64_t * 1331 #endif 1332 LZOLIB_EXTERN(void, lzo_srandmt64) (lzo_randmt64_p, lzo_uint64l_t); 1333 LZOLIB_EXTERN(lzo_uint64l_t, lzo_randmt64_r64) (lzo_randmt64_p); 1334 #endif 1335 #define LZO_SPAWN_P_WAIT 0 1336 #define LZO_SPAWN_P_NOWAIT 1 1337 LZOLIB_EXTERN(int, lzo_spawnv) (int mode, const char* fn, const char* const * argv); 1338 LZOLIB_EXTERN(int, lzo_spawnvp) (int mode, const char* fn, const char* const * argv); 1339 LZOLIB_EXTERN(int, lzo_spawnve) (int mode, const char* fn, const char* const * argv, const char * const envp); 1340 #endif 1341 #endif 1342 #if defined(LZO_WANT_ACC_CXX_H) 1343 # undef LZO_WANT_ACC_CXX_H 1344 #ifndef __LZO_CXX_H_INCLUDED 1345 #define __LZO_CXX_H_INCLUDED 1 1346 #if defined(__cplusplus) 1347 #if defined(LZO_CXX_NOTHROW) 1348 #elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020800ul)) 1349 #elif (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0450)) 1350 #elif (LZO_CC_GHS && !defined(__EXCEPTIONS)) 1351 #elif (LZO_CC_HIGHC) 1352 #elif (LZO_CC_MSC && (_MSC_VER < 1100)) 1353 #elif (LZO_CC_NDPC) 1354 #elif (LZO_CC_TURBOC) 1355 #elif (LZO_CC_WATCOMC && !defined(_CPPUNWIND)) 1356 #elif (LZO_CC_ZORTECHC) 1357 #else 1358 # define LZO_CXX_NOTHROW throw() 1359 #endif 1360 #if !defined(LZO_CXX_NOTHROW) 1361 # define LZO_CXX_NOTHROW /*empty*/ 1362 #endif 1363 #if defined(__LZO_CXX_DO_NEW) 1364 #elif (LZO_CC_GHS || LZO_CC_NDPC || LZO_CC_PGI) 1365 # define __LZO_CXX_DO_NEW { return 0; } 1366 #elif ((LZO_CC_BORLANDC || LZO_CC_TURBOC) && LZO_ARCH_I086) 1367 # define __LZO_CXX_DO_NEW { return 0; } 1368 #else 1369 # define __LZO_CXX_DO_NEW ; 1370 #endif 1371 #if defined(__LZO_CXX_DO_DELETE) 1372 #elif (LZO_CC_BORLANDC || LZO_CC_TURBOC) 1373 # define __LZO_CXX_DO_DELETE { } 1374 #else 1375 # define __LZO_CXX_DO_DELETE LZO_CXX_NOTHROW { } 1376 #endif 1377 #if (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0450)) 1378 #elif (LZO_CC_MSC && LZO_MM_HUGE) 1379 # define LZO_CXX_DISABLE_NEW_DELETE private: 1380 #elif (LZO_CC_MSC && (_MSC_VER < 1100)) 1381 #elif (LZO_CC_NDPC) 1382 #elif (LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) 1383 #elif (LZO_CC_TURBOC) 1384 #elif (LZO_CC_WATCOMC && (__WATCOMC__ < 1100)) 1385 #else 1386 # define __LZO_CXX_HAVE_ARRAY_NEW 1 1387 #endif 1388 #if (__LZO_CXX_HAVE_ARRAY_NEW) 1389 # define __LZO_CXX_HAVE_PLACEMENT_NEW 1 1390 #endif 1391 #if (__LZO_CXX_HAVE_PLACEMENT_NEW) 1392 # if (LZO_CC_GNUC >= 0x030000ul) 1393 # define __LZO_CXX_HAVE_PLACEMENT_DELETE 1 1394 # elif (LZO_CC_INTELC) 1395 # define __LZO_CXX_HAVE_PLACEMENT_DELETE 1 1396 # elif (LZO_CC_MSC && (_MSC_VER >= 1200)) 1397 # define __LZO_CXX_HAVE_PLACEMENT_DELETE 1 1398 # elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) 1399 # define __LZO_CXX_HAVE_PLACEMENT_DELETE 1 1400 # elif (LZO_CC_PGI) 1401 # define __LZO_CXX_HAVE_PLACEMENT_DELETE 1 1402 # endif 1403 #endif 1404 #if defined(LZO_CXX_DISABLE_NEW_DELETE) 1405 #elif defined(new) || defined(delete) 1406 # define LZO_CXX_DISABLE_NEW_DELETE private: 1407 #elif (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025b00ul)) 1408 # define LZO_CXX_DISABLE_NEW_DELETE private: 1409 #elif (LZO_CC_HIGHC) 1410 # define LZO_CXX_DISABLE_NEW_DELETE private: 1411 #elif !(__LZO_CXX_HAVE_ARRAY_NEW) 1412 # define LZO_CXX_DISABLE_NEW_DELETE \ 1413 protected: static void operator delete(void*) __LZO_CXX_DO_DELETE \ 1414 protected: static void* operator new(size_t) __LZO_CXX_DO_NEW \ 1415 private: 1416 #else 1417 # define LZO_CXX_DISABLE_NEW_DELETE \ 1418 protected: static void operator delete(void*) __LZO_CXX_DO_DELETE \ 1419 static void operator delete[](void*) __LZO_CXX_DO_DELETE \ 1420 private: static void* operator new(size_t) __LZO_CXX_DO_NEW \ 1421 static void* operator new[](size_t) __LZO_CXX_DO_NEW 1422 #endif 1423 #if defined(LZO_CXX_TRIGGER_FUNCTION) 1424 #else 1425 # define LZO_CXX_TRIGGER_FUNCTION \ 1426 protected: virtual const void* lzo_cxx_trigger_function() const; \ 1427 private: 1428 #endif 1429 #if defined(LZO_CXX_TRIGGER_FUNCTION_IMPL) 1430 #else 1431 # define LZO_CXX_TRIGGER_FUNCTION_IMPL(klass) \ 1432 const void* klass::lzo_cxx_trigger_function() const { return LZO_STATIC_CAST(const void *, 0); } 1433 #endif 1434 #endif 1435 #endif 1436 #endif 1437 #if defined(LZO_WANT_ACC_CHK_CH) 1438 # undef LZO_WANT_ACC_CHK_CH 1439 #if !defined(LZOCHK_ASSERT) 1440 # define LZOCHK_ASSERT(expr) LZO_COMPILE_TIME_ASSERT_HEADER(expr) 1441 #endif 1442 #if !defined(LZOCHK_ASSERT_SIGN_T) 1443 # define LZOCHK_ASSERT_SIGN_T(type,relop) \ 1444 LZOCHK_ASSERT( LZO_STATIC_CAST(type, -1) relop LZO_STATIC_CAST(type, 0)) \ 1445 LZOCHK_ASSERT( LZO_STATIC_CAST(type, ~LZO_STATIC_CAST(type, 0)) relop LZO_STATIC_CAST(type, 0)) \ 1446 LZOCHK_ASSERT( LZO_STATIC_CAST(type, ~LZO_STATIC_CAST(type, 0)) == LZO_STATIC_CAST(type, -1)) 1447 #endif 1448 #if !defined(LZOCHK_ASSERT_IS_SIGNED_T) 1449 # define LZOCHK_ASSERT_IS_SIGNED_T(type) LZOCHK_ASSERT_SIGN_T(type,<) 1450 #endif 1451 #if !defined(LZOCHK_ASSERT_IS_UNSIGNED_T) 1452 # if (LZO_BROKEN_INTEGRAL_PROMOTION) 1453 # define LZOCHK_ASSERT_IS_UNSIGNED_T(type) \ 1454 LZOCHK_ASSERT( LZO_STATIC_CAST(type, -1) > LZO_STATIC_CAST(type, 0) ) 1455 # else 1456 # define LZOCHK_ASSERT_IS_UNSIGNED_T(type) LZOCHK_ASSERT_SIGN_T(type,>) 1457 # endif 1458 #endif 1459 #if defined(LZOCHK_CFG_PEDANTIC) 1460 #if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550) && (__BORLANDC__ < 0x0560)) 1461 # pragma option push -w-8055 1462 #elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0550)) 1463 # pragma option push -w-osh 1464 #endif 1465 #endif 1466 #if (LZO_0xffffffffL - LZO_UINT32_C(4294967294) != 1) 1467 # error "preprocessor error" 1468 #endif 1469 #if (LZO_0xffffffffL - LZO_UINT32_C(0xfffffffd) != 2) 1470 # error "preprocessor error" 1471 #endif 1472 #if +0 1473 # error "preprocessor error" 1474 #endif 1475 #if -0 1476 # error "preprocessor error" 1477 #endif 1478 #if +0 != 0 1479 # error "preprocessor error" 1480 #endif 1481 #if -0 != 0 1482 # error "preprocessor error" 1483 #endif 1484 #define LZOCHK_VAL 1 1485 #define LZOCHK_TMP1 LZOCHK_VAL 1486 #undef LZOCHK_VAL 1487 #define LZOCHK_VAL 2 1488 #define LZOCHK_TMP2 LZOCHK_VAL 1489 #if (LZOCHK_TMP1 != 2) 1490 # error "preprocessor error 3a" 1491 #endif 1492 #if (LZOCHK_TMP2 != 2) 1493 # error "preprocessor error 3b" 1494 #endif 1495 #undef LZOCHK_VAL 1496 #if (LZOCHK_TMP2) 1497 # error "preprocessor error 3c" 1498 #endif 1499 #if (LZOCHK_TMP2 + 0 != 0) 1500 # error "preprocessor error 3d" 1501 #endif 1502 #undef LZOCHK_TMP1 1503 #undef LZOCHK_TMP2 1504 #if 0 || defined(LZOCHK_CFG_PEDANTIC) 1505 # if (LZO_ARCH_MIPS) && defined(_MIPS_SZINT) 1506 LZOCHK_ASSERT((_MIPS_SZINT) == 8 * sizeof(int)) 1507 # endif 1508 # if (LZO_ARCH_MIPS) && defined(_MIPS_SZLONG) 1509 LZOCHK_ASSERT((_MIPS_SZLONG) == 8 * sizeof(long)) 1510 # endif 1511 # if (LZO_ARCH_MIPS) && defined(_MIPS_SZPTR) 1512 LZOCHK_ASSERT((_MIPS_SZPTR) == 8 * sizeof(void *)) 1513 # endif 1514 #endif 1515 LZOCHK_ASSERT(1 == 1) 1516 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,1) == 1) 1517 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,2) == 3) 1518 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,3) == 7) 1519 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,8) == 255) 1520 #if (SIZEOF_INT >= 2) 1521 LZOCHK_ASSERT(__LZO_MASK_GEN(1,15) == 32767) 1522 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,16) == 0xffffU) 1523 LZOCHK_ASSERT(__LZO_MASK_GEN(0u,16) == 0u) 1524 #else 1525 LZOCHK_ASSERT(__LZO_MASK_GEN(1ul,16) == 0xffffUL) 1526 LZOCHK_ASSERT(__LZO_MASK_GEN(0ul,16) == 0ul) 1527 #endif 1528 #if (SIZEOF_INT >= 4) 1529 LZOCHK_ASSERT(__LZO_MASK_GEN(1,31) == 2147483647) 1530 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,32) == 0xffffffffU) 1531 LZOCHK_ASSERT(__LZO_MASK_GEN(0u,32) == 0u) 1532 #endif 1533 #if (SIZEOF_LONG >= 4) 1534 LZOCHK_ASSERT(__LZO_MASK_GEN(1ul,32) == 0xffffffffUL) 1535 LZOCHK_ASSERT(__LZO_MASK_GEN(0ul,32) == 0ul) 1536 #endif 1537 #if (SIZEOF_LONG >= 8) 1538 LZOCHK_ASSERT(__LZO_MASK_GEN(1ul,64) == 0xffffffffffffffffUL) 1539 LZOCHK_ASSERT(__LZO_MASK_GEN(0ul,64) == 0ul) 1540 #endif 1541 #if !(LZO_BROKEN_INTEGRAL_PROMOTION) 1542 LZOCHK_ASSERT(__LZO_MASK_GEN(1u,SIZEOF_INT*8) == ~0u) 1543 LZOCHK_ASSERT(__LZO_MASK_GEN(1ul,SIZEOF_LONG*8) == ~0ul) 1544 #endif 1545 #if 1 1546 LZOCHK_ASSERT(__LZO_MASK_GEN(0,0) == 0) 1547 LZOCHK_ASSERT(__LZO_MASK_GEN(1,0) == 0) 1548 LZOCHK_ASSERT(__LZO_MASK_GEN(2,0) == 0) 1549 LZOCHK_ASSERT(__LZO_MASK_GEN(4,0) == 0) 1550 #endif 1551 #if 1 1552 LZOCHK_ASSERT(__LZO_MASK_GEN(2,1) == 2) 1553 LZOCHK_ASSERT(__LZO_MASK_GEN(4,1) == 4) 1554 LZOCHK_ASSERT(__LZO_MASK_GEN(8,1) == 8) 1555 LZOCHK_ASSERT(__LZO_MASK_GEN(2,2) == 2+4) 1556 LZOCHK_ASSERT(__LZO_MASK_GEN(4,2) == 4+8) 1557 LZOCHK_ASSERT(__LZO_MASK_GEN(8,2) == 8+16) 1558 LZOCHK_ASSERT(__LZO_MASK_GEN(2,3) == 2+4+8) 1559 LZOCHK_ASSERT(__LZO_MASK_GEN(4,3) == 4+8+16) 1560 LZOCHK_ASSERT(__LZO_MASK_GEN(8,3) == 8+16+32) 1561 LZOCHK_ASSERT(__LZO_MASK_GEN(7,1) == 7) 1562 LZOCHK_ASSERT(__LZO_MASK_GEN(7,2) == 7+14) 1563 LZOCHK_ASSERT(__LZO_MASK_GEN(7,3) == 7+14+28) 1564 #endif 1565 #if !(LZO_BROKEN_SIGNED_RIGHT_SHIFT) 1566 LZOCHK_ASSERT(((-1) >> 7) == -1) 1567 #endif 1568 LZOCHK_ASSERT(((1) >> 7) == 0) 1569 #if (LZO_CC_INTELC && (__INTEL_COMPILER >= 900)) 1570 # pragma warning(push) 1571 # pragma warning(disable: 1025) 1572 #endif 1573 LZOCHK_ASSERT((~0l & ~0) == ~0l) 1574 LZOCHK_ASSERT((~0l & ~0u) == ~0u) 1575 LZOCHK_ASSERT((~0ul & ~0) == ~0ul) 1576 LZOCHK_ASSERT((~0ul & ~0u) == ~0u) 1577 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150) 1578 #elif (SIZEOF_INT == 2) 1579 LZOCHK_ASSERT((~0l & ~0u) == 0xffffU) 1580 LZOCHK_ASSERT((~0ul & ~0u) == 0xffffU) 1581 #elif (SIZEOF_INT == 4) 1582 LZOCHK_ASSERT((~0l & ~0u) == 0xffffffffU) 1583 LZOCHK_ASSERT((~0ul & ~0u) == 0xffffffffU) 1584 #endif 1585 #if (LZO_CC_INTELC && (__INTEL_COMPILER >= 900)) 1586 # pragma warning(pop) 1587 #endif 1588 LZOCHK_ASSERT_IS_SIGNED_T(signed char) 1589 LZOCHK_ASSERT_IS_UNSIGNED_T(unsigned char) 1590 LZOCHK_ASSERT(sizeof(signed char) == sizeof(char)) 1591 LZOCHK_ASSERT(sizeof(unsigned char) == sizeof(char)) 1592 LZOCHK_ASSERT(sizeof(char) == 1) 1593 #if (LZO_CC_CILLY) && (!defined(__CILLY__) || (__CILLY__ < 0x010302L)) 1594 #else 1595 LZOCHK_ASSERT(sizeof(char) == sizeof(LZO_STATIC_CAST(char, 0))) 1596 #endif 1597 #if defined(__cplusplus) 1598 LZOCHK_ASSERT(sizeof('\0') == sizeof(char)) 1599 #else 1600 # if (LZO_CC_DMC) 1601 # else 1602 LZOCHK_ASSERT(sizeof('\0') == sizeof(int)) 1603 # endif 1604 #endif 1605 #if defined(__lzo_alignof) 1606 LZOCHK_ASSERT(__lzo_alignof(char) == 1) 1607 LZOCHK_ASSERT(__lzo_alignof(signed char) == 1) 1608 LZOCHK_ASSERT(__lzo_alignof(unsigned char) == 1) 1609 #if defined(lzo_int16e_t) 1610 LZOCHK_ASSERT(__lzo_alignof(lzo_int16e_t) >= 1) 1611 LZOCHK_ASSERT(__lzo_alignof(lzo_int16e_t) <= 2) 1612 #endif 1613 #if defined(lzo_int32e_t) 1614 LZOCHK_ASSERT(__lzo_alignof(lzo_int32e_t) >= 1) 1615 LZOCHK_ASSERT(__lzo_alignof(lzo_int32e_t) <= 4) 1616 #endif 1617 #endif 1618 LZOCHK_ASSERT_IS_SIGNED_T(short) 1619 LZOCHK_ASSERT_IS_UNSIGNED_T(unsigned short) 1620 LZOCHK_ASSERT(sizeof(short) == sizeof(unsigned short)) 1621 #if !(LZO_ABI_I8LP16) 1622 LZOCHK_ASSERT(sizeof(short) >= 2) 1623 #endif 1624 LZOCHK_ASSERT(sizeof(short) >= sizeof(char)) 1625 #if (LZO_CC_CILLY) && (!defined(__CILLY__) || (__CILLY__ < 0x010302L)) 1626 #else 1627 LZOCHK_ASSERT(sizeof(short) == sizeof(LZO_STATIC_CAST(short, 0))) 1628 #endif 1629 #if (SIZEOF_SHORT > 0) 1630 LZOCHK_ASSERT(sizeof(short) == SIZEOF_SHORT) 1631 #endif 1632 LZOCHK_ASSERT_IS_SIGNED_T(int) 1633 LZOCHK_ASSERT_IS_UNSIGNED_T(unsigned int) 1634 LZOCHK_ASSERT(sizeof(int) == sizeof(unsigned int)) 1635 #if !(LZO_ABI_I8LP16) 1636 LZOCHK_ASSERT(sizeof(int) >= 2) 1637 #endif 1638 LZOCHK_ASSERT(sizeof(int) >= sizeof(short)) 1639 LZOCHK_ASSERT(sizeof(int) == sizeof(0)) 1640 LZOCHK_ASSERT(sizeof(int) == sizeof(LZO_STATIC_CAST(int, 0))) 1641 #if (SIZEOF_INT > 0) 1642 LZOCHK_ASSERT(sizeof(int) == SIZEOF_INT) 1643 #endif 1644 LZOCHK_ASSERT(sizeof(0) == sizeof(int)) 1645 LZOCHK_ASSERT_IS_SIGNED_T(long) 1646 LZOCHK_ASSERT_IS_UNSIGNED_T(unsigned long) 1647 LZOCHK_ASSERT(sizeof(long) == sizeof(unsigned long)) 1648 #if !(LZO_ABI_I8LP16) 1649 LZOCHK_ASSERT(sizeof(long) >= 4) 1650 #endif 1651 LZOCHK_ASSERT(sizeof(long) >= sizeof(int)) 1652 LZOCHK_ASSERT(sizeof(long) == sizeof(0L)) 1653 LZOCHK_ASSERT(sizeof(long) == sizeof(LZO_STATIC_CAST(long, 0))) 1654 #if (SIZEOF_LONG > 0) 1655 LZOCHK_ASSERT(sizeof(long) == SIZEOF_LONG) 1656 #endif 1657 LZOCHK_ASSERT(sizeof(0L) == sizeof(long)) 1658 LZOCHK_ASSERT_IS_UNSIGNED_T(size_t) 1659 LZOCHK_ASSERT(sizeof(size_t) >= sizeof(int)) 1660 LZOCHK_ASSERT(sizeof(size_t) == sizeof(sizeof(0))) 1661 #if (SIZEOF_SIZE_T > 0) 1662 LZOCHK_ASSERT(sizeof(size_t) == SIZEOF_SIZE_T) 1663 #endif 1664 LZOCHK_ASSERT_IS_SIGNED_T(ptrdiff_t) 1665 LZOCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(int)) 1666 LZOCHK_ASSERT(sizeof(ptrdiff_t) >= sizeof(size_t)) 1667 #if !(LZO_BROKEN_SIZEOF) 1668 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(LZO_STATIC_CAST(char*, 0) - LZO_STATIC_CAST(char*, 0))) 1669 # if (LZO_HAVE_MM_HUGE_PTR) 1670 LZOCHK_ASSERT(4 == sizeof(LZO_STATIC_CAST(char __huge*, 0) - LZO_STATIC_CAST(char __huge*, 0))) 1671 # endif 1672 #endif 1673 #if (SIZEOF_PTRDIFF_T > 0) 1674 LZOCHK_ASSERT(sizeof(ptrdiff_t) == SIZEOF_PTRDIFF_T) 1675 #endif 1676 LZOCHK_ASSERT(sizeof(void*) >= sizeof(char*)) 1677 #if (SIZEOF_VOID_P > 0) 1678 LZOCHK_ASSERT(sizeof(void*) == SIZEOF_VOID_P) 1679 LZOCHK_ASSERT(sizeof(char*) == SIZEOF_VOID_P) 1680 #endif 1681 #if (LZO_HAVE_MM_HUGE_PTR) 1682 LZOCHK_ASSERT(4 == sizeof(void __huge*)) 1683 LZOCHK_ASSERT(4 == sizeof(char __huge*)) 1684 #endif 1685 #if (LZO_ABI_I8LP16) 1686 LZOCHK_ASSERT((((1u << 7) + 1) >> 7) == 1) 1687 LZOCHK_ASSERT((((1ul << 15) + 1) >> 15) == 1) 1688 #else 1689 LZOCHK_ASSERT((((1u << 15) + 1) >> 15) == 1) 1690 LZOCHK_ASSERT((((1ul << 31) + 1) >> 31) == 1) 1691 #endif 1692 #if defined(LZOCHK_CFG_PEDANTIC) 1693 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150) 1694 #else 1695 LZOCHK_ASSERT((1 << (8*SIZEOF_INT-1)) < 0) 1696 #endif 1697 #endif 1698 LZOCHK_ASSERT((1u << (8*SIZEOF_INT-1)) > 0) 1699 #if defined(LZOCHK_CFG_PEDANTIC) 1700 LZOCHK_ASSERT((1l << (8*SIZEOF_LONG-1)) < 0) 1701 #endif 1702 LZOCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0) 1703 #if defined(lzo_int16e_t) 1704 LZOCHK_ASSERT(sizeof(lzo_int16e_t) == 2) 1705 LZOCHK_ASSERT(sizeof(lzo_int16e_t) == LZO_SIZEOF_LZO_INT16E_T) 1706 LZOCHK_ASSERT(sizeof(lzo_uint16e_t) == 2) 1707 LZOCHK_ASSERT(sizeof(lzo_int16e_t) == sizeof(lzo_uint16e_t)) 1708 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int16e_t) 1709 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint16e_t) 1710 #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150) 1711 #else 1712 LZOCHK_ASSERT((LZO_STATIC_CAST(lzo_uint16e_t, (~LZO_STATIC_CAST(lzo_uint16e_t,0ul))) >> 15) == 1) 1713 #endif 1714 LZOCHK_ASSERT( LZO_STATIC_CAST(lzo_int16e_t, (1 + ~LZO_STATIC_CAST(lzo_int16e_t, 0))) == 0) 1715 #if defined(LZOCHK_CFG_PEDANTIC) 1716 LZOCHK_ASSERT( LZO_STATIC_CAST(lzo_uint16e_t, (1 + ~LZO_STATIC_CAST(lzo_uint16e_t, 0))) == 0) 1717 #endif 1718 #endif 1719 #if defined(lzo_int32e_t) 1720 LZOCHK_ASSERT(sizeof(lzo_int32e_t) == 4) 1721 LZOCHK_ASSERT(sizeof(lzo_int32e_t) == LZO_SIZEOF_LZO_INT32E_T) 1722 LZOCHK_ASSERT(sizeof(lzo_uint32e_t) == 4) 1723 LZOCHK_ASSERT(sizeof(lzo_int32e_t) == sizeof(lzo_uint32e_t)) 1724 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int32e_t) 1725 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_int32e_t, 1) << 30) + 1) >> 30) == 1) 1726 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32e_t) 1727 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_uint32e_t, 1) << 31) + 1) >> 31) == 1) 1728 LZOCHK_ASSERT((LZO_STATIC_CAST(lzo_uint32e_t, (~LZO_STATIC_CAST(lzo_uint32e_t, 0ul))) >> 31) == 1) 1729 LZOCHK_ASSERT( LZO_STATIC_CAST(lzo_int32e_t, (1 + ~LZO_STATIC_CAST(lzo_int32e_t, 0))) == 0) 1730 #if defined(LZOCHK_CFG_PEDANTIC) 1731 LZOCHK_ASSERT( LZO_STATIC_CAST(lzo_uint32e_t, (1 + ~LZO_STATIC_CAST(lzo_uint32e_t, 0))) == 0) 1732 #endif 1733 #endif 1734 #if defined(lzo_int32e_t) 1735 LZOCHK_ASSERT(sizeof(lzo_int32l_t) >= sizeof(lzo_int32e_t)) 1736 #endif 1737 LZOCHK_ASSERT(sizeof(lzo_int32l_t) >= 4) 1738 LZOCHK_ASSERT(sizeof(lzo_int32l_t) == LZO_SIZEOF_LZO_INT32L_T) 1739 LZOCHK_ASSERT(sizeof(lzo_uint32l_t) >= 4) 1740 LZOCHK_ASSERT(sizeof(lzo_int32l_t) == sizeof(lzo_uint32l_t)) 1741 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int32l_t) 1742 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_int32l_t, 1) << 30) + 1) >> 30) == 1) 1743 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32l_t) 1744 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_uint32l_t, 1) << 31) + 1) >> 31) == 1) 1745 LZOCHK_ASSERT(sizeof(lzo_int32f_t) >= sizeof(int)) 1746 #if defined(lzo_int32e_t) 1747 LZOCHK_ASSERT(sizeof(lzo_int32f_t) >= sizeof(lzo_int32e_t)) 1748 #endif 1749 LZOCHK_ASSERT(sizeof(lzo_int32f_t) >= sizeof(lzo_int32l_t)) 1750 LZOCHK_ASSERT(sizeof(lzo_int32f_t) >= 4) 1751 LZOCHK_ASSERT(sizeof(lzo_int32f_t) >= sizeof(lzo_int32l_t)) 1752 LZOCHK_ASSERT(sizeof(lzo_int32f_t) == LZO_SIZEOF_LZO_INT32F_T) 1753 LZOCHK_ASSERT(sizeof(lzo_uint32f_t) >= 4) 1754 LZOCHK_ASSERT(sizeof(lzo_uint32f_t) >= sizeof(lzo_uint32l_t)) 1755 LZOCHK_ASSERT(sizeof(lzo_int32f_t) == sizeof(lzo_uint32f_t)) 1756 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int32f_t) 1757 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_int32f_t, 1) << 30) + 1) >> 30) == 1) 1758 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32f_t) 1759 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_uint32f_t, 1) << 31) + 1) >> 31) == 1) 1760 #if defined(lzo_int64e_t) 1761 LZOCHK_ASSERT(sizeof(lzo_int64e_t) == 8) 1762 LZOCHK_ASSERT(sizeof(lzo_int64e_t) == LZO_SIZEOF_LZO_INT64E_T) 1763 LZOCHK_ASSERT(sizeof(lzo_uint64e_t) == 8) 1764 LZOCHK_ASSERT(sizeof(lzo_int64e_t) == sizeof(lzo_uint64e_t)) 1765 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int64e_t) 1766 #if (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0530)) 1767 #else 1768 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint64e_t) 1769 #endif 1770 #endif 1771 #if defined(lzo_int64l_t) 1772 #if defined(lzo_int64e_t) 1773 LZOCHK_ASSERT(sizeof(lzo_int64l_t) >= sizeof(lzo_int64e_t)) 1774 #endif 1775 LZOCHK_ASSERT(sizeof(lzo_int64l_t) >= 8) 1776 LZOCHK_ASSERT(sizeof(lzo_int64l_t) == LZO_SIZEOF_LZO_INT64L_T) 1777 LZOCHK_ASSERT(sizeof(lzo_uint64l_t) >= 8) 1778 LZOCHK_ASSERT(sizeof(lzo_int64l_t) == sizeof(lzo_uint64l_t)) 1779 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int64l_t) 1780 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_int64l_t, 1) << 62) + 1) >> 62) == 1) 1781 LZOCHK_ASSERT(((( LZO_INT64_C(1) << 62) + 1) >> 62) == 1) 1782 #if (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0530)) 1783 #else 1784 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint64l_t) 1785 LZOCHK_ASSERT(LZO_UINT64_C(18446744073709551615) > 0) 1786 #endif 1787 LZOCHK_ASSERT(((( LZO_STATIC_CAST(lzo_uint64l_t, 1) << 63) + 1) >> 63) == 1) 1788 LZOCHK_ASSERT(((( LZO_UINT64_C(1) << 63) + 1) >> 63) == 1) 1789 #if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020600ul)) 1790 LZOCHK_ASSERT(LZO_INT64_C(9223372036854775807) > LZO_INT64_C(0)) 1791 #else 1792 LZOCHK_ASSERT(LZO_INT64_C(9223372036854775807) > 0) 1793 #endif 1794 LZOCHK_ASSERT(LZO_INT64_C(-9223372036854775807) - 1 < 0) 1795 LZOCHK_ASSERT( LZO_INT64_C(9223372036854775807) % LZO_INT32_C(2147483629) == 721) 1796 LZOCHK_ASSERT( LZO_INT64_C(9223372036854775807) % LZO_INT32_C(2147483647) == 1) 1797 LZOCHK_ASSERT(LZO_UINT64_C(9223372036854775807) % LZO_UINT32_C(2147483629) == 721) 1798 LZOCHK_ASSERT(LZO_UINT64_C(9223372036854775807) % LZO_UINT32_C(2147483647) == 1) 1799 #endif 1800 #if defined(lzo_int64f_t) 1801 #if defined(lzo_int64e_t) 1802 LZOCHK_ASSERT(sizeof(lzo_int64f_t) >= sizeof(lzo_int64e_t)) 1803 #endif 1804 LZOCHK_ASSERT(sizeof(lzo_int64f_t) >= sizeof(lzo_int64l_t)) 1805 LZOCHK_ASSERT(sizeof(lzo_int64f_t) >= 8) 1806 LZOCHK_ASSERT(sizeof(lzo_int64f_t) >= sizeof(lzo_int64l_t)) 1807 LZOCHK_ASSERT(sizeof(lzo_int64f_t) == LZO_SIZEOF_LZO_INT64F_T) 1808 LZOCHK_ASSERT(sizeof(lzo_uint64f_t) >= 8) 1809 LZOCHK_ASSERT(sizeof(lzo_uint64f_t) >= sizeof(lzo_uint64l_t)) 1810 LZOCHK_ASSERT(sizeof(lzo_int64f_t) == sizeof(lzo_uint64f_t)) 1811 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int64f_t) 1812 #if (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0530)) 1813 #else 1814 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint64f_t) 1815 #endif 1816 #endif 1817 #if !defined(__LZO_INTPTR_T_IS_POINTER) 1818 LZOCHK_ASSERT_IS_SIGNED_T(lzo_intptr_t) 1819 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t) 1820 #endif 1821 LZOCHK_ASSERT(sizeof(lzo_intptr_t) >= sizeof(void *)) 1822 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == LZO_SIZEOF_LZO_INTPTR_T) 1823 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(lzo_uintptr_t)) 1824 #if defined(lzo_word_t) 1825 LZOCHK_ASSERT(LZO_WORDSIZE == LZO_SIZEOF_LZO_WORD_T) 1826 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_word_t) 1827 LZOCHK_ASSERT_IS_SIGNED_T(lzo_sword_t) 1828 LZOCHK_ASSERT(sizeof(lzo_word_t) == LZO_SIZEOF_LZO_WORD_T) 1829 LZOCHK_ASSERT(sizeof(lzo_word_t) == sizeof(lzo_sword_t)) 1830 #endif 1831 LZOCHK_ASSERT(sizeof(lzo_int8_t) == 1) 1832 LZOCHK_ASSERT(sizeof(lzo_uint8_t) == 1) 1833 LZOCHK_ASSERT(sizeof(lzo_int8_t) == sizeof(lzo_uint8_t)) 1834 LZOCHK_ASSERT_IS_SIGNED_T(lzo_int8_t) 1835 LZOCHK_ASSERT_IS_UNSIGNED_T(lzo_uint8_t) 1836 #if defined(LZO_INT16_C) 1837 LZOCHK_ASSERT(sizeof(LZO_INT16_C(0)) >= 2) 1838 LZOCHK_ASSERT(sizeof(LZO_UINT16_C(0)) >= 2) 1839 LZOCHK_ASSERT((LZO_UINT16_C(0xffff) >> 15) == 1) 1840 #endif 1841 #if defined(LZO_INT32_C) 1842 LZOCHK_ASSERT(sizeof(LZO_INT32_C(0)) >= 4) 1843 LZOCHK_ASSERT(sizeof(LZO_UINT32_C(0)) >= 4) 1844 LZOCHK_ASSERT((LZO_UINT32_C(0xffffffff) >> 31) == 1) 1845 #endif 1846 #if defined(LZO_INT64_C) 1847 #if (LZO_CC_BORLANDC && (__BORLANDC__ < 0x0560)) 1848 #else 1849 LZOCHK_ASSERT(sizeof(LZO_INT64_C(0)) >= 8) 1850 LZOCHK_ASSERT(sizeof(LZO_UINT64_C(0)) >= 8) 1851 #endif 1852 LZOCHK_ASSERT((LZO_UINT64_C(0xffffffffffffffff) >> 63) == 1) 1853 LZOCHK_ASSERT((LZO_UINT64_C(0xffffffffffffffff) & ~0) == LZO_UINT64_C(0xffffffffffffffff)) 1854 LZOCHK_ASSERT((LZO_UINT64_C(0xffffffffffffffff) & ~0l) == LZO_UINT64_C(0xffffffffffffffff)) 1855 #if (SIZEOF_INT == 4) 1856 # if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) 1857 # else 1858 LZOCHK_ASSERT((LZO_UINT64_C(0xffffffffffffffff) & (~0u+0u)) == 0xffffffffu) 1859 # endif 1860 #endif 1861 #if (SIZEOF_LONG == 4) 1862 # if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) 1863 # else 1864 LZOCHK_ASSERT((LZO_UINT64_C(0xffffffffffffffff) & (~0ul+0ul)) == 0xfffffffful) 1865 # endif 1866 #endif 1867 #endif 1868 #if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) 1869 LZOCHK_ASSERT(sizeof(void*) == 2) 1870 LZOCHK_ASSERT(sizeof(ptrdiff_t) == 2) 1871 #elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) 1872 LZOCHK_ASSERT(sizeof(void*) == 4) 1873 #endif 1874 #if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_COMPACT) 1875 LZOCHK_ASSERT(sizeof(void (*)(void)) == 2) 1876 #elif (LZO_MM_MEDIUM || LZO_MM_LARGE || LZO_MM_HUGE) 1877 LZOCHK_ASSERT(sizeof(void (*)(void)) == 4) 1878 #endif 1879 #if (LZO_ABI_ILP32) 1880 LZOCHK_ASSERT(sizeof(int) == 4) 1881 LZOCHK_ASSERT(sizeof(long) == 4) 1882 LZOCHK_ASSERT(sizeof(void*) == 4) 1883 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*)) 1884 LZOCHK_ASSERT(sizeof(size_t) == sizeof(void*)) 1885 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1886 #endif 1887 #if (LZO_ABI_ILP64) 1888 LZOCHK_ASSERT(sizeof(int) == 8) 1889 LZOCHK_ASSERT(sizeof(long) == 8) 1890 LZOCHK_ASSERT(sizeof(void*) == 8) 1891 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*)) 1892 LZOCHK_ASSERT(sizeof(size_t) == sizeof(void*)) 1893 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1894 #endif 1895 #if (LZO_ABI_IP32L64) 1896 LZOCHK_ASSERT(sizeof(int) == 4) 1897 LZOCHK_ASSERT(sizeof(long) == 8) 1898 LZOCHK_ASSERT(sizeof(void*) == 4) 1899 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*)) 1900 LZOCHK_ASSERT(sizeof(size_t) == sizeof(void*)) 1901 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1902 #endif 1903 #if (LZO_ABI_LLP64) 1904 LZOCHK_ASSERT(sizeof(int) == 4) 1905 LZOCHK_ASSERT(sizeof(long) == 4) 1906 LZOCHK_ASSERT(sizeof(void*) == 8) 1907 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*)) 1908 LZOCHK_ASSERT(sizeof(size_t) == sizeof(void*)) 1909 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1910 #endif 1911 #if (LZO_ABI_LP32) 1912 LZOCHK_ASSERT(sizeof(int) == 2) 1913 LZOCHK_ASSERT(sizeof(long) == 4) 1914 LZOCHK_ASSERT(sizeof(void*) == 4) 1915 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1916 #endif 1917 #if (LZO_ABI_LP64) 1918 LZOCHK_ASSERT(sizeof(int) == 4) 1919 LZOCHK_ASSERT(sizeof(long) == 8) 1920 LZOCHK_ASSERT(sizeof(void*) == 8) 1921 LZOCHK_ASSERT(sizeof(ptrdiff_t) == sizeof(void*)) 1922 LZOCHK_ASSERT(sizeof(size_t) == sizeof(void*)) 1923 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1924 #endif 1925 #if (LZO_ARCH_I086) 1926 LZOCHK_ASSERT(sizeof(size_t) == 2) 1927 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1928 #elif (LZO_ARCH_I386 || LZO_ARCH_M68K) 1929 LZOCHK_ASSERT(sizeof(size_t) == 4) 1930 LZOCHK_ASSERT(sizeof(ptrdiff_t) == 4) 1931 LZOCHK_ASSERT(sizeof(lzo_intptr_t) == sizeof(void *)) 1932 #endif 1933 #if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32) 1934 LZOCHK_ASSERT(sizeof(size_t) == 4) 1935 LZOCHK_ASSERT(sizeof(ptrdiff_t) == 4) 1936 LZOCHK_ASSERT(sizeof(void (*)(void)) == 4) 1937 #elif (LZO_OS_WIN64) 1938 LZOCHK_ASSERT(sizeof(size_t) == 8) 1939 LZOCHK_ASSERT(sizeof(ptrdiff_t) == 8) 1940 LZOCHK_ASSERT(sizeof(void (*)(void)) == 8) 1941 #endif 1942 #if (LZO_CC_NDPC) 1943 #elif (SIZEOF_INT > 1) 1944 LZOCHK_ASSERT( LZO_STATIC_CAST(int, LZO_STATIC_CAST(unsigned char, LZO_STATIC_CAST(signed char, -1))) == 255) 1945 #endif 1946 #if defined(LZOCHK_CFG_PEDANTIC) 1947 #if (LZO_CC_KEILC) 1948 #elif (LZO_CC_NDPC) 1949 #elif !(LZO_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1) 1950 LZOCHK_ASSERT( ((LZO_STATIC_CAST(unsigned char, 128)) << LZO_STATIC_CAST(int, (8*sizeof(int)-8))) < 0) 1951 #endif 1952 #endif 1953 #if defined(LZOCHK_CFG_PEDANTIC) 1954 #if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560)) 1955 # pragma option pop 1956 #endif 1957 #endif 1958 #endif 1959 #if defined(LZO_WANT_ACCLIB_VGET) 1960 # undef LZO_WANT_ACCLIB_VGET 1961 #define __LZOLIB_VGET_CH_INCLUDED 1 1962 #if !defined(LZOLIB_PUBLIC) 1963 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 1964 #endif 1965 #if !defined(LZOLIB_PUBLIC_NOINLINE) 1966 # if !defined(__lzo_noinline) 1967 # define LZOLIB_PUBLIC_NOINLINE(r,f) r __LZOLIB_FUNCNAME(f) 1968 # elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || LZO_CC_LLVM) 1969 # define LZOLIB_PUBLIC_NOINLINE(r,f) __lzo_noinline __attribute__((__used__)) r __LZOLIB_FUNCNAME(f) 1970 # else 1971 # define LZOLIB_PUBLIC_NOINLINE(r,f) __lzo_noinline r __LZOLIB_FUNCNAME(f) 1972 # endif 1973 #endif 1974 extern void* volatile lzo_vget_ptr__; 1975 #if (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || LZO_CC_LLVM) 1976 void* volatile __attribute__((__used__)) lzo_vget_ptr__ = LZO_STATIC_CAST(void *, 0); 1977 #else 1978 void* volatile lzo_vget_ptr__ = LZO_STATIC_CAST(void *, 0); 1979 #endif 1980 #ifndef __LZOLIB_VGET_BODY 1981 #define __LZOLIB_VGET_BODY(T) \ 1982 if __lzo_unlikely(lzo_vget_ptr__) { \ 1983 typedef T __lzo_may_alias TT; \ 1984 unsigned char e; expr &= 255; e = LZO_STATIC_CAST(unsigned char, expr); \ 1985 * LZO_STATIC_CAST(TT *, lzo_vget_ptr__) = v; \ 1986 * LZO_STATIC_CAST(unsigned char *, lzo_vget_ptr__) = e; \ 1987 v = * LZO_STATIC_CAST(TT *, lzo_vget_ptr__); \ 1988 } \ 1989 return v; 1990 #endif 1991 LZOLIB_PUBLIC_NOINLINE(short, lzo_vget_short) (short v, int expr) 1992 { 1993 __LZOLIB_VGET_BODY(short) 1994 } 1995 LZOLIB_PUBLIC_NOINLINE(int, lzo_vget_int) (int v, int expr) 1996 { 1997 __LZOLIB_VGET_BODY(int) 1998 } 1999 LZOLIB_PUBLIC_NOINLINE(long, lzo_vget_long) (long v, int expr) 2000 { 2001 __LZOLIB_VGET_BODY(long) 2002 } 2003 #if defined(lzo_int64l_t) 2004 LZOLIB_PUBLIC_NOINLINE(lzo_int64l_t, lzo_vget_lzo_int64l_t) (lzo_int64l_t v, int expr) 2005 { 2006 __LZOLIB_VGET_BODY(lzo_int64l_t) 2007 } 2008 #endif 2009 LZOLIB_PUBLIC_NOINLINE(lzo_hsize_t, lzo_vget_lzo_hsize_t) (lzo_hsize_t v, int expr) 2010 { 2011 __LZOLIB_VGET_BODY(lzo_hsize_t) 2012 } 2013 #if !(LZO_CFG_NO_DOUBLE) 2014 LZOLIB_PUBLIC_NOINLINE(double, lzo_vget_double) (double v, int expr) 2015 { 2016 __LZOLIB_VGET_BODY(double) 2017 } 2018 #endif 2019 LZOLIB_PUBLIC_NOINLINE(lzo_hvoid_p, lzo_vget_lzo_hvoid_p) (lzo_hvoid_p v, int expr) 2020 { 2021 __LZOLIB_VGET_BODY(lzo_hvoid_p) 2022 } 2023 #if (LZO_ARCH_I086 && LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) && !defined(__cplusplus) 2024 LZOLIB_PUBLIC_NOINLINE(lzo_hvoid_p, lzo_vget_lzo_hvoid_cp) (const lzo_hvoid_p vv, int expr) 2025 { 2026 lzo_hvoid_p v = (lzo_hvoid_p) vv; 2027 __LZOLIB_VGET_BODY(lzo_hvoid_p) 2028 } 2029 #else 2030 LZOLIB_PUBLIC_NOINLINE(const lzo_hvoid_p, lzo_vget_lzo_hvoid_cp) (const lzo_hvoid_p v, int expr) 2031 { 2032 __LZOLIB_VGET_BODY(const lzo_hvoid_p) 2033 } 2034 #endif 2035 #endif 2036 #if defined(LZO_WANT_ACCLIB_HMEMCPY) 2037 # undef LZO_WANT_ACCLIB_HMEMCPY 2038 #define __LZOLIB_HMEMCPY_CH_INCLUDED 1 2039 #if !defined(LZOLIB_PUBLIC) 2040 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2041 #endif 2042 LZOLIB_PUBLIC(int, lzo_hmemcmp) (const lzo_hvoid_p s1, const lzo_hvoid_p s2, lzo_hsize_t len) 2043 { 2044 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCMP) 2045 const lzo_hbyte_p p1 = LZO_STATIC_CAST(const lzo_hbyte_p, s1); 2046 const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, s2); 2047 if __lzo_likely(len > 0) do 2048 { 2049 int d = *p1 - *p2; 2050 if (d != 0) 2051 return d; 2052 p1++; p2++; 2053 } while __lzo_likely(--len > 0); 2054 return 0; 2055 #else 2056 return memcmp(s1, s2, len); 2057 #endif 2058 } 2059 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len) 2060 { 2061 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCPY) 2062 lzo_hbyte_p p1 = LZO_STATIC_CAST(lzo_hbyte_p, dest); 2063 const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, src); 2064 if (!(len > 0) || p1 == p2) 2065 return dest; 2066 do 2067 *p1++ = *p2++; 2068 while __lzo_likely(--len > 0); 2069 return dest; 2070 #else 2071 return memcpy(dest, src, len); 2072 #endif 2073 } 2074 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len) 2075 { 2076 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMMOVE) 2077 lzo_hbyte_p p1 = LZO_STATIC_CAST(lzo_hbyte_p, dest); 2078 const lzo_hbyte_p p2 = LZO_STATIC_CAST(const lzo_hbyte_p, src); 2079 if (!(len > 0) || p1 == p2) 2080 return dest; 2081 if (p1 < p2) 2082 { 2083 do 2084 *p1++ = *p2++; 2085 while __lzo_likely(--len > 0); 2086 } 2087 else 2088 { 2089 p1 += len; 2090 p2 += len; 2091 do 2092 *--p1 = *--p2; 2093 while __lzo_likely(--len > 0); 2094 } 2095 return dest; 2096 #else 2097 return memmove(dest, src, len); 2098 #endif 2099 } 2100 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int cc, lzo_hsize_t len) 2101 { 2102 #if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMSET) 2103 lzo_hbyte_p p = LZO_STATIC_CAST(lzo_hbyte_p, s); 2104 unsigned char c = LZO_ITRUNC(unsigned char, cc); 2105 if __lzo_likely(len > 0) do 2106 *p++ = c; 2107 while __lzo_likely(--len > 0); 2108 return s; 2109 #else 2110 return memset(s, cc, len); 2111 #endif 2112 } 2113 #endif 2114 #if defined(LZO_WANT_ACCLIB_RAND) 2115 # undef LZO_WANT_ACCLIB_RAND 2116 #define __LZOLIB_RAND_CH_INCLUDED 1 2117 #if !defined(LZOLIB_PUBLIC) 2118 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2119 #endif 2120 LZOLIB_PUBLIC(void, lzo_srand31) (lzo_rand31_p r, lzo_uint32l_t seed) 2121 { 2122 r->seed = seed & LZO_UINT32_C(0xffffffff); 2123 } 2124 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_rand31) (lzo_rand31_p r) 2125 { 2126 r->seed = r->seed * LZO_UINT32_C(1103515245) + 12345; 2127 r->seed &= LZO_UINT32_C(0x7fffffff); 2128 return r->seed; 2129 } 2130 #if defined(lzo_int64l_t) 2131 LZOLIB_PUBLIC(void, lzo_srand48) (lzo_rand48_p r, lzo_uint32l_t seed) 2132 { 2133 r->seed = seed & LZO_UINT32_C(0xffffffff); 2134 r->seed <<= 16; r->seed |= 0x330e; 2135 } 2136 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_rand48) (lzo_rand48_p r) 2137 { 2138 lzo_uint64l_t a; 2139 r->seed = r->seed * LZO_UINT64_C(25214903917) + 11; 2140 r->seed &= LZO_UINT64_C(0xffffffffffff); 2141 a = r->seed >> 17; 2142 return LZO_STATIC_CAST(lzo_uint32l_t, a); 2143 } 2144 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_rand48_r32) (lzo_rand48_p r) 2145 { 2146 lzo_uint64l_t a; 2147 r->seed = r->seed * LZO_UINT64_C(25214903917) + 11; 2148 r->seed &= LZO_UINT64_C(0xffffffffffff); 2149 a = r->seed >> 16; 2150 return LZO_STATIC_CAST(lzo_uint32l_t, a); 2151 } 2152 #endif 2153 #if defined(lzo_int64l_t) 2154 LZOLIB_PUBLIC(void, lzo_srand64) (lzo_rand64_p r, lzo_uint64l_t seed) 2155 { 2156 r->seed = seed & LZO_UINT64_C(0xffffffffffffffff); 2157 } 2158 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_rand64) (lzo_rand64_p r) 2159 { 2160 lzo_uint64l_t a; 2161 r->seed = r->seed * LZO_UINT64_C(6364136223846793005) + 1; 2162 #if (LZO_SIZEOF_LZO_INT64L_T > 8) 2163 r->seed &= LZO_UINT64_C(0xffffffffffffffff); 2164 #endif 2165 a = r->seed >> 33; 2166 return LZO_STATIC_CAST(lzo_uint32l_t, a); 2167 } 2168 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_rand64_r32) (lzo_rand64_p r) 2169 { 2170 lzo_uint64l_t a; 2171 r->seed = r->seed * LZO_UINT64_C(6364136223846793005) + 1; 2172 #if (LZO_SIZEOF_LZO_INT64L_T > 8) 2173 r->seed &= LZO_UINT64_C(0xffffffffffffffff); 2174 #endif 2175 a = r->seed >> 32; 2176 return LZO_STATIC_CAST(lzo_uint32l_t, a); 2177 } 2178 #endif 2179 LZOLIB_PUBLIC(void, lzo_srandmt) (lzo_randmt_p r, lzo_uint32l_t seed) 2180 { 2181 unsigned i = 0; 2182 do { 2183 r->s[i++] = (seed &= LZO_UINT32_C(0xffffffff)); 2184 seed ^= seed >> 30; 2185 seed = seed * LZO_UINT32_C(0x6c078965) + i; 2186 } while (i != 624); 2187 r->n = i; 2188 } 2189 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_randmt) (lzo_randmt_p r) 2190 { 2191 return (__LZOLIB_FUNCNAME(lzo_randmt_r32)(r)) >> 1; 2192 } 2193 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_randmt_r32) (lzo_randmt_p r) 2194 { 2195 lzo_uint32l_t v; 2196 if __lzo_unlikely(r->n == 624) { 2197 unsigned i = 0, j; 2198 r->n = 0; 2199 do { 2200 j = i - 623; if (LZO_STATIC_CAST(int, j) < 0) j += 624; 2201 v = (r->s[i] & LZO_UINT32_C(0x80000000)) ^ (r->s[j] & LZO_UINT32_C(0x7fffffff)); 2202 j = i - 227; if (LZO_STATIC_CAST(int, j) < 0) j += 624; 2203 r->s[i] = r->s[j] ^ (v >> 1); 2204 if (v & 1) r->s[i] ^= LZO_UINT32_C(0x9908b0df); 2205 } while (++i != 624); 2206 } 2207 { unsigned i = r->n++; v = r->s[i]; } 2208 v ^= v >> 11; v ^= (v & LZO_UINT32_C(0x013a58ad)) << 7; 2209 v ^= (v & LZO_UINT32_C(0x0001df8c)) << 15; v ^= v >> 18; 2210 return v; 2211 } 2212 #if defined(lzo_int64l_t) 2213 LZOLIB_PUBLIC(void, lzo_srandmt64) (lzo_randmt64_p r, lzo_uint64l_t seed) 2214 { 2215 unsigned i = 0; 2216 do { 2217 r->s[i++] = (seed &= LZO_UINT64_C(0xffffffffffffffff)); 2218 seed ^= seed >> 62; 2219 seed = seed * LZO_UINT64_C(0x5851f42d4c957f2d) + i; 2220 } while (i != 312); 2221 r->n = i; 2222 } 2223 #if 0 2224 LZOLIB_PUBLIC(lzo_uint32l_t, lzo_randmt64) (lzo_randmt64_p r) 2225 { 2226 lzo_uint64l_t v; 2227 v = (__LZOLIB_FUNCNAME(lzo_randmt64_r64)(r)) >> 33; 2228 return LZO_STATIC_CAST(lzo_uint32l_t, v); 2229 } 2230 #endif 2231 LZOLIB_PUBLIC(lzo_uint64l_t, lzo_randmt64_r64) (lzo_randmt64_p r) 2232 { 2233 lzo_uint64l_t v; 2234 if __lzo_unlikely(r->n == 312) { 2235 unsigned i = 0, j; 2236 r->n = 0; 2237 do { 2238 j = i - 311; if (LZO_STATIC_CAST(int, j) < 0) j += 312; 2239 v = (r->s[i] & LZO_UINT64_C(0xffffffff80000000)) ^ (r->s[j] & LZO_UINT64_C(0x7fffffff)); 2240 j = i - 156; if (LZO_STATIC_CAST(int, j) < 0) j += 312; 2241 r->s[i] = r->s[j] ^ (v >> 1); 2242 if (v & 1) r->s[i] ^= LZO_UINT64_C(0xb5026f5aa96619e9); 2243 } while (++i != 312); 2244 } 2245 { unsigned i = r->n++; v = r->s[i]; } 2246 v ^= (v & LZO_UINT64_C(0xaaaaaaaaa0000000)) >> 29; 2247 v ^= (v & LZO_UINT64_C(0x38eb3ffff6d3)) << 17; 2248 v ^= (v & LZO_UINT64_C(0x7ffbf77)) << 37; 2249 return v ^ (v >> 43); 2250 } 2251 #endif 2252 #endif 2253 #if defined(LZO_WANT_ACCLIB_RDTSC) 2254 # undef LZO_WANT_ACCLIB_RDTSC 2255 #define __LZOLIB_RDTSC_CH_INCLUDED 1 2256 #if !defined(LZOLIB_PUBLIC) 2257 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2258 #endif 2259 #if defined(lzo_int32e_t) 2260 #if (LZO_OS_WIN32 && LZO_CC_PELLESC && (__POCC__ >= 290)) 2261 # pragma warn(push) 2262 # pragma warn(disable:2007) 2263 #endif 2264 #if (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 2265 #if (LZO_ARCH_AMD64 && LZO_CC_INTELC) 2266 # define __LZOLIB_RDTSC_REGS : : "c" (t) : "memory", "rax", "rdx" 2267 #elif (LZO_ARCH_AMD64) 2268 # define __LZOLIB_RDTSC_REGS : : "c" (t) : "cc", "memory", "rax", "rdx" 2269 #elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) 2270 # define __LZOLIB_RDTSC_REGS : : "c" (t) : "ax", "dx" 2271 #elif (LZO_ARCH_I386 && LZO_CC_INTELC) 2272 # define __LZOLIB_RDTSC_REGS : : "c" (t) : "memory", "eax", "edx" 2273 #else 2274 # define __LZOLIB_RDTSC_REGS : : "c" (t) : "cc", "memory", "eax", "edx" 2275 #endif 2276 #endif 2277 LZOLIB_PUBLIC(int, lzo_tsc_read) (lzo_uint32e_t* t) 2278 { 2279 #if (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 2280 __asm__ __volatile__( 2281 "clc \n" ".byte 0x0f,0x31\n" 2282 "movl %%eax,(%0)\n" "movl %%edx,4(%0)\n" 2283 __LZOLIB_RDTSC_REGS 2284 ); 2285 return 0; 2286 #elif (LZO_ARCH_I386) && (LZO_ASM_SYNTAX_MSC) 2287 LZO_UNUSED(t); 2288 __asm { 2289 mov ecx, t 2290 clc 2291 # if (LZO_CC_MSC && (_MSC_VER < 1200)) 2292 _emit 0x0f 2293 _emit 0x31 2294 # else 2295 rdtsc 2296 # endif 2297 mov [ecx], eax 2298 mov [ecx+4], edx 2299 } 2300 return 0; 2301 #else 2302 t[0] = t[1] = 0; return -1; 2303 #endif 2304 } 2305 #if (LZO_OS_WIN32 && LZO_CC_PELLESC && (__POCC__ >= 290)) 2306 # pragma warn(pop) 2307 #endif 2308 #endif 2309 #endif 2310 #if defined(LZO_WANT_ACCLIB_DOSALLOC) 2311 # undef LZO_WANT_ACCLIB_DOSALLOC 2312 #define __LZOLIB_DOSALLOC_CH_INCLUDED 1 2313 #if !defined(LZOLIB_PUBLIC) 2314 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2315 #endif 2316 #if (LZO_OS_OS216) 2317 LZO_EXTERN_C unsigned short __far __pascal DosAllocHuge(unsigned short, unsigned short, unsigned short __far *, unsigned short, unsigned short); 2318 LZO_EXTERN_C unsigned short __far __pascal DosFreeSeg(unsigned short); 2319 #endif 2320 #if (LZO_OS_DOS16 || LZO_OS_WIN16) 2321 #if !(LZO_CC_AZTECC) 2322 LZOLIB_PUBLIC(void __far*, lzo_dos_alloc) (unsigned long size) 2323 { 2324 void __far* p = 0; 2325 union REGS ri, ro; 2326 if ((long)size <= 0) 2327 return p; 2328 size = (size + 15) >> 4; 2329 if (size > 0xffffu) 2330 return p; 2331 ri.x.ax = 0x4800; 2332 ri.x.bx = (unsigned short) size; 2333 int86(0x21, &ri, &ro); 2334 if ((ro.x.cflag & 1) == 0) 2335 p = (void __far*) LZO_PTR_MK_FP(ro.x.ax, 0); 2336 return p; 2337 } 2338 LZOLIB_PUBLIC(int, lzo_dos_free) (void __far* p) 2339 { 2340 union REGS ri, ro; 2341 struct SREGS rs; 2342 if (!p) 2343 return 0; 2344 if (LZO_PTR_FP_OFF(p) != 0) 2345 return -1; 2346 segread(&rs); 2347 ri.x.ax = 0x4900; 2348 rs.es = LZO_PTR_FP_SEG(p); 2349 int86x(0x21, &ri, &ro, &rs); 2350 if (ro.x.cflag & 1) 2351 return -1; 2352 return 0; 2353 } 2354 #endif 2355 #endif 2356 #if (LZO_OS_OS216) 2357 LZOLIB_PUBLIC(void __far*, lzo_dos_alloc) (unsigned long size) 2358 { 2359 void __far* p = 0; 2360 unsigned short sel = 0; 2361 if ((long)size <= 0) 2362 return p; 2363 if (DosAllocHuge((unsigned short)(size >> 16), (unsigned short)size, &sel, 0, 0) == 0) 2364 p = (void __far*) LZO_PTR_MK_FP(sel, 0); 2365 return p; 2366 } 2367 LZOLIB_PUBLIC(int, lzo_dos_free) (void __far* p) 2368 { 2369 if (!p) 2370 return 0; 2371 if (LZO_PTR_FP_OFF(p) != 0) 2372 return -1; 2373 if (DosFreeSeg(LZO_PTR_FP_SEG(p)) != 0) 2374 return -1; 2375 return 0; 2376 } 2377 #endif 2378 #endif 2379 #if defined(LZO_WANT_ACCLIB_GETOPT) 2380 # undef LZO_WANT_ACCLIB_GETOPT 2381 #define __LZOLIB_GETOPT_CH_INCLUDED 1 2382 #if !defined(LZOLIB_PUBLIC) 2383 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2384 #endif 2385 LZOLIB_PUBLIC(void, lzo_getopt_init) (lzo_getopt_p g, 2386 int start_argc, int argc, char** argv) 2387 { 2388 memset(g, 0, sizeof(*g)); 2389 g->optind = start_argc; 2390 g->argc = argc; g->argv = argv; 2391 g->optopt = -1; 2392 } 2393 static int __LZOLIB_FUNCNAME(lzo_getopt_rotate) (char** p, int first, int middle, int last) 2394 { 2395 int i = middle, n = middle - first; 2396 if (first >= middle || middle >= last) return 0; 2397 for (;;) 2398 { 2399 char* t = p[first]; p[first] = p[i]; p[i] = t; 2400 if (++first == middle) 2401 { 2402 if (++i == last) break; 2403 middle = i; 2404 } 2405 else if (++i == last) 2406 i = middle; 2407 } 2408 return n; 2409 } 2410 static int __LZOLIB_FUNCNAME(lzo_getopt_perror) (lzo_getopt_p g, int ret, const char* f, ...) 2411 { 2412 if (g->opterr) 2413 { 2414 #if (HAVE_STDARG_H) 2415 struct { va_list ap; } s; 2416 va_start(s.ap, f); 2417 g->opterr(g, f, &s); 2418 va_end(s.ap); 2419 #else 2420 g->opterr(g, f, NULL); 2421 #endif 2422 } 2423 ++g->errcount; 2424 return ret; 2425 } 2426 LZOLIB_PUBLIC(int, lzo_getopt) (lzo_getopt_p g, 2427 const char* shortopts, 2428 const lzo_getopt_longopt_p longopts, 2429 int* longind) 2430 { 2431 #define pe __LZOLIB_FUNCNAME(lzo_getopt_perror) 2432 int ordering = LZO_GETOPT_PERMUTE; 2433 int missing_arg_ret = g->bad_option; 2434 char* a; 2435 if (shortopts) 2436 { 2437 if (*shortopts == '-' || *shortopts == '+') 2438 ordering = *shortopts++ == '-' ? LZO_GETOPT_RETURN_IN_ORDER : LZO_GETOPT_REQUIRE_ORDER; 2439 if (*shortopts == ':') 2440 missing_arg_ret = *shortopts++; 2441 } 2442 g->optarg = NULL; 2443 if (g->optopt == -1) 2444 g->optopt = g->bad_option; 2445 if (longind) 2446 *longind = -1; 2447 if (g->eof) 2448 return -1; 2449 if (g->shortpos) 2450 goto lzo_label_next_shortopt; 2451 g->optind -= __LZOLIB_FUNCNAME(lzo_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind); 2452 g->pending_rotate_first = g->pending_rotate_middle = g->optind; 2453 if (ordering == LZO_GETOPT_PERMUTE) 2454 { 2455 while (g->optind < g->argc && !(g->argv[g->optind][0] == '-' && g->argv[g->optind][1])) 2456 ++g->optind; 2457 g->pending_rotate_middle = g->optind; 2458 } 2459 if (g->optind >= g->argc) 2460 { 2461 g->optind = g->pending_rotate_first; 2462 goto lzo_label_eof; 2463 } 2464 a = g->argv[g->optind]; 2465 if (a[0] == '-' && a[1] == '-') 2466 { 2467 size_t l = 0; 2468 const lzo_getopt_longopt_p o; 2469 const lzo_getopt_longopt_p o1 = NULL; 2470 const lzo_getopt_longopt_p o2 = NULL; 2471 int need_exact = 0; 2472 ++g->optind; 2473 if (!a[2]) 2474 goto lzo_label_eof; 2475 for (a += 2; a[l] && a[l] != '=' && a[l] != '#'; ) 2476 ++l; 2477 for (o = longopts; l && o && o->name; ++o) 2478 { 2479 if (strncmp(a, o->name, l) != 0) 2480 continue; 2481 if (!o->name[l]) 2482 goto lzo_label_found_o; 2483 need_exact |= o->has_arg & LZO_GETOPT_EXACT_ARG; 2484 if (o1) o2 = o; 2485 else o1 = o; 2486 } 2487 if (!o1 || need_exact) 2488 return pe(g, g->bad_option, "unrecognized option '--%s'", a); 2489 if (o2) 2490 return pe(g, g->bad_option, "option '--%s' is ambiguous (could be '--%s' or '--%s')", a, o1->name, o2->name); 2491 o = o1; 2492 lzo_label_found_o: 2493 a += l; 2494 switch (o->has_arg & 0x2f) 2495 { 2496 case LZO_GETOPT_OPTIONAL_ARG: 2497 if (a[0]) 2498 g->optarg = a + 1; 2499 break; 2500 case LZO_GETOPT_REQUIRED_ARG: 2501 if (a[0]) 2502 g->optarg = a + 1; 2503 else if (g->optind < g->argc) 2504 g->optarg = g->argv[g->optind++]; 2505 if (!g->optarg) 2506 return pe(g, missing_arg_ret, "option '--%s' requires an argument", o->name); 2507 break; 2508 case LZO_GETOPT_REQUIRED_ARG | 0x20: 2509 if (a[0] && a[1]) 2510 g->optarg = a + 1; 2511 if (!g->optarg) 2512 return pe(g, missing_arg_ret, "option '--%s=' requires an argument", o->name); 2513 break; 2514 default: 2515 if (a[0]) 2516 return pe(g, g->bad_option, "option '--%s' doesn't allow an argument", o->name); 2517 break; 2518 } 2519 if (longind) 2520 *longind = (int) (o - longopts); 2521 if (o->flag) 2522 { 2523 *o->flag = o->val; 2524 return 0; 2525 } 2526 return o->val; 2527 } 2528 if (a[0] == '-' && a[1]) 2529 { 2530 unsigned char c; 2531 const char* s; 2532 lzo_label_next_shortopt: 2533 a = g->argv[g->optind] + ++g->shortpos; 2534 c = (unsigned char) *a++; s = NULL; 2535 if (c != ':' && shortopts) 2536 s = strchr(shortopts, c); 2537 if (!s || s[1] != ':') 2538 { 2539 if (!a[0]) 2540 ++g->optind, g->shortpos = 0; 2541 if (!s) 2542 { 2543 g->optopt = c; 2544 return pe(g, g->bad_option, "invalid option '-%c'", c); 2545 } 2546 } 2547 else 2548 { 2549 ++g->optind, g->shortpos = 0; 2550 if (a[0]) 2551 g->optarg = a; 2552 else if (s[2] != ':') 2553 { 2554 if (g->optind < g->argc) 2555 g->optarg = g->argv[g->optind++]; 2556 else 2557 { 2558 g->optopt = c; 2559 return pe(g, missing_arg_ret, "option '-%c' requires an argument", c); 2560 } 2561 } 2562 } 2563 return c; 2564 } 2565 if (ordering == LZO_GETOPT_RETURN_IN_ORDER) 2566 { 2567 ++g->optind; 2568 g->optarg = a; 2569 return 1; 2570 } 2571 lzo_label_eof: 2572 g->optind -= __LZOLIB_FUNCNAME(lzo_getopt_rotate)(g->argv, g->pending_rotate_first, g->pending_rotate_middle, g->optind); 2573 g->pending_rotate_first = g->pending_rotate_middle = g->optind; 2574 g->eof = 1; 2575 return -1; 2576 #undef pe 2577 } 2578 #endif 2579 #if defined(LZO_WANT_ACCLIB_HALLOC) 2580 # undef LZO_WANT_ACCLIB_HALLOC 2581 #define __LZOLIB_HALLOC_CH_INCLUDED 1 2582 #if !defined(LZOLIB_PUBLIC) 2583 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2584 #endif 2585 #if (LZO_HAVE_MM_HUGE_PTR) 2586 #if 1 && (LZO_OS_DOS16 && defined(BLX286)) 2587 # define __LZOLIB_HALLOC_USE_DAH 1 2588 #elif 1 && (LZO_OS_DOS16 && defined(DOSX286)) 2589 # define __LZOLIB_HALLOC_USE_DAH 1 2590 #elif 1 && (LZO_OS_OS216) 2591 # define __LZOLIB_HALLOC_USE_DAH 1 2592 #elif 1 && (LZO_OS_WIN16) 2593 # define __LZOLIB_HALLOC_USE_GA 1 2594 #elif 1 && (LZO_OS_DOS16) && (LZO_CC_BORLANDC) && defined(__DPMI16__) 2595 # define __LZOLIB_HALLOC_USE_GA 1 2596 #endif 2597 #endif 2598 #if (__LZOLIB_HALLOC_USE_DAH) 2599 #if 0 && (LZO_OS_OS216) 2600 #include <os2.h> 2601 #else 2602 LZO_EXTERN_C unsigned short __far __pascal DosAllocHuge(unsigned short, unsigned short, unsigned short __far *, unsigned short, unsigned short); 2603 LZO_EXTERN_C unsigned short __far __pascal DosFreeSeg(unsigned short); 2604 #endif 2605 #endif 2606 #if (__LZOLIB_HALLOC_USE_GA) 2607 #if 0 2608 #define STRICT 1 2609 #include <windows.h> 2610 #else 2611 LZO_EXTERN_C const void __near* __far __pascal GlobalAlloc(unsigned, unsigned long); 2612 LZO_EXTERN_C const void __near* __far __pascal GlobalFree(const void __near*); 2613 LZO_EXTERN_C unsigned long __far __pascal GlobalHandle(unsigned); 2614 LZO_EXTERN_C void __far* __far __pascal GlobalLock(const void __near*); 2615 LZO_EXTERN_C int __far __pascal GlobalUnlock(const void __near*); 2616 #endif 2617 #endif 2618 LZOLIB_PUBLIC(lzo_hvoid_p, lzo_halloc) (lzo_hsize_t size) 2619 { 2620 lzo_hvoid_p p = LZO_STATIC_CAST(lzo_hvoid_p, 0); 2621 if (!(size > 0)) 2622 return p; 2623 #if 0 && defined(__palmos__) 2624 p = MemPtrNew(size); 2625 #elif !(LZO_HAVE_MM_HUGE_PTR) 2626 if (size < LZO_STATIC_CAST(size_t, -1)) 2627 p = malloc(LZO_STATIC_CAST(size_t, size)); 2628 #else 2629 if (LZO_STATIC_CAST(long, size) <= 0) 2630 return p; 2631 { 2632 #if (__LZOLIB_HALLOC_USE_DAH) 2633 unsigned short sel = 0; 2634 if (DosAllocHuge((unsigned short)(size >> 16), (unsigned short)size, &sel, 0, 0) == 0) 2635 p = (lzo_hvoid_p) LZO_PTR_MK_FP(sel, 0); 2636 #elif (__LZOLIB_HALLOC_USE_GA) 2637 const void __near* h = GlobalAlloc(2, size); 2638 if (h) { 2639 p = GlobalLock(h); 2640 if (p && LZO_PTR_FP_OFF(p) != 0) { 2641 GlobalUnlock(h); 2642 p = 0; 2643 } 2644 if (!p) 2645 GlobalFree(h); 2646 } 2647 #elif (LZO_CC_MSC && (_MSC_VER >= 700)) 2648 p = _halloc(size, 1); 2649 #elif (LZO_CC_MSC || LZO_CC_WATCOMC) 2650 p = halloc(size, 1); 2651 #elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) 2652 p = farmalloc(size); 2653 #elif (LZO_CC_BORLANDC || LZO_CC_TURBOC) 2654 p = farmalloc(size); 2655 #elif (LZO_CC_AZTECC) 2656 p = lmalloc(size); 2657 #else 2658 if (size < LZO_STATIC_CAST(size_t, -1)) 2659 p = malloc((size_t) size); 2660 #endif 2661 } 2662 #endif 2663 return p; 2664 } 2665 LZOLIB_PUBLIC(void, lzo_hfree) (lzo_hvoid_p p) 2666 { 2667 if (!p) 2668 return; 2669 #if 0 && defined(__palmos__) 2670 MemPtrFree(p); 2671 #elif !(LZO_HAVE_MM_HUGE_PTR) 2672 free(p); 2673 #else 2674 #if (__LZOLIB_HALLOC_USE_DAH) 2675 if (LZO_PTR_FP_OFF(p) == 0) 2676 DosFreeSeg((unsigned short) LZO_PTR_FP_SEG(p)); 2677 #elif (__LZOLIB_HALLOC_USE_GA) 2678 if (LZO_PTR_FP_OFF(p) == 0) { 2679 const void __near* h = (const void __near*) (unsigned) GlobalHandle(LZO_PTR_FP_SEG(p)); 2680 if (h) { 2681 GlobalUnlock(h); 2682 GlobalFree(h); 2683 } 2684 } 2685 #elif (LZO_CC_MSC && (_MSC_VER >= 700)) 2686 _hfree(p); 2687 #elif (LZO_CC_MSC || LZO_CC_WATCOMC) 2688 hfree(p); 2689 #elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) 2690 farfree((void __far*) p); 2691 #elif (LZO_CC_BORLANDC || LZO_CC_TURBOC) 2692 farfree((void __far*) p); 2693 #elif (LZO_CC_AZTECC) 2694 lfree(p); 2695 #else 2696 free(p); 2697 #endif 2698 #endif 2699 } 2700 #endif 2701 #if defined(LZO_WANT_ACCLIB_HFREAD) 2702 # undef LZO_WANT_ACCLIB_HFREAD 2703 #define __LZOLIB_HFREAD_CH_INCLUDED 1 2704 #if !defined(LZOLIB_PUBLIC) 2705 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2706 #endif 2707 LZOLIB_PUBLIC(lzo_hsize_t, lzo_hfread) (void* vfp, lzo_hvoid_p buf, lzo_hsize_t size) 2708 { 2709 FILE* fp = LZO_STATIC_CAST(FILE *, vfp); 2710 #if (LZO_HAVE_MM_HUGE_PTR) 2711 #if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) 2712 #define __LZOLIB_REQUIRE_HMEMCPY_CH 1 2713 unsigned char tmp[512]; 2714 lzo_hsize_t l = 0; 2715 while (l < size) 2716 { 2717 size_t n = size - l > sizeof(tmp) ? sizeof(tmp) : (size_t) (size - l); 2718 n = fread(tmp, 1, n, fp); 2719 if (n == 0) 2720 break; 2721 __LZOLIB_FUNCNAME(lzo_hmemcpy)((lzo_hbyte_p)buf + l, tmp, (lzo_hsize_t)n); 2722 l += n; 2723 } 2724 return l; 2725 #elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) 2726 lzo_hbyte_p b = (lzo_hbyte_p) buf; 2727 lzo_hsize_t l = 0; 2728 while (l < size) 2729 { 2730 size_t n; 2731 n = LZO_PTR_FP_OFF(b); n = (n <= 1) ? 0x8000u : (0u - n); 2732 if ((lzo_hsize_t) n > size - l) 2733 n = (size_t) (size - l); 2734 n = fread((void __far*)b, 1, n, fp); 2735 if (n == 0) 2736 break; 2737 b += n; l += n; 2738 } 2739 return l; 2740 #else 2741 # error "unknown memory model" 2742 #endif 2743 #else 2744 return fread(buf, 1, size, fp); 2745 #endif 2746 } 2747 LZOLIB_PUBLIC(lzo_hsize_t, lzo_hfwrite) (void* vfp, const lzo_hvoid_p buf, lzo_hsize_t size) 2748 { 2749 FILE* fp = LZO_STATIC_CAST(FILE *, vfp); 2750 #if (LZO_HAVE_MM_HUGE_PTR) 2751 #if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) 2752 #define __LZOLIB_REQUIRE_HMEMCPY_CH 1 2753 unsigned char tmp[512]; 2754 lzo_hsize_t l = 0; 2755 while (l < size) 2756 { 2757 size_t n = size - l > sizeof(tmp) ? sizeof(tmp) : (size_t) (size - l); 2758 __LZOLIB_FUNCNAME(lzo_hmemcpy)(tmp, (const lzo_hbyte_p)buf + l, (lzo_hsize_t)n); 2759 n = fwrite(tmp, 1, n, fp); 2760 if (n == 0) 2761 break; 2762 l += n; 2763 } 2764 return l; 2765 #elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) 2766 const lzo_hbyte_p b = (const lzo_hbyte_p) buf; 2767 lzo_hsize_t l = 0; 2768 while (l < size) 2769 { 2770 size_t n; 2771 n = LZO_PTR_FP_OFF(b); n = (n <= 1) ? 0x8000u : (0u - n); 2772 if ((lzo_hsize_t) n > size - l) 2773 n = (size_t) (size - l); 2774 n = fwrite((void __far*)b, 1, n, fp); 2775 if (n == 0) 2776 break; 2777 b += n; l += n; 2778 } 2779 return l; 2780 #else 2781 # error "unknown memory model" 2782 #endif 2783 #else 2784 return fwrite(buf, 1, size, fp); 2785 #endif 2786 } 2787 #endif 2788 #if defined(LZO_WANT_ACCLIB_HSREAD) 2789 # undef LZO_WANT_ACCLIB_HSREAD 2790 #define __LZOLIB_HSREAD_CH_INCLUDED 1 2791 #if !defined(LZOLIB_PUBLIC) 2792 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2793 #endif 2794 LZOLIB_PUBLIC(long, lzo_safe_hread) (int fd, lzo_hvoid_p buf, long size) 2795 { 2796 lzo_hbyte_p b = (lzo_hbyte_p) buf; 2797 long l = 0; 2798 int saved_errno; 2799 saved_errno = errno; 2800 while (l < size) 2801 { 2802 long n = size - l; 2803 #if (LZO_HAVE_MM_HUGE_PTR) 2804 # define __LZOLIB_REQUIRE_HREAD_CH 1 2805 errno = 0; n = lzo_hread(fd, b, n); 2806 #elif (LZO_OS_DOS32) && defined(__DJGPP__) 2807 errno = 0; n = _read(fd, b, n); 2808 #else 2809 errno = 0; n = read(fd, b, n); 2810 #endif 2811 if (n == 0) 2812 break; 2813 if (n < 0) { 2814 #if defined(EAGAIN) 2815 if (errno == (EAGAIN)) continue; 2816 #endif 2817 #if defined(EINTR) 2818 if (errno == (EINTR)) continue; 2819 #endif 2820 if (errno == 0) errno = 1; 2821 return l; 2822 } 2823 b += n; l += n; 2824 } 2825 errno = saved_errno; 2826 return l; 2827 } 2828 LZOLIB_PUBLIC(long, lzo_safe_hwrite) (int fd, const lzo_hvoid_p buf, long size) 2829 { 2830 const lzo_hbyte_p b = (const lzo_hbyte_p) buf; 2831 long l = 0; 2832 int saved_errno; 2833 saved_errno = errno; 2834 while (l < size) 2835 { 2836 long n = size - l; 2837 #if (LZO_HAVE_MM_HUGE_PTR) 2838 # define __LZOLIB_REQUIRE_HREAD_CH 1 2839 errno = 0; n = lzo_hwrite(fd, b, n); 2840 #elif (LZO_OS_DOS32) && defined(__DJGPP__) 2841 errno = 0; n = _write(fd, b, n); 2842 #else 2843 errno = 0; n = write(fd, b, n); 2844 #endif 2845 if (n == 0) 2846 break; 2847 if (n < 0) { 2848 #if defined(EAGAIN) 2849 if (errno == (EAGAIN)) continue; 2850 #endif 2851 #if defined(EINTR) 2852 if (errno == (EINTR)) continue; 2853 #endif 2854 if (errno == 0) errno = 1; 2855 return l; 2856 } 2857 b += n; l += n; 2858 } 2859 errno = saved_errno; 2860 return l; 2861 } 2862 #endif 2863 #if defined(LZO_WANT_ACCLIB_PCLOCK) 2864 # undef LZO_WANT_ACCLIB_PCLOCK 2865 #define __LZOLIB_PCLOCK_CH_INCLUDED 1 2866 #if !defined(LZOLIB_PUBLIC) 2867 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 2868 #endif 2869 #if 1 && (LZO_OS_POSIX_LINUX && LZO_ARCH_AMD64 && LZO_ASM_SYNTAX_GNUC) 2870 #ifndef lzo_pclock_syscall_clock_gettime 2871 #define lzo_pclock_syscall_clock_gettime lzo_pclock_syscall_clock_gettime 2872 #endif 2873 __lzo_static_noinline long lzo_pclock_syscall_clock_gettime(long clockid, struct timespec *ts) 2874 { 2875 unsigned long r = 228; 2876 __asm__ __volatile__("syscall\n" : "=a" (r) : "0" (r), "D" (clockid), "S" (ts) __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 2877 return LZO_ICAST(long, r); 2878 } 2879 #endif 2880 #if 1 && (LZO_OS_POSIX_LINUX && LZO_ARCH_I386 && LZO_ASM_SYNTAX_GNUC) && defined(lzo_int64l_t) 2881 #ifndef lzo_pclock_syscall_clock_gettime 2882 #define lzo_pclock_syscall_clock_gettime lzo_pclock_syscall_clock_gettime 2883 #endif 2884 __lzo_static_noinline long lzo_pclock_syscall_clock_gettime(long clockid, struct timespec *ts) 2885 { 2886 unsigned long r = 265; 2887 __asm__ __volatile__("pushl %%ebx\n pushl %%edx\n popl %%ebx\n int $0x80\n popl %%ebx\n" : "=a" (r) : "0" (r), "d" (clockid), "c" (ts) __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 2888 return LZO_ICAST(long, r); 2889 } 2890 #endif 2891 #if 0 && defined(lzo_pclock_syscall_clock_gettime) 2892 #ifndef lzo_pclock_read_clock_gettime_r_syscall 2893 #define lzo_pclock_read_clock_gettime_r_syscall lzo_pclock_read_clock_gettime_r_syscall 2894 #endif 2895 static int lzo_pclock_read_clock_gettime_r_syscall(lzo_pclock_handle_p h, lzo_pclock_p c) 2896 { 2897 struct timespec ts; 2898 if (lzo_pclock_syscall_clock_gettime(0, &ts) != 0) 2899 return -1; 2900 c->tv_sec = ts.tv_sec; 2901 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ts.tv_nsec); 2902 LZO_UNUSED(h); return 0; 2903 } 2904 #endif 2905 #if (HAVE_GETTIMEOFDAY) 2906 #ifndef lzo_pclock_read_gettimeofday 2907 #define lzo_pclock_read_gettimeofday lzo_pclock_read_gettimeofday 2908 #endif 2909 static int lzo_pclock_read_gettimeofday(lzo_pclock_handle_p h, lzo_pclock_p c) 2910 { 2911 struct timeval tv; 2912 if (gettimeofday(&tv, NULL) != 0) 2913 return -1; 2914 #if defined(lzo_int64l_t) 2915 c->tv_sec = tv.tv_sec; 2916 #else 2917 c->tv_sec_high = 0; 2918 c->tv_sec_low = tv.tv_sec; 2919 #endif 2920 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, (tv.tv_usec * 1000u)); 2921 LZO_UNUSED(h); return 0; 2922 } 2923 #endif 2924 #if defined(CLOCKS_PER_SEC) && !(LZO_CFG_NO_DOUBLE) 2925 #ifndef lzo_pclock_read_clock 2926 #define lzo_pclock_read_clock lzo_pclock_read_clock 2927 #endif 2928 static int lzo_pclock_read_clock(lzo_pclock_handle_p h, lzo_pclock_p c) 2929 { 2930 clock_t ticks; 2931 double secs; 2932 #if defined(lzo_int64l_t) 2933 lzo_uint64l_t nsecs; 2934 ticks = clock(); 2935 secs = LZO_STATIC_CAST(double, ticks) / (CLOCKS_PER_SEC); 2936 nsecs = LZO_STATIC_CAST(lzo_uint64l_t, (secs * 1000000000.0)); 2937 c->tv_sec = LZO_STATIC_CAST(lzo_int64l_t, (nsecs / 1000000000ul)); 2938 nsecs = (nsecs % 1000000000ul); 2939 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, nsecs); 2940 #else 2941 ticks = clock(); 2942 secs = LZO_STATIC_CAST(double, ticks) / (CLOCKS_PER_SEC); 2943 c->tv_sec_high = 0; 2944 c->tv_sec_low = LZO_STATIC_CAST(lzo_uint32l_t, (secs + 0.5)); 2945 c->tv_nsec = 0; 2946 #endif 2947 LZO_UNUSED(h); return 0; 2948 } 2949 #endif 2950 #if 1 && defined(lzo_pclock_syscall_clock_gettime) 2951 #ifndef lzo_pclock_read_clock_gettime_m_syscall 2952 #define lzo_pclock_read_clock_gettime_m_syscall lzo_pclock_read_clock_gettime_m_syscall 2953 #endif 2954 static int lzo_pclock_read_clock_gettime_m_syscall(lzo_pclock_handle_p h, lzo_pclock_p c) 2955 { 2956 struct timespec ts; 2957 if (lzo_pclock_syscall_clock_gettime(1, &ts) != 0) 2958 return -1; 2959 c->tv_sec = ts.tv_sec; 2960 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ts.tv_nsec); 2961 LZO_UNUSED(h); return 0; 2962 } 2963 #endif 2964 #if (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) && defined(UCLOCKS_PER_SEC) && !(LZO_CFG_NO_DOUBLE) 2965 #ifndef lzo_pclock_read_uclock 2966 #define lzo_pclock_read_uclock lzo_pclock_read_uclock 2967 #endif 2968 static int lzo_pclock_read_uclock(lzo_pclock_handle_p h, lzo_pclock_p c) 2969 { 2970 lzo_uint64l_t ticks; 2971 double secs; 2972 lzo_uint64l_t nsecs; 2973 ticks = uclock(); 2974 secs = LZO_STATIC_CAST(double, ticks) / (UCLOCKS_PER_SEC); 2975 nsecs = LZO_STATIC_CAST(lzo_uint64l_t, (secs * 1000000000.0)); 2976 c->tv_sec = nsecs / 1000000000ul; 2977 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, (nsecs % 1000000000ul)); 2978 LZO_UNUSED(h); return 0; 2979 } 2980 #endif 2981 #if 1 && (HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(lzo_int64l_t) 2982 #ifndef lzo_pclock_read_clock_gettime_p_libc 2983 #define lzo_pclock_read_clock_gettime_p_libc lzo_pclock_read_clock_gettime_p_libc 2984 #endif 2985 static int lzo_pclock_read_clock_gettime_p_libc(lzo_pclock_handle_p h, lzo_pclock_p c) 2986 { 2987 struct timespec ts; 2988 if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) != 0) 2989 return -1; 2990 c->tv_sec = ts.tv_sec; 2991 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ts.tv_nsec); 2992 LZO_UNUSED(h); return 0; 2993 } 2994 #endif 2995 #if 1 && defined(lzo_pclock_syscall_clock_gettime) 2996 #ifndef lzo_pclock_read_clock_gettime_p_syscall 2997 #define lzo_pclock_read_clock_gettime_p_syscall lzo_pclock_read_clock_gettime_p_syscall 2998 #endif 2999 static int lzo_pclock_read_clock_gettime_p_syscall(lzo_pclock_handle_p h, lzo_pclock_p c) 3000 { 3001 struct timespec ts; 3002 if (lzo_pclock_syscall_clock_gettime(2, &ts) != 0) 3003 return -1; 3004 c->tv_sec = ts.tv_sec; 3005 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ts.tv_nsec); 3006 LZO_UNUSED(h); return 0; 3007 } 3008 #endif 3009 #if (LZO_OS_CYGWIN || LZO_OS_WIN32 || LZO_OS_WIN64) && (LZO_HAVE_WINDOWS_H) && defined(lzo_int64l_t) 3010 #ifndef lzo_pclock_read_getprocesstimes 3011 #define lzo_pclock_read_getprocesstimes lzo_pclock_read_getprocesstimes 3012 #endif 3013 static int lzo_pclock_read_getprocesstimes(lzo_pclock_handle_p h, lzo_pclock_p c) 3014 { 3015 FILETIME ct, et, kt, ut; 3016 lzo_uint64l_t ticks; 3017 if (GetProcessTimes(GetCurrentProcess(), &ct, &et, &kt, &ut) == 0) 3018 return -1; 3019 ticks = (LZO_STATIC_CAST(lzo_uint64l_t, ut.dwHighDateTime) << 32) | ut.dwLowDateTime; 3020 if __lzo_unlikely(h->ticks_base == 0) 3021 h->ticks_base = ticks; 3022 else 3023 ticks -= h->ticks_base; 3024 c->tv_sec = LZO_STATIC_CAST(lzo_int64l_t, (ticks / 10000000ul)); 3025 ticks = (ticks % 10000000ul) * 100u; 3026 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ticks); 3027 LZO_UNUSED(h); return 0; 3028 } 3029 #endif 3030 #if (HAVE_GETRUSAGE) && defined(RUSAGE_SELF) 3031 #ifndef lzo_pclock_read_getrusage 3032 #define lzo_pclock_read_getrusage lzo_pclock_read_getrusage 3033 #endif 3034 static int lzo_pclock_read_getrusage(lzo_pclock_handle_p h, lzo_pclock_p c) 3035 { 3036 struct rusage ru; 3037 if (getrusage(RUSAGE_SELF, &ru) != 0) 3038 return -1; 3039 #if defined(lzo_int64l_t) 3040 c->tv_sec = ru.ru_utime.tv_sec; 3041 #else 3042 c->tv_sec_high = 0; 3043 c->tv_sec_low = ru.ru_utime.tv_sec; 3044 #endif 3045 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, (ru.ru_utime.tv_usec * 1000u)); 3046 LZO_UNUSED(h); return 0; 3047 } 3048 #endif 3049 #if 1 && (HAVE_CLOCK_GETTIME) && defined(CLOCK_THREAD_CPUTIME_ID) && defined(lzo_int64l_t) 3050 #ifndef lzo_pclock_read_clock_gettime_t_libc 3051 #define lzo_pclock_read_clock_gettime_t_libc lzo_pclock_read_clock_gettime_t_libc 3052 #endif 3053 static int lzo_pclock_read_clock_gettime_t_libc(lzo_pclock_handle_p h, lzo_pclock_p c) 3054 { 3055 struct timespec ts; 3056 if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0) 3057 return -1; 3058 c->tv_sec = ts.tv_sec; 3059 c->tv_nsec = (lzo_uint32l_t) ts.tv_nsec; 3060 LZO_UNUSED(h); return 0; 3061 } 3062 #endif 3063 #if 1 && defined(lzo_pclock_syscall_clock_gettime) 3064 #ifndef lzo_pclock_read_clock_gettime_t_syscall 3065 #define lzo_pclock_read_clock_gettime_t_syscall lzo_pclock_read_clock_gettime_t_syscall 3066 #endif 3067 static int lzo_pclock_read_clock_gettime_t_syscall(lzo_pclock_handle_p h, lzo_pclock_p c) 3068 { 3069 struct timespec ts; 3070 if (lzo_pclock_syscall_clock_gettime(3, &ts) != 0) 3071 return -1; 3072 c->tv_sec = ts.tv_sec; 3073 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ts.tv_nsec); 3074 LZO_UNUSED(h); return 0; 3075 } 3076 #endif 3077 #if (LZO_OS_CYGWIN || LZO_OS_WIN32 || LZO_OS_WIN64) && (LZO_HAVE_WINDOWS_H) && defined(lzo_int64l_t) 3078 #ifndef lzo_pclock_read_getthreadtimes 3079 #define lzo_pclock_read_getthreadtimes lzo_pclock_read_getthreadtimes 3080 #endif 3081 static int lzo_pclock_read_getthreadtimes(lzo_pclock_handle_p h, lzo_pclock_p c) 3082 { 3083 FILETIME ct, et, kt, ut; 3084 lzo_uint64l_t ticks; 3085 if (GetThreadTimes(GetCurrentThread(), &ct, &et, &kt, &ut) == 0) 3086 return -1; 3087 ticks = (LZO_STATIC_CAST(lzo_uint64l_t, ut.dwHighDateTime) << 32) | ut.dwLowDateTime; 3088 if __lzo_unlikely(h->ticks_base == 0) 3089 h->ticks_base = ticks; 3090 else 3091 ticks -= h->ticks_base; 3092 c->tv_sec = LZO_STATIC_CAST(lzo_int64l_t, (ticks / 10000000ul)); 3093 ticks = (ticks % 10000000ul) * 100u; 3094 c->tv_nsec = LZO_STATIC_CAST(lzo_uint32l_t, ticks); 3095 LZO_UNUSED(h); return 0; 3096 } 3097 #endif 3098 LZOLIB_PUBLIC(int, lzo_pclock_open) (lzo_pclock_handle_p h, int mode) 3099 { 3100 lzo_pclock_t c; 3101 int i; 3102 h->h = LZO_STATIC_CAST(lzolib_handle_t, 0); 3103 h->mode = -1; 3104 h->read_error = 2; 3105 h->name = NULL; 3106 h->gettime = LZO_STATIC_CAST(lzo_pclock_gettime_t, 0); 3107 #if defined(lzo_int64l_t) 3108 h->ticks_base = 0; 3109 #endif 3110 switch (mode) 3111 { 3112 case LZO_PCLOCK_REALTIME: 3113 # if defined(lzo_pclock_read_clock_gettime_r_syscall) 3114 if (lzo_pclock_read_clock_gettime_r_syscall(h, &c) == 0) { 3115 h->gettime = lzo_pclock_read_clock_gettime_r_syscall; 3116 h->name = "CLOCK_REALTIME/syscall"; 3117 break; 3118 } 3119 # endif 3120 # if defined(lzo_pclock_read_gettimeofday) 3121 if (lzo_pclock_read_gettimeofday(h, &c) == 0) { 3122 h->gettime = lzo_pclock_read_gettimeofday; 3123 h->name = "gettimeofday"; 3124 break; 3125 } 3126 # endif 3127 break; 3128 case LZO_PCLOCK_MONOTONIC: 3129 # if defined(lzo_pclock_read_clock_gettime_m_syscall) 3130 if (lzo_pclock_read_clock_gettime_m_syscall(h, &c) == 0) { 3131 h->gettime = lzo_pclock_read_clock_gettime_m_syscall; 3132 h->name = "CLOCK_MONOTONIC/syscall"; 3133 break; 3134 } 3135 # endif 3136 # if defined(lzo_pclock_read_uclock) 3137 if (lzo_pclock_read_uclock(h, &c) == 0) { 3138 h->gettime = lzo_pclock_read_uclock; 3139 h->name = "uclock"; 3140 break; 3141 } 3142 # endif 3143 # if defined(lzo_pclock_read_clock) 3144 if (lzo_pclock_read_clock(h, &c) == 0) { 3145 h->gettime = lzo_pclock_read_clock; 3146 h->name = "clock"; 3147 break; 3148 } 3149 # endif 3150 break; 3151 case LZO_PCLOCK_PROCESS_CPUTIME_ID: 3152 # if defined(lzo_pclock_read_getprocesstimes) 3153 if (lzo_pclock_read_getprocesstimes(h, &c) == 0) { 3154 h->gettime = lzo_pclock_read_getprocesstimes; 3155 h->name = "GetProcessTimes"; 3156 break; 3157 } 3158 # endif 3159 # if defined(lzo_pclock_read_clock_gettime_p_syscall) 3160 if (lzo_pclock_read_clock_gettime_p_syscall(h, &c) == 0) { 3161 h->gettime = lzo_pclock_read_clock_gettime_p_syscall; 3162 h->name = "CLOCK_PROCESS_CPUTIME_ID/syscall"; 3163 break; 3164 } 3165 # endif 3166 # if defined(lzo_pclock_read_clock_gettime_p_libc) 3167 if (lzo_pclock_read_clock_gettime_p_libc(h, &c) == 0) { 3168 h->gettime = lzo_pclock_read_clock_gettime_p_libc; 3169 h->name = "CLOCK_PROCESS_CPUTIME_ID/libc"; 3170 break; 3171 } 3172 # endif 3173 # if defined(lzo_pclock_read_getrusage) 3174 if (lzo_pclock_read_getrusage(h, &c) == 0) { 3175 h->gettime = lzo_pclock_read_getrusage; 3176 h->name = "getrusage"; 3177 break; 3178 } 3179 # endif 3180 break; 3181 case LZO_PCLOCK_THREAD_CPUTIME_ID: 3182 # if defined(lzo_pclock_read_getthreadtimes) 3183 if (lzo_pclock_read_getthreadtimes(h, &c) == 0) { 3184 h->gettime = lzo_pclock_read_getthreadtimes; 3185 h->name = "GetThreadTimes"; 3186 } 3187 # endif 3188 # if defined(lzo_pclock_read_clock_gettime_t_syscall) 3189 if (lzo_pclock_read_clock_gettime_t_syscall(h, &c) == 0) { 3190 h->gettime = lzo_pclock_read_clock_gettime_t_syscall; 3191 h->name = "CLOCK_THREAD_CPUTIME_ID/syscall"; 3192 break; 3193 } 3194 # endif 3195 # if defined(lzo_pclock_read_clock_gettime_t_libc) 3196 if (lzo_pclock_read_clock_gettime_t_libc(h, &c) == 0) { 3197 h->gettime = lzo_pclock_read_clock_gettime_t_libc; 3198 h->name = "CLOCK_THREAD_CPUTIME_ID/libc"; 3199 break; 3200 } 3201 # endif 3202 break; 3203 } 3204 if (!h->gettime) 3205 return -1; 3206 if (!h->h) 3207 h->h = LZO_STATIC_CAST(lzolib_handle_t, 1); 3208 h->mode = mode; 3209 h->read_error = 0; 3210 if (!h->name) 3211 h->name = "unknown"; 3212 for (i = 0; i < 10; i++) { 3213 __LZOLIB_FUNCNAME(lzo_pclock_read)(h, &c); 3214 } 3215 return 0; 3216 } 3217 LZOLIB_PUBLIC(int, lzo_pclock_open_default) (lzo_pclock_handle_p h) 3218 { 3219 if (__LZOLIB_FUNCNAME(lzo_pclock_open)(h, LZO_PCLOCK_PROCESS_CPUTIME_ID) == 0) 3220 return 0; 3221 if (__LZOLIB_FUNCNAME(lzo_pclock_open)(h, LZO_PCLOCK_MONOTONIC) == 0) 3222 return 0; 3223 if (__LZOLIB_FUNCNAME(lzo_pclock_open)(h, LZO_PCLOCK_REALTIME) == 0) 3224 return 0; 3225 if (__LZOLIB_FUNCNAME(lzo_pclock_open)(h, LZO_PCLOCK_THREAD_CPUTIME_ID) == 0) 3226 return 0; 3227 return -1; 3228 } 3229 LZOLIB_PUBLIC(int, lzo_pclock_close) (lzo_pclock_handle_p h) 3230 { 3231 h->h = LZO_STATIC_CAST(lzolib_handle_t, 0); 3232 h->mode = -1; 3233 h->name = NULL; 3234 h->gettime = LZO_STATIC_CAST(lzo_pclock_gettime_t, 0); 3235 return 0; 3236 } 3237 LZOLIB_PUBLIC(void, lzo_pclock_read) (lzo_pclock_handle_p h, lzo_pclock_p c) 3238 { 3239 if (h->gettime) { 3240 if (h->gettime(h, c) == 0) 3241 return; 3242 } 3243 h->read_error = 1; 3244 #if defined(lzo_int64l_t) 3245 c->tv_sec = 0; 3246 #else 3247 c->tv_sec_high = 0; 3248 c->tv_sec_low = 0; 3249 #endif 3250 c->tv_nsec = 0; 3251 } 3252 #if !(LZO_CFG_NO_DOUBLE) 3253 LZOLIB_PUBLIC(double, lzo_pclock_get_elapsed) (lzo_pclock_handle_p h, const lzo_pclock_p start, const lzo_pclock_p stop) 3254 { 3255 if (!h->h) { h->mode = -1; return 0.0; } 3256 { 3257 #if 1 && (LZO_ARCH_I386 && LZO_CC_GNUC) && defined(__STRICT_ALIGNMENT__) 3258 float tstop, tstart; 3259 tstop = LZO_STATIC_CAST(float, (stop->tv_sec + stop->tv_nsec / 1000000000.0)); 3260 tstart = LZO_STATIC_CAST(float, (start->tv_sec + start->tv_nsec / 1000000000.0)); 3261 #elif defined(lzo_int64l_t) 3262 double tstop, tstart; 3263 #if 1 && (LZO_CC_INTELC) 3264 { lzo_int64l_t a = stop->tv_sec; lzo_uint32l_t b = stop->tv_nsec; 3265 tstop = a + b / 1000000000.0; } 3266 { lzo_int64l_t a = start->tv_sec; lzo_uint32l_t b = start->tv_nsec; 3267 tstart = a + b / 1000000000.0; } 3268 #else 3269 tstop = stop->tv_sec + stop->tv_nsec / 1000000000.0; 3270 tstart = start->tv_sec + start->tv_nsec / 1000000000.0; 3271 #endif 3272 #else 3273 double tstop, tstart; 3274 tstop = stop->tv_sec_low + stop->tv_nsec / 1000000000.0; 3275 tstart = start->tv_sec_low + start->tv_nsec / 1000000000.0; 3276 #endif 3277 return tstop - tstart; 3278 } 3279 } 3280 #endif 3281 LZOLIB_PUBLIC(int, lzo_pclock_flush_cpu_cache) (lzo_pclock_handle_p h, unsigned flags) 3282 { 3283 LZO_UNUSED(h); LZO_UNUSED(flags); 3284 return -1; 3285 } 3286 #if defined(__LZOLIB_PCLOCK_NEED_WARN_POP) 3287 # if (LZO_CC_MSC && (_MSC_VER >= 1200)) 3288 # pragma warning(pop) 3289 # else 3290 # error "__LZOLIB_PCLOCK_NEED_WARN_POP" 3291 # endif 3292 # undef __LZOLIB_PCLOCK_NEED_WARN_POP 3293 #endif 3294 #endif 3295 #if defined(LZO_WANT_ACCLIB_MISC) 3296 # undef LZO_WANT_ACCLIB_MISC 3297 #define __LZOLIB_MISC_CH_INCLUDED 1 3298 #if !defined(LZOLIB_PUBLIC) 3299 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 3300 #endif 3301 #if !defined(LZOLIB_PUBLIC_NOINLINE) 3302 # if !defined(__lzo_noinline) 3303 # define LZOLIB_PUBLIC_NOINLINE(r,f) r __LZOLIB_FUNCNAME(f) 3304 # elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || LZO_CC_LLVM) 3305 # define LZOLIB_PUBLIC_NOINLINE(r,f) __lzo_noinline __attribute__((__used__)) r __LZOLIB_FUNCNAME(f) 3306 # else 3307 # define LZOLIB_PUBLIC_NOINLINE(r,f) __lzo_noinline r __LZOLIB_FUNCNAME(f) 3308 # endif 3309 #endif 3310 #if (LZO_OS_WIN32 && LZO_CC_PELLESC && (__POCC__ >= 290)) 3311 # pragma warn(push) 3312 # pragma warn(disable:2007) 3313 #endif 3314 LZOLIB_PUBLIC(const char *, lzo_getenv) (const char *s) 3315 { 3316 #if (HAVE_GETENV) 3317 return getenv(s); 3318 #else 3319 LZO_UNUSED(s); return LZO_STATIC_CAST(const char *, 0); 3320 #endif 3321 } 3322 LZOLIB_PUBLIC(lzo_intptr_t, lzo_get_osfhandle) (int fd) 3323 { 3324 if (fd < 0) 3325 return -1; 3326 #if (LZO_OS_CYGWIN) 3327 return get_osfhandle(fd); 3328 #elif (LZO_OS_EMX && defined(__RSXNT__)) 3329 return -1; 3330 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 3331 return -1; 3332 #elif (LZO_OS_WIN32 || LZO_OS_WIN64) 3333 # if (LZO_CC_PELLESC && (__POCC__ < 280)) 3334 return -1; 3335 # elif (LZO_CC_WATCOMC && (__WATCOMC__ < 1000)) 3336 return -1; 3337 # elif (LZO_CC_WATCOMC && (__WATCOMC__ < 1100)) 3338 return _os_handle(fd); 3339 # else 3340 return _get_osfhandle(fd); 3341 # endif 3342 #else 3343 return fd; 3344 #endif 3345 } 3346 LZOLIB_PUBLIC(int, lzo_set_binmode) (int fd, int binary) 3347 { 3348 #if (LZO_ARCH_M68K && LZO_OS_TOS && LZO_CC_GNUC) && defined(__MINT__) 3349 FILE* fp; int old_binary; 3350 if (fd == STDIN_FILENO) fp = stdin; 3351 else if (fd == STDOUT_FILENO) fp = stdout; 3352 else if (fd == STDERR_FILENO) fp = stderr; 3353 else return -1; 3354 old_binary = fp->__mode.__binary; 3355 __set_binmode(fp, binary ? 1 : 0); 3356 return old_binary ? 1 : 0; 3357 #elif (LZO_ARCH_M68K && LZO_OS_TOS) 3358 LZO_UNUSED(fd); LZO_UNUSED(binary); 3359 return -1; 3360 #elif (LZO_OS_DOS16 && (LZO_CC_AZTECC || LZO_CC_PACIFICC)) 3361 LZO_UNUSED(fd); LZO_UNUSED(binary); 3362 return -1; 3363 #elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 3364 int r; unsigned old_flags = __djgpp_hwint_flags; 3365 LZO_COMPILE_TIME_ASSERT(O_BINARY > 0) 3366 LZO_COMPILE_TIME_ASSERT(O_TEXT > 0) 3367 if (fd < 0) return -1; 3368 r = setmode(fd, binary ? O_BINARY : O_TEXT); 3369 if ((old_flags & 1u) != (__djgpp_hwint_flags & 1u)) 3370 __djgpp_set_ctrl_c(!(old_flags & 1)); 3371 if (r == -1) return -1; 3372 return (r & O_TEXT) ? 0 : 1; 3373 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 3374 if (fd < 0) return -1; 3375 LZO_UNUSED(binary); 3376 return 1; 3377 #elif (LZO_OS_DOS32 && LZO_CC_HIGHC) 3378 FILE* fp; int r; 3379 if (fd == fileno(stdin)) fp = stdin; 3380 else if (fd == fileno(stdout)) fp = stdout; 3381 else if (fd == fileno(stderr)) fp = stderr; 3382 else return -1; 3383 r = _setmode(fp, binary ? _BINARY : _TEXT); 3384 if (r == -1) return -1; 3385 return (r & _BINARY) ? 1 : 0; 3386 #elif (LZO_OS_WIN32 && LZO_CC_MWERKS) && defined(__MSL__) 3387 LZO_UNUSED(fd); LZO_UNUSED(binary); 3388 return -1; 3389 #elif (LZO_OS_CYGWIN && (LZO_CC_GNUC < 0x025a00ul)) 3390 LZO_UNUSED(fd); LZO_UNUSED(binary); 3391 return -1; 3392 #elif (LZO_OS_CYGWIN || LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_EMX || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) 3393 int r; 3394 #if !(LZO_CC_ZORTECHC) 3395 LZO_COMPILE_TIME_ASSERT(O_BINARY > 0) 3396 #endif 3397 LZO_COMPILE_TIME_ASSERT(O_TEXT > 0) 3398 if (fd < 0) return -1; 3399 r = setmode(fd, binary ? O_BINARY : O_TEXT); 3400 if (r == -1) return -1; 3401 return (r & O_TEXT) ? 0 : 1; 3402 #else 3403 if (fd < 0) return -1; 3404 LZO_UNUSED(binary); 3405 return 1; 3406 #endif 3407 } 3408 LZOLIB_PUBLIC(int, lzo_isatty) (int fd) 3409 { 3410 if (fd < 0) 3411 return 0; 3412 #if (LZO_OS_DOS16 && !(LZO_CC_AZTECC)) 3413 { 3414 union REGS ri, ro; 3415 ri.x.ax = 0x4400; ri.x.bx = fd; 3416 int86(0x21, &ri, &ro); 3417 if ((ro.x.cflag & 1) == 0) 3418 if ((ro.x.ax & 0x83) != 0x83) 3419 return 0; 3420 } 3421 #elif (LZO_OS_DOS32 && LZO_CC_WATCOMC) 3422 { 3423 union REGS ri, ro; 3424 ri.w.ax = 0x4400; ri.w.bx = LZO_STATIC_CAST(unsigned short, fd); 3425 int386(0x21, &ri, &ro); 3426 if ((ro.w.cflag & 1) == 0) 3427 if ((ro.w.ax & 0x83) != 0x83) 3428 return 0; 3429 } 3430 #elif (LZO_HAVE_WINDOWS_H) 3431 { 3432 lzo_intptr_t h = __LZOLIB_FUNCNAME(lzo_get_osfhandle)(fd); 3433 LZO_COMPILE_TIME_ASSERT(sizeof(h) == sizeof(HANDLE)) 3434 if (h != -1) 3435 { 3436 DWORD d = 0; 3437 if (GetConsoleMode(LZO_REINTERPRET_CAST(HANDLE, h), &d) == 0) 3438 return 0; 3439 } 3440 } 3441 #endif 3442 #if (HAVE_ISATTY) 3443 return (isatty(fd)) ? 1 : 0; 3444 #else 3445 return 0; 3446 #endif 3447 } 3448 LZOLIB_PUBLIC(int, lzo_mkdir) (const char* name, unsigned mode) 3449 { 3450 #if !(HAVE_MKDIR) 3451 LZO_UNUSED(name); LZO_UNUSED(mode); 3452 return -1; 3453 #elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) 3454 LZO_UNUSED(mode); 3455 return Dcreate(name); 3456 #elif (LZO_OS_DOS32 && LZO_CC_GNUC) && defined(__DJGPP__) 3457 return mkdir(name, mode); 3458 #elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) 3459 return mkdir(name, mode); 3460 #elif ((LZO_OS_DOS16 || LZO_OS_DOS32) && (LZO_CC_HIGHC || LZO_CC_PACIFICC)) 3461 LZO_UNUSED(mode); 3462 return mkdir(LZO_UNCONST_CAST(char *, name)); 3463 #elif (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) 3464 LZO_UNUSED(mode); 3465 return mkdir(name); 3466 #elif (LZO_CC_WATCOMC) 3467 return mkdir(name, LZO_STATIC_CAST(mode_t, mode)); 3468 #else 3469 return mkdir(name, mode); 3470 #endif 3471 } 3472 LZOLIB_PUBLIC(int, lzo_rmdir) (const char* name) 3473 { 3474 #if !(HAVE_RMDIR) 3475 LZO_UNUSED(name); 3476 return -1; 3477 #elif ((LZO_OS_DOS16 || LZO_OS_DOS32) && (LZO_CC_HIGHC || LZO_CC_PACIFICC)) 3478 return rmdir(LZO_UNCONST_CAST(char *, name)); 3479 #else 3480 return rmdir(name); 3481 #endif 3482 } 3483 #if defined(lzo_int32e_t) 3484 LZOLIB_PUBLIC(lzo_int32e_t, lzo_muldiv32s) (lzo_int32e_t a, lzo_int32e_t b, lzo_int32e_t x) 3485 { 3486 lzo_int32e_t r = 0; 3487 if __lzo_likely(x != 0) 3488 { 3489 #if defined(lzo_int64l_t) 3490 lzo_int64l_t rr = (LZO_ICONV(lzo_int64l_t, a) * b) / x; 3491 r = LZO_ITRUNC(lzo_int32e_t, rr); 3492 #else 3493 LZO_UNUSED(a); LZO_UNUSED(b); 3494 #endif 3495 } 3496 return r; 3497 } 3498 LZOLIB_PUBLIC(lzo_uint32e_t, lzo_muldiv32u) (lzo_uint32e_t a, lzo_uint32e_t b, lzo_uint32e_t x) 3499 { 3500 lzo_uint32e_t r = 0; 3501 if __lzo_likely(x != 0) 3502 { 3503 #if defined(lzo_int64l_t) 3504 lzo_uint64l_t rr = (LZO_ICONV(lzo_uint64l_t, a) * b) / x; 3505 r = LZO_ITRUNC(lzo_uint32e_t, rr); 3506 #else 3507 LZO_UNUSED(a); LZO_UNUSED(b); 3508 #endif 3509 } 3510 return r; 3511 } 3512 #endif 3513 #if 0 3514 LZOLIB_PUBLIC_NOINLINE(int, lzo_syscall_clock_gettime) (int c) 3515 { 3516 } 3517 #endif 3518 #if (LZO_OS_WIN16) 3519 LZO_EXTERN_C void __far __pascal DebugBreak(void); 3520 #endif 3521 LZOLIB_PUBLIC_NOINLINE(void, lzo_debug_break) (void) 3522 { 3523 #if (LZO_OS_WIN16) 3524 DebugBreak(); 3525 #elif (LZO_ARCH_I086) 3526 #elif (LZO_OS_WIN64) && (LZO_HAVE_WINDOWS_H) 3527 DebugBreak(); 3528 #elif (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 3529 __asm__ __volatile__("int $3\n" : : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3530 #elif (LZO_ARCH_I386) && (LZO_ASM_SYNTAX_MSC) 3531 __asm { int 3 } 3532 #elif (LZO_OS_WIN32) && (LZO_HAVE_WINDOWS_H) 3533 DebugBreak(); 3534 #else 3535 volatile lzo_intptr_t a = -1; 3536 * LZO_STATIC_CAST(volatile unsigned long *, LZO_REINTERPRET_CAST(volatile void *, a)) = ~0ul; 3537 #endif 3538 } 3539 LZOLIB_PUBLIC_NOINLINE(void, lzo_debug_nop) (void) 3540 { 3541 } 3542 LZOLIB_PUBLIC_NOINLINE(int, lzo_debug_align_check_query) (void) 3543 { 3544 #if (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 3545 # if (LZO_ARCH_AMD64) 3546 lzo_uint64e_t r = 0; 3547 # else 3548 size_t r = 0; 3549 # endif 3550 __asm__ __volatile__("pushf\n pop %0\n" : "=a" (r) : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3551 return LZO_ICONV(int, (r >> 18) & 1); 3552 #elif (LZO_ARCH_I386) && (LZO_ASM_SYNTAX_MSC) 3553 unsigned long r; 3554 __asm { 3555 pushf 3556 pop eax 3557 mov r,eax 3558 } 3559 return LZO_ICONV(int, (r >> 18) & 1); 3560 #else 3561 return -1; 3562 #endif 3563 } 3564 LZOLIB_PUBLIC_NOINLINE(int, lzo_debug_align_check_enable) (int v) 3565 { 3566 #if (LZO_ARCH_AMD64) && (LZO_ASM_SYNTAX_GNUC) 3567 if (v) { 3568 __asm__ __volatile__("pushf\n orl $262144,(%%rsp)\n popf\n" : : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3569 } else { 3570 __asm__ __volatile__("pushf\n andl $-262145,(%%rsp)\n popf\n" : : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3571 } 3572 return 0; 3573 #elif (LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 3574 if (v) { 3575 __asm__ __volatile__("pushf\n orl $262144,(%%esp)\n popf\n" : : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3576 } else { 3577 __asm__ __volatile__("pushf\n andl $-262145,(%%esp)\n popf\n" : : __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3578 } 3579 return 0; 3580 #elif (LZO_ARCH_I386) && (LZO_ASM_SYNTAX_MSC) 3581 if (v) { __asm { 3582 pushf 3583 or dword ptr [esp],262144 3584 popf 3585 }} else { __asm { 3586 pushf 3587 and dword ptr [esp],-262145 3588 popf 3589 }} 3590 return 0; 3591 #else 3592 LZO_UNUSED(v); return -1; 3593 #endif 3594 } 3595 LZOLIB_PUBLIC_NOINLINE(unsigned, lzo_debug_running_on_qemu) (void) 3596 { 3597 unsigned r = 0; 3598 #if (LZO_OS_POSIX_LINUX || LZO_OS_WIN32 || LZO_OS_WIN64) 3599 const char* p; 3600 p = __LZOLIB_FUNCNAME(lzo_getenv)(LZO_PP_STRINGIZE(LZO_ENV_RUNNING_ON_QEMU)); 3601 if (p) { 3602 if (p[0] == 0) r = 0; 3603 else if ((p[0] >= '0' && p[0] <= '9') && p[1] == 0) r = LZO_ICAST(unsigned, p[0]) - '0'; 3604 else r = 1; 3605 } 3606 #endif 3607 return r; 3608 } 3609 LZOLIB_PUBLIC_NOINLINE(unsigned, lzo_debug_running_on_valgrind) (void) 3610 { 3611 #if (LZO_ARCH_AMD64 && LZO_ABI_ILP32) 3612 return 0; 3613 #elif (LZO_ARCH_AMD64 || LZO_ARCH_I386) && (LZO_ASM_SYNTAX_GNUC) 3614 volatile size_t a[6]; 3615 size_t r = 0; 3616 a[0] = 0x1001; a[1] = 0; a[2] = 0; a[3] = 0; a[4] = 0; a[5] = 0; 3617 # if (LZO_ARCH_AMD64) 3618 __asm__ __volatile__(".byte 0x48,0xc1,0xc7,0x03,0x48,0xc1,0xc7,0x0d,0x48,0xc1,0xc7,0x3d,0x48,0xc1,0xc7,0x33,0x48,0x87,0xdb\n" : "=d" (r) : "a" (&a[0]), "d" (r) __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3619 # elif (LZO_ARCH_I386) 3620 __asm__ __volatile__(".byte 0xc1,0xc7,0x03,0xc1,0xc7,0x0d,0xc1,0xc7,0x1d,0xc1,0xc7,0x13,0x87,0xdb\n" : "=d" (r) : "a" (&a[0]), "d" (r) __LZO_ASM_CLOBBER_LIST_CC_MEMORY); 3621 # endif 3622 return LZO_ITRUNC(unsigned, r); 3623 #else 3624 return 0; 3625 #endif 3626 } 3627 #if (LZO_OS_WIN32 && LZO_CC_PELLESC && (__POCC__ >= 290)) 3628 # pragma warn(pop) 3629 #endif 3630 #endif 3631 #if defined(LZO_WANT_ACCLIB_WILDARGV) 3632 # undef LZO_WANT_ACCLIB_WILDARGV 3633 #define __LZOLIB_WILDARGV_CH_INCLUDED 1 3634 #if !defined(LZOLIB_PUBLIC) 3635 # define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) 3636 #endif 3637 #if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) 3638 #if 0 && (LZO_CC_MSC) 3639 LZO_EXTERN_C int __lzo_cdecl __setargv(void); 3640 LZO_EXTERN_C int __lzo_cdecl _setargv(void); 3641 LZO_EXTERN_C int __lzo_cdecl _setargv(void) { return __setargv(); } 3642 #endif 3643 #endif 3644 #if (LZO_OS_WIN32 || LZO_OS_WIN64) 3645 #if (LZO_CC_INTELC || LZO_CC_MSC) 3646 LZO_EXTERN_C int __lzo_cdecl __setargv(void); 3647 LZO_EXTERN_C int __lzo_cdecl _setargv(void); 3648 LZO_EXTERN_C int __lzo_cdecl _setargv(void) { return __setargv(); } 3649 #endif 3650 #endif 3651 #if (LZO_OS_EMX) 3652 #define __LZOLIB_HAVE_LZO_WILDARGV 1 3653 LZOLIB_PUBLIC(void, lzo_wildargv) (int* argc, char*** argv) 3654 { 3655 if (argc && argv) { 3656 _response(argc, argv); 3657 _wildcard(argc, argv); 3658 } 3659 } 3660 #endif 3661 #if (LZO_OS_CONSOLE_PSP) && defined(__PSPSDK_DEBUG__) 3662 #define __LZOLIB_HAVE_LZO_WILDARGV 1 3663 LZO_EXTERN_C int lzo_psp_init_module(int*, char***, int); 3664 LZOLIB_PUBLIC(void, lzo_wildargv) (int* argc, char*** argv) 3665 { 3666 lzo_psp_init_module(argc, argv, -1); 3667 } 3668 #endif 3669 #if !(__LZOLIB_HAVE_LZO_WILDARGV) 3670 #define __LZOLIB_HAVE_LZO_WILDARGV 1 3671 LZOLIB_PUBLIC(void, lzo_wildargv) (int* argc, char*** argv) 3672 { 3673 #if 1 && (LZO_ARCH_I086PM) 3674 if (LZO_MM_AHSHIFT != 3) { exit(1); } 3675 #elif 1 && (LZO_ARCH_M68K && LZO_OS_TOS && LZO_CC_GNUC) && defined(__MINT__) 3676 __binmode(1); 3677 if (isatty(1)) __set_binmode(stdout, 0); 3678 if (isatty(2)) __set_binmode(stderr, 0); 3679 #endif 3680 LZO_UNUSED(argc); LZO_UNUSED(argv); 3681 } 3682 #endif 3683 #endif 3684 3685 /* vim:set ts=4 sw=4 et: */ 3686