1 /* 2 * Copyright 2001-2004 Brandon Long 3 * All Rights Reserved. 4 * 5 * ClearSilver Templating System 6 * 7 * This code is made available under the terms of the ClearSilver License. 8 * http://www.clearsilver.net/license.hdf 9 * 10 */ 11 12 #ifndef __NEO_MISC_H_ 13 #define __NEO_MISC_H_ 1 14 15 #include <stdlib.h> 16 #include <time.h> 17 #include <limits.h> 18 19 /* In case they didn't start from ClearSilver.h. */ 20 #ifndef __CS_CONFIG_H_ 21 #include "cs_config.h" 22 #endif 23 24 /* Fix Up for systems that don't define these standard things */ 25 #ifndef __BEGIN_DECLS 26 #ifdef __cplusplus 27 #define __BEGIN_DECLS extern "C" { 28 #define __END_DECLS } 29 #else 30 #define __BEGIN_DECLS 31 #define __END_DECLS 32 #endif 33 #endif 34 35 #ifndef _POSIX_PATH_MAX 36 #define _POSIX_PATH_MAX 255 37 #endif 38 39 #ifndef S_IXGRP 40 #define S_IXGRP S_IXUSR 41 #endif 42 #ifndef S_IWGRP 43 #define S_IWGRP S_IWUSR 44 #endif 45 #ifndef S_IRGRP 46 #define S_IRGRP S_IRUSR 47 #endif 48 #ifndef S_IXOTH 49 #define S_IXOTH S_IXUSR 50 #endif 51 #ifndef S_IWOTH 52 #define S_IWOTH S_IWUSR 53 #endif 54 #ifndef S_IROTH 55 #define S_IROTH S_IRUSR 56 #endif 57 58 /* Format string checking for compilers that support it (GCC style) */ 59 60 #if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 6 61 #define ATTRIBUTE_PRINTF(a1,a2) __attribute__((__format__ (__printf__, a1, a2))) 62 #else 63 #define ATTRIBUTE_PRINTF(a1,a2) 64 #endif 65 66 67 __BEGIN_DECLS 68 69 #ifndef HAVE_STRTOK_R 70 char * strtok_r (char *s,const char * delim, char **save_ptr); 71 #endif 72 73 #ifndef HAVE_LOCALTIME_R 74 struct tm *localtime_r (const time_t *timep, struct tm *ttm); 75 #endif 76 77 #ifndef HAVE_GMTIME_R 78 struct tm *gmtime_r(const time_t *timep, struct tm *ttm); 79 #endif 80 81 #ifndef HAVE_MKSTEMP 82 int mkstemp(char *path); 83 #endif 84 85 #ifndef HAVE_SNPRINTF 86 int snprintf (char *str, size_t count, const char *fmt, ...) 87 ATTRIBUTE_PRINTF(3,4); 88 #endif 89 90 #ifndef HAVE_VSNPRINTF 91 int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); 92 #endif 93 94 #include <stdarg.h> 95 #include <sys/types.h> 96 97 typedef unsigned int UINT32; 98 typedef int INT32; 99 typedef unsigned short int UINT16; 100 typedef short int INT16; 101 typedef unsigned char UINT8; 102 typedef char INT8; 103 typedef char BOOL; 104 105 #ifndef MIN 106 #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 107 #endif 108 109 #ifndef TRUE 110 #define TRUE 1 111 #endif 112 #ifndef FALSE 113 #define FALSE 0 114 #endif 115 116 void ne_vwarn (const char *fmt, va_list ap); 117 void ne_warn (const char *fmt, ...) 118 ATTRIBUTE_PRINTF(1,2); 119 void ne_set_log (int level); 120 void ne_log (int level, const char *fmt, ...) 121 ATTRIBUTE_PRINTF(2,3); 122 UINT32 python_string_hash (const char *s); 123 UINT8 *ne_stream4 (UINT8 *dest, UINT32 num); 124 UINT8 *ne_unstream4 (UINT32 *pnum, UINT8 *src); 125 UINT8 *ne_stream2 (UINT8 *dest, UINT16 num); 126 UINT8 *ne_unstream2 (UINT16 *pnum, UINT8 *src); 127 UINT8 *ne_stream_str (UINT8 *dest, const char *s, int l); 128 UINT8 *ne_unstream_str (char *s, int l, UINT8 *src); 129 double ne_timef (void); 130 UINT32 ne_crc (UINT8 *data, UINT32 bytes); 131 132 __END_DECLS 133 134 #endif /* __NEO_MISC_H_ */ 135