• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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