1 extern int pval;
2 
3 
4 extern size_t strlcpy(char *dst, const char *src, size_t size);
5 extern size_t strlcat(char *dst, const char *src, size_t size);
6 #if DEBUG >= 1
7 extern size_t strlcpyd(char *dst, const char *src, size_t size);
8 extern size_t strlcatd(char *dst, const char *src, size_t size);
9 #endif
10 
11 extern int ErrOut(const char Mode, const char *func, const char *fmt, ...);
12 extern void SAshow(const char *fmt, ...);
13 extern void SAsystem(const char *program, ...);
14 extern void *SAmalloc(size_t size);
15 extern char SAinet_pton(const char *src, in_addr_t *dst);
16 extern char *SAinet_ntop(in_addr_t *src);
17 extern void *SArealloc(void *ptr, size_t size);
18 extern char *SAstrdup(const char *src);
19 extern char *SAstrldup(const char *src, size_t size);
20 extern int SApstrcmp(const char **el1, const char **el2);
21 extern char *SAsetlocale(int category, const char *locale);
22 extern time_t SAmktime(struct tm *tm);
23 extern time_t SAtime(time_t *tloc);
24 extern struct tm *SAlocaltime(const time_t *timep);
25 
26 
27 #if DEBUG >= 1
28 #define SAstrlcpy strlcpyd
29 #define SAstrlcat strlcatd
30 #else
31 #define SAstrlcpy strlcpy
32 #define SAstrlcat strlcat
33 #endif
34 
35 #define SAbzero(s, n)		memset((void *)s, 0, n)
36 
37 #define SAwarning(...)		ErrOut(2, __SAINFO__, __VA_ARGS__)
38 #define SAdebug(...)		ErrOut(1, __SAINFO__, __VA_ARGS__)
39 #define SAexit(...)		ErrOut(0, __SAINFO__, __VA_ARGS__)
40 
41 #define SAfprintf(...)		( ((pval = fprintf(__VA_ARGS__))   < 0) ? SAexit("") : pval )
42 #define SAvfprintf(...)		( ((pval = vfprintf(__VA_ARGS__))  < 0) ? SAexit("") : pval )
43 #define SAsnprintf(...)		( ((pval = snprintf(__VA_ARGS__))  < 0) ? SAexit("") : pval )
44 #define SAvsnprintf(...)	( ((pval = vsnprintf(__VA_ARGS__)) < 0) ? SAexit("") : pval )
45 
46 #if DEBUG >= 1
47 #define SDEBUG() SAdebug("Entering")
48 #define EDEBUG() SAdebug("Exiting")
49 #else
50 #define SDEBUG()
51 #define EDEBUG()
52 #endif
53