/* * Copyright 2001-2004 Brandon Long * All Rights Reserved. * * ClearSilver Templating System * * This code is made available under the terms of the ClearSilver License. * http://www.clearsilver.net/license.hdf * */ #ifndef __NEO_MISC_H_ #define __NEO_MISC_H_ 1 #include #include #include /* In case they didn't start from ClearSilver.h. */ #ifndef __CS_CONFIG_H_ #include "cs_config.h" #endif /* Fix Up for systems that don't define these standard things */ #ifndef __BEGIN_DECLS #ifdef __cplusplus #define __BEGIN_DECLS extern "C" { #define __END_DECLS } #else #define __BEGIN_DECLS #define __END_DECLS #endif #endif #ifndef _POSIX_PATH_MAX #define _POSIX_PATH_MAX 255 #endif #ifndef S_IXGRP #define S_IXGRP S_IXUSR #endif #ifndef S_IWGRP #define S_IWGRP S_IWUSR #endif #ifndef S_IRGRP #define S_IRGRP S_IRUSR #endif #ifndef S_IXOTH #define S_IXOTH S_IXUSR #endif #ifndef S_IWOTH #define S_IWOTH S_IWUSR #endif #ifndef S_IROTH #define S_IROTH S_IRUSR #endif /* Format string checking for compilers that support it (GCC style) */ #if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 6 #define ATTRIBUTE_PRINTF(a1,a2) __attribute__((__format__ (__printf__, a1, a2))) #else #define ATTRIBUTE_PRINTF(a1,a2) #endif __BEGIN_DECLS #ifndef HAVE_STRTOK_R char * strtok_r (char *s,const char * delim, char **save_ptr); #endif #ifndef HAVE_LOCALTIME_R struct tm *localtime_r (const time_t *timep, struct tm *ttm); #endif #ifndef HAVE_GMTIME_R struct tm *gmtime_r(const time_t *timep, struct tm *ttm); #endif #ifndef HAVE_MKSTEMP int mkstemp(char *path); #endif #ifndef HAVE_SNPRINTF int snprintf (char *str, size_t count, const char *fmt, ...) ATTRIBUTE_PRINTF(3,4); #endif #ifndef HAVE_VSNPRINTF int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); #endif #include #include typedef unsigned int UINT32; typedef int INT32; typedef unsigned short int UINT16; typedef short int INT16; typedef unsigned char UINT8; typedef char INT8; typedef char BOOL; #ifndef MIN #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif void ne_vwarn (const char *fmt, va_list ap); void ne_warn (const char *fmt, ...) ATTRIBUTE_PRINTF(1,2); void ne_set_log (int level); void ne_log (int level, const char *fmt, ...) ATTRIBUTE_PRINTF(2,3); UINT32 python_string_hash (const char *s); UINT8 *ne_stream4 (UINT8 *dest, UINT32 num); UINT8 *ne_unstream4 (UINT32 *pnum, UINT8 *src); UINT8 *ne_stream2 (UINT8 *dest, UINT16 num); UINT8 *ne_unstream2 (UINT16 *pnum, UINT8 *src); UINT8 *ne_stream_str (UINT8 *dest, const char *s, int l); UINT8 *ne_unstream_str (char *s, int l, UINT8 *src); double ne_timef (void); UINT32 ne_crc (UINT8 *data, UINT32 bytes); __END_DECLS #endif /* __NEO_MISC_H_ */