| 1 | /* | 
| 2 |  * jinclude.h | 
| 3 |  * | 
| 4 |  * This file was part of the Independent JPEG Group's software: | 
| 5 |  * Copyright (C) 1991-1994, Thomas G. Lane. | 
| 6 |  * It was modified by The libjpeg-turbo Project to include only code relevant | 
| 7 |  * to libjpeg-turbo. | 
| 8 |  * For conditions of distribution and use, see the accompanying README.ijg | 
| 9 |  * file. | 
| 10 |  * | 
| 11 |  * This file exists to provide a single place to fix any problems with | 
| 12 |  * including the wrong system include files.  (Common problems are taken | 
| 13 |  * care of by the standard jconfig symbols, but on really weird systems | 
| 14 |  * you may have to edit this file.) | 
| 15 |  * | 
| 16 |  * NOTE: this file is NOT intended to be included by applications using the | 
| 17 |  * JPEG library.  Most applications need only include jpeglib.h. | 
| 18 |  */ | 
| 19 |  | 
| 20 |  | 
| 21 | /* Include auto-config file to find out which system include files we need. */ | 
| 22 |  | 
| 23 | #include "jconfig.h"            /* auto configuration options */ | 
| 24 | #define JCONFIG_INCLUDED        /* so that jpeglib.h doesn't do it again */ | 
| 25 |  | 
| 26 | /* | 
| 27 |  * We need the NULL macro and size_t typedef. | 
| 28 |  * On an ANSI-conforming system it is sufficient to include <stddef.h>. | 
| 29 |  * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to | 
| 30 |  * pull in <sys/types.h> as well. | 
| 31 |  * Note that the core JPEG library does not require <stdio.h>; | 
| 32 |  * only the default error handler and data source/destination modules do. | 
| 33 |  * But we must pull it in because of the references to FILE in jpeglib.h. | 
| 34 |  * You can remove those references if you want to compile without <stdio.h>. | 
| 35 |  */ | 
| 36 |  | 
| 37 | #ifdef HAVE_STDDEF_H | 
| 38 | #include <stddef.h> | 
| 39 | #endif | 
| 40 |  | 
| 41 | #ifdef HAVE_STDLIB_H | 
| 42 | #include <stdlib.h> | 
| 43 | #endif | 
| 44 |  | 
| 45 | #ifdef NEED_SYS_TYPES_H | 
| 46 | #include <sys/types.h> | 
| 47 | #endif | 
| 48 |  | 
| 49 | #include <stdio.h> | 
| 50 |  | 
| 51 | /* | 
| 52 |  * We need memory copying and zeroing functions, plus strncpy(). | 
| 53 |  * ANSI and System V implementations declare these in <string.h>. | 
| 54 |  * BSD doesn't have the mem() functions, but it does have bcopy()/bzero(). | 
| 55 |  * Some systems may declare memset and memcpy in <memory.h>. | 
| 56 |  * | 
| 57 |  * NOTE: we assume the size parameters to these functions are of type size_t. | 
| 58 |  * Change the casts in these macros if not! | 
| 59 |  */ | 
| 60 |  | 
| 61 | #ifdef NEED_BSD_STRINGS | 
| 62 |  | 
| 63 | #include <strings.h> | 
| 64 | #define MEMZERO(target, size) \ | 
| 65 |   bzero((void *)(target), (size_t)(size)) | 
| 66 | #define MEMCOPY(dest, src, size) \ | 
| 67 |   bcopy((const void *)(src), (void *)(dest), (size_t)(size)) | 
| 68 |  | 
| 69 | #else /* not BSD, assume ANSI/SysV string lib */ | 
| 70 |  | 
| 71 | #include <string.h> | 
| 72 | #define MEMZERO(target, size) \ | 
| 73 |   memset((void *)(target), 0, (size_t)(size)) | 
| 74 | #define MEMCOPY(dest, src, size) \ | 
| 75 |   memcpy((void *)(dest), (const void *)(src), (size_t)(size)) | 
| 76 |  | 
| 77 | #endif | 
| 78 |  | 
| 79 | /* | 
| 80 |  * The modules that use fread() and fwrite() always invoke them through | 
| 81 |  * these macros.  On some systems you may need to twiddle the argument casts. | 
| 82 |  * CAUTION: argument order is different from underlying functions! | 
| 83 |  */ | 
| 84 |  | 
| 85 | #define JFREAD(file, buf, sizeofbuf) \ | 
| 86 |   ((size_t)fread((void *)(buf), (size_t)1, (size_t)(sizeofbuf), (file))) | 
| 87 | #define JFWRITE(file, buf, sizeofbuf) \ | 
| 88 |   ((size_t)fwrite((const void *)(buf), (size_t)1, (size_t)(sizeofbuf), (file))) | 
| 89 |  |