7 #include <sys/socket.h>
8 #include <netinet/in.h>
14 float DiffTimeVal(const struct timeval *start, const struct timeval *end);
16 int CreatePrivateAcceptSocketEx(int portNum,
17 int nonBlocking, int loopbackOnly);
18 int CreatePrivateAcceptSocket(int portNum, int nonBlocking);
19 int CreatePublicUDPSocket(int portNum);
20 int MakeLoopbackConnection(int portNum, int nonBlocking);
21 int MakeConnection(char *name, in_addr_t netAddr,
22 int portNum, int nonBlocking);
24 char *GetField(const unsigned char *start, int whichField);
25 char *GetWord(const unsigned char *start, int whichWord);
26 char *GetWordEx(const unsigned char *start, int whichWord,
28 int WordCount(char *buf);
29 char *ZapSpacesAndZeros(char *src);
31 int Base36Digit(int a);
32 int Base36To10(int a);
33 int PopCount(int val);
34 int PopCountChar(int val);
35 int LogValChar(int val);
37 const char *StringOrNull(const char *s);
38 char *strchars(const char *string, const char *list);
39 char *strnchars(const char *string, int length, const char *list);
41 #if defined(OS_FREEBSD) || defined(OS_DARWIN)
46 char *strnstr(const char * s1, int s1_len, const char * s2);
49 char * strncasestr(const char * s1, int s1_len, const char * s2);
50 int strncspn(const char* string, int length, const char* reject);
51 char *strnchr(const char *string, int length, const char needle);
52 char *StrdupLower(const char *orig);
53 void StrcpyLower(char *dest, const char *src);
54 void StrcpyLowerExcept(char *dest, int dest_max, const char* src, const char* except);
55 char *GetLowerNextLine(FILE *file);
56 char *GetNextLine(FILE *file);
57 char *GetNextLineNoCommStrip(FILE *file);
58 int DoesSuffixMatch(char *start, int len, char *suffix);
59 int DoesDotlessSuffixMatch(char *start, int len, char *suffix);
61 /* resolves a name using CoDNS */
63 void HtoN_LocalQueryInfo(LocalQueryInfo *p);
64 void NtoH_LocalQueryResult(LocalQueryResult* p);
65 int CoDNSGetHostByNameSync(const char *name, struct in_addr *res);
73 /* allocate stack memory to copy "src" to "dest" in lower cases */
74 #define LOCAL_STR_DUP_LOWER(dest, src) \
75 { dest = alloca(strlen(src) + 1); \
76 StrcpyLower(dest, src); \
79 /* allocate stack memory to copy "src" to "dest" */
80 #define LOCAL_STR_DUP(dest, src) \
81 { dest = alloca(strlen(src) + 1); \
85 /* release memory pointer after checking NULL */
86 #define FREE_PTR(x) if ((x) != NULL) { xfree(x);}
88 /* Bit vector implementation */
89 void SetBits(int* bits, int idx, int maxNum);
90 int GetBits(int* bits, int idx, int maxNum);
91 int GetNumBits(int* bitvecs, int maxNum);
93 /* extended logging */
96 HANDLE CreateLogFHandle(const char* signature, int change_file_name_on_save);
97 int OpenLogF(HANDLE file);
98 int WriteLog(HANDLE file, const char* data, int size, int forceFlush);
99 void DailyReopenLogF(HANDLE file);
100 int HandleToFileNo(HANDLE file);
102 /* flush the buffer */
103 #define FlushLogF(h) WriteLog(h, NULL, 0, TRUE)
105 /* maximum single log file size, defined in applib.c */
106 extern int maxSingleLogSize;
108 #include "gettimeofdayex.h"
110 void FeedbackDelay(struct timeval *start, float minSec, float maxSec);
112 int NiceExitOpenLog(char *logName);
113 void NiceExitBack(int val, char *reason, char *file, int line) __attribute__ ((noreturn));
114 #define NiceExit(val, reason) NiceExitBack(val, reason, __FILE__, __LINE__)
116 char *ReadFile(const char *filename);
117 char *ReadFileEx(const char *filename, int *size);
118 char *MmapFile(const char *filename, int *size);
120 /* use 32-bit unsigned integer, higher bits are thrown away */
122 #define MASK 0xFFFFFFFF
123 /* bitwise left rotate operator */
124 #define _rotl(Val, Bits) ((((Val)<<(Bits)) | (((Val) & MASK)>>(32 - (Bits)))) & MASK)
126 unsigned int HashString(const char *name, unsigned int hash,
127 int endOnQuery, int skipLastIfDot);
128 unsigned int CalcAgentHash(const char* agent);