1*4882a593SmuzhiyunFrom 1631a6c1f50e152b8a45d8279c96086e5636795b Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Christos Tsantilas <christos@chtsanti.net>
3*4882a593SmuzhiyunDate: Fri, 25 Jan 2019 06:42:22 -0800
4*4882a593SmuzhiyunSubject: [PATCH] Required fixes to compile and run under cygwin
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun[Retrieved (and backported) from:
7*4882a593Smuzhiyunhttps://github.com/c-icap/c-icap-server/commit/1631a6c1f50e152b8a45d8279c96086e5636795b,
8*4882a593Smuzhiyunwhich has the side effect of fixing the build with the musl C library]
9*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun Makefile.am                 |  2 +-
12*4882a593Smuzhiyun configure.ac                | 10 +++++++---
13*4882a593Smuzhiyun header.c                    | 34 ----------------------------------
14*4882a593Smuzhiyun include/header.h            |  8 --------
15*4882a593Smuzhiyun modules/Makefile.am         | 34 ++++++++++++++++++++--------------
16*4882a593Smuzhiyun modules/bdb_tables.c        | 17 +++++++++++++++--
17*4882a593Smuzhiyun modules/shared_cache.c      | 12 ++++++++++++
18*4882a593Smuzhiyun modules/sys_logger.c        | 13 +++++++++++++
19*4882a593Smuzhiyun services/echo/Makefile.am   | 10 ++++++++--
20*4882a593Smuzhiyun services/ex-206/Makefile.am | 10 ++++++++--
21*4882a593Smuzhiyun utils/c-icap-mkbdb.c        |  8 ++++----
22*4882a593Smuzhiyun 11 files changed, 88 insertions(+), 70 deletions(-)
23*4882a593Smuzhiyun
24*4882a593Smuzhiyundiff --git a/Makefile.am b/Makefile.am
25*4882a593Smuzhiyunindex 4c34033..ab80f4f 100644
26*4882a593Smuzhiyun--- a/Makefile.am
27*4882a593Smuzhiyun+++ b/Makefile.am
28*4882a593Smuzhiyun@@ -53,7 +53,7 @@ c_icap_SOURCES = aserver.c request.c cfg_param.c \
29*4882a593Smuzhiyun libicapapi_la_CFLAGS= $(INVISIBILITY_CFLAG) -I$(srcdir)/include/ -Iinclude/ @ZLIB_ADD_FLAG@ @OPENSSL_ADD_FLAG@ @BZLIB_ADD_FLAG@ @BROTLI_ADD_FLAG@ @PCRE_ADD_FLAG@ -DCI_BUILD_LIB
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun libicapapi_la_LIBADD = @ZLIB_ADD_LDADD@ @BZLIB_ADD_LDADD@ @BROTLI_ADD_LDADD@ @PCRE_ADD_LDADD@ @DL_ADD_FLAG@ @THREADS_LDADD@ @OPENSSL_ADD_LDADD@
32*4882a593Smuzhiyun-libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @THREADS_LDFLAGS@
33*4882a593Smuzhiyun+libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @LIBS_LDFLAGS@ @THREADS_LDFLAGS@
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun export EXT_PROGRAMS_MKLIB = @ZLIB_LNDIR_LDADD@ @BZLIB_LNDIR_LDADD@ @BROTLI_LNDIR_LDADD@ @PCRE_LNDIR_LDADD@ @OPENSSL_LNDIR_LDADD@
36*4882a593Smuzhiyun
37*4882a593Smuzhiyundiff --git a/configure.ac b/configure.ac
38*4882a593Smuzhiyunindex 405571b..8059cb7 100644
39*4882a593Smuzhiyun--- a/configure.ac
40*4882a593Smuzhiyun+++ b/configure.ac
41*4882a593Smuzhiyun@@ -45,12 +45,14 @@ case "$host_os" in
42*4882a593Smuzhiyun 	CFLAGS="-D_REENTRANT $CFLAGS"
43*4882a593Smuzhiyun 	THREADS_LDADD="-lpthread"
44*4882a593Smuzhiyun 	THREADS_LDFLAGS=""
45*4882a593Smuzhiyun+	LIBS_LDFLAGS=""
46*4882a593Smuzhiyun      ;;
47*4882a593Smuzhiyun      solaris2.*)
48*4882a593Smuzhiyun      	  CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS $CFLAGS"
49*4882a593Smuzhiyun           LIBS="-lsocket -lnsl -lrt $LIBS"
50*4882a593Smuzhiyun 	  THREADS_LDADD="-lpthread"
51*4882a593Smuzhiyun 	  THREADS_LDFLAGS=""
52*4882a593Smuzhiyun+	  LIBS_LDFLAGS=""
53*4882a593Smuzhiyun       ;;
54*4882a593Smuzhiyun       freebsd5*)
55*4882a593Smuzhiyun ## If I understand how all those threading models works correctly
56*4882a593Smuzhiyun@@ -69,6 +71,7 @@ case "$host_os" in
57*4882a593Smuzhiyun       	CFLAGS="-pthread -D_THREAD_SAFE  $CFLAGS"
58*4882a593Smuzhiyun 	THREADS_LDADD="-XCClinker -lc_r"
59*4882a593Smuzhiyun 	THREADS_LDFLAGS=""
60*4882a593Smuzhiyun+	LIBS_LDFLAGS=""
61*4882a593Smuzhiyun ## FreeBSD has pthreads rwlocks from version 3 (I think)
62*4882a593Smuzhiyun #	AC_DEFINE(HAVE_PTHREADS_RWLOCK,1,[Define HAVE_PTHREADS_RWLOCK if pthreads library supports rwlocks])
63*4882a593Smuzhiyun ##   1:1 threads
64*4882a593Smuzhiyun@@ -82,24 +85,28 @@ case "$host_os" in
65*4882a593Smuzhiyun         CFLAGS="-D_THREAD_SAFE  $CFLAGS"
66*4882a593Smuzhiyun         THREADS_LDADD="-XCClinker -lthr"
67*4882a593Smuzhiyun         THREADS_LDFLAGS=""
68*4882a593Smuzhiyun+	LIBS_LDFLAGS=""
69*4882a593Smuzhiyun       ;;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun       cygwin*)
72*4882a593Smuzhiyun 	CFLAGS="-D_REENTRANT $CFLAGS"
73*4882a593Smuzhiyun 	THREADS_LDADD="-lpthread"
74*4882a593Smuzhiyun 	THREADS_LDFLAGS="";
75*4882a593Smuzhiyun+	LIBS_LDFLAGS="-no-undefined"
76*4882a593Smuzhiyun 	iscygwin="yes"
77*4882a593Smuzhiyun       ;;
78*4882a593Smuzhiyun       *)
79*4882a593Smuzhiyun       	CFLAGS="-D_REENTRANT $CFLAGS"
80*4882a593Smuzhiyun 	THREADS_LDADD="-lpthread"
81*4882a593Smuzhiyun 	THREADS_LDFLAGS=""
82*4882a593Smuzhiyun+	LIBS_LDFLAGS=""
83*4882a593Smuzhiyun       ;;
84*4882a593Smuzhiyun esac
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun TEST_LIBS="$TEST_LIBS $THREADS_LDADD"
87*4882a593Smuzhiyun AC_SUBST(THREADS_LDADD)
88*4882a593Smuzhiyun AC_SUBST(THREADS_LDFLAGS)
89*4882a593Smuzhiyun+AC_SUBST(LIBS_LDFLAGS)
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun AC_DEFINE_UNQUOTED(C_ICAP_CONFIGURE_OPTIONS, "$ac_configure_args",
92*4882a593Smuzhiyun                    [configure command line used to configure c-icap])
93*4882a593Smuzhiyun@@ -984,9 +991,6 @@ LIBS="$LIBS $EXTRALIBS"
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun #Configure common flags
96*4882a593Smuzhiyun MODULES_LIBADD=""
97*4882a593Smuzhiyun-if test a"$iscygwin" != a; then
98*4882a593Smuzhiyun-     MODULES_LIBADD="-L../../ -licapapi"
99*4882a593Smuzhiyun-fi
100*4882a593Smuzhiyun MODULES_CFLAGS="$INVISIBILITY_CFLAG -DCI_BUILD_MODULE"
101*4882a593Smuzhiyun AC_SUBST(MODULES_LIBADD)
102*4882a593Smuzhiyun AC_SUBST(MODULES_CFLAGS)
103*4882a593Smuzhiyundiff --git a/header.c b/header.c
104*4882a593Smuzhiyunindex 807a2e0..266b958 100644
105*4882a593Smuzhiyun--- a/header.c
106*4882a593Smuzhiyun+++ b/header.c
107*4882a593Smuzhiyun@@ -110,21 +110,6 @@ const struct ci_error_code ci_error_codes[] = {
108*4882a593Smuzhiyun     {505, "Unsupported version"}       /*ICAP version not supported by server. */
109*4882a593Smuzhiyun };
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun-/*
112*4882a593Smuzhiyun-#ifdef __CYGWIN__
113*4882a593Smuzhiyun-int ci_error_code(int ec){
114*4882a593Smuzhiyun-     return (ec >= EC_100 && ec < EC_MAX ? ci_error_codes[ec].code:1000);
115*4882a593Smuzhiyun-}
116*4882a593Smuzhiyun-
117*4882a593Smuzhiyun-const char *unknownerrorcode = "UNKNOWN ERROR CODE";
118*4882a593Smuzhiyun-
119*4882a593Smuzhiyun-const char *ci_error_code_string(int ec){
120*4882a593Smuzhiyun-     return (ec >= EC_100 && ec < EC_MAX?ci_error_codes[ec].str:unknownerrorcode);
121*4882a593Smuzhiyun-}
122*4882a593Smuzhiyun-#endif
123*4882a593Smuzhiyun-*/
124*4882a593Smuzhiyun-
125*4882a593Smuzhiyun-
126*4882a593Smuzhiyun const char *ci_encaps_entities[] = {
127*4882a593Smuzhiyun     "req-hdr",
128*4882a593Smuzhiyun     "res-hdr",
129*4882a593Smuzhiyun@@ -134,25 +119,6 @@ const char *ci_encaps_entities[] = {
130*4882a593Smuzhiyun     "opt-body"
131*4882a593Smuzhiyun };
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun-#ifdef __CYGWIN__
134*4882a593Smuzhiyun-
135*4882a593Smuzhiyun-const char *unknownentity = "UNKNOWN";
136*4882a593Smuzhiyun-const char *unknownmethod = "UNKNOWN";
137*4882a593Smuzhiyun-
138*4882a593Smuzhiyun-const char *ci_method_string(int method)
139*4882a593Smuzhiyun-{
140*4882a593Smuzhiyun-    return (method <= ICAP_RESPMOD
141*4882a593Smuzhiyun-            && method >= ICAP_OPTIONS ? CI_Methods[method] : unknownmethod);
142*4882a593Smuzhiyun-}
143*4882a593Smuzhiyun-
144*4882a593Smuzhiyun-
145*4882a593Smuzhiyun-const char *ci_encaps_entity_string(int e)
146*4882a593Smuzhiyun-{
147*4882a593Smuzhiyun-    return (e <= ICAP_OPT_BODY
148*4882a593Smuzhiyun-            && e >= ICAP_REQ_HDR ? CI_EncapsEntities[e] : unknownentity);
149*4882a593Smuzhiyun-}
150*4882a593Smuzhiyun-#endif
151*4882a593Smuzhiyun-
152*4882a593Smuzhiyun ci_headers_list_t *ci_headers_create()
153*4882a593Smuzhiyun {
154*4882a593Smuzhiyun     ci_headers_list_t *h;
155*4882a593Smuzhiyundiff --git a/include/header.h b/include/header.h
156*4882a593Smuzhiyunindex 4cab365..ed2de88 100644
157*4882a593Smuzhiyun--- a/include/header.h
158*4882a593Smuzhiyun+++ b/include/header.h
159*4882a593Smuzhiyun@@ -52,16 +52,8 @@ enum ci_encapsulated_entities {ICAP_REQ_HDR, ICAP_RES_HDR,
160*4882a593Smuzhiyun                               };
161*4882a593Smuzhiyun CI_DECLARE_DATA extern const char *ci_encaps_entities[];
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun-#ifdef __CYGWIN__
164*4882a593Smuzhiyun-
165*4882a593Smuzhiyun-const char *ci_encaps_entity_string(int e);
166*4882a593Smuzhiyun-
167*4882a593Smuzhiyun-#else
168*4882a593Smuzhiyun-
169*4882a593Smuzhiyun #define ci_encaps_entity_string(e) (e <= ICAP_OPT_BODY && e >= ICAP_REQ_HDR?ci_encaps_entities[e]:"UNKNOWN")
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun-#endif
172*4882a593Smuzhiyun-
173*4882a593Smuzhiyun /**
174*4882a593Smuzhiyun  \typedef ci_headers_list_t
175*4882a593Smuzhiyun  \ingroup HEADERS
176*4882a593Smuzhiyundiff --git a/modules/Makefile.am b/modules/Makefile.am
177*4882a593Smuzhiyunindex e6e9270..2d43a60 100644
178*4882a593Smuzhiyun--- a/modules/Makefile.am
179*4882a593Smuzhiyun+++ b/modules/Makefile.am
180*4882a593Smuzhiyun@@ -21,38 +21,44 @@ endif
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun-sys_logger_la_LIBADD = @MODULES_LIBADD@
185*4882a593Smuzhiyun+if ISCYGWIN
186*4882a593Smuzhiyun+MODS_LIB_ADD=$(top_builddir)/libicapapi.la
187*4882a593Smuzhiyun+else
188*4882a593Smuzhiyun+MODS_LIB_ADD=
189*4882a593Smuzhiyun+endif
190*4882a593Smuzhiyun+
191*4882a593Smuzhiyun+sys_logger_la_LIBADD = $(MODS_LIB_ADD)
192*4882a593Smuzhiyun sys_logger_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@
193*4882a593Smuzhiyun-sys_logger_la_LDFLAGS= -module -avoid-version
194*4882a593Smuzhiyun+sys_logger_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
195*4882a593Smuzhiyun sys_logger_la_SOURCES = sys_logger.c
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun-dnsbl_tables_la_LIBADD = @MODULES_LIBADD@
198*4882a593Smuzhiyun+dnsbl_tables_la_LIBADD = $(MODS_LIB_ADD)
199*4882a593Smuzhiyun dnsbl_tables_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@
200*4882a593Smuzhiyun-dnsbl_tables_la_LDFLAGS= -module -avoid-version
201*4882a593Smuzhiyun+dnsbl_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
202*4882a593Smuzhiyun dnsbl_tables_la_SOURCES = dnsbl_tables.c
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun-perl_handler_la_LIBADD = @MODULES_LIBADD@ @perllib@  -L@perlcore@ -lperl
205*4882a593Smuzhiyun+perl_handler_la_LIBADD = $(MODS_LIB_ADD) @perllib@  -L@perlcore@ -lperl
206*4882a593Smuzhiyun perl_handler_la_CFLAGS=  @MODULES_CFLAGS@ @perlccflags@ -I@perlcore@
207*4882a593Smuzhiyun-perl_handler_la_LDFLAGS= -module -avoid-version @perlldflags@
208*4882a593Smuzhiyun+perl_handler_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ @perlldflags@
209*4882a593Smuzhiyun perl_handler_la_SOURCES = perl_handler.c
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun-bdb_tables_la_LIBADD = @MODULES_LIBADD@ @BDB_ADD_LDADD@
213*4882a593Smuzhiyun+bdb_tables_la_LIBADD = $(MODS_LIB_ADD) @BDB_ADD_LDADD@
214*4882a593Smuzhiyun bdb_tables_la_CFLAGS=  @MODULES_CFLAGS@ @BDB_ADD_FLAG@
215*4882a593Smuzhiyun-bdb_tables_la_LDFLAGS= -module -avoid-version
216*4882a593Smuzhiyun+bdb_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
217*4882a593Smuzhiyun bdb_tables_la_SOURCES = bdb_tables.c
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun-ldap_module_la_LIBADD = @MODULES_LIBADD@ @LDAP_ADD_LDADD@ $(top_builddir)/libicapapi.la
220*4882a593Smuzhiyun+ldap_module_la_LIBADD = $(MODS_LIB_ADD) @LDAP_ADD_LDADD@
221*4882a593Smuzhiyun ldap_module_la_CFLAGS=  @MODULES_CFLAGS@ @LDAP_ADD_FLAG@
222*4882a593Smuzhiyun-ldap_module_la_LDFLAGS= -module -avoid-version
223*4882a593Smuzhiyun+ldap_module_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
224*4882a593Smuzhiyun ldap_module_la_SOURCES = ldap_module.c
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun-memcached_cache_la_LIBADD=  @MODULES_LIBADD@ @MEMCACHED_ADD_LDADD@
227*4882a593Smuzhiyun+memcached_cache_la_LIBADD=  $(MODS_LIB_ADD) @MEMCACHED_ADD_LDADD@
228*4882a593Smuzhiyun memcached_cache_la_CFLAGS=  @MODULES_CFLAGS@ @MEMCACHED_ADD_FLAG@
229*4882a593Smuzhiyun-memcached_cache_la_LDFLAGS= -module -avoid-version
230*4882a593Smuzhiyun+memcached_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
231*4882a593Smuzhiyun memcached_cache_la_SOURCES= memcached.c
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun-shared_cache_la_LIBADD= @MODULES_LIBADD@
234*4882a593Smuzhiyun+shared_cache_la_LIBADD= $(MODS_LIB_ADD)
235*4882a593Smuzhiyun shared_cache_la_CFLAGS= @OPENSSL_ADD_FLAG@
236*4882a593Smuzhiyun-shared_cache_la_LDFLAGS= -module -avoid-version
237*4882a593Smuzhiyun+shared_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
238*4882a593Smuzhiyun shared_cache_la_SOURCES= shared_cache.c
239*4882a593Smuzhiyundiff --git a/modules/bdb_tables.c b/modules/bdb_tables.c
240*4882a593Smuzhiyunindex b8459be..1e908a9 100644
241*4882a593Smuzhiyun--- a/modules/bdb_tables.c
242*4882a593Smuzhiyun+++ b/modules/bdb_tables.c
243*4882a593Smuzhiyun@@ -176,8 +176,8 @@ void *bdb_table_open(struct ci_lookup_table *table)
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun     /*We can not fork a Berkeley DB table, so we have to
246*4882a593Smuzhiyun       open bdb tables for every child, on childs start-up procedure*/
247*4882a593Smuzhiyun-    register_command_extend("openBDBtable", CHILD_START_CMD, table,
248*4882a593Smuzhiyun-                            command_real_open_table);
249*4882a593Smuzhiyun+    ci_command_register_action("openBDBtable", CHILD_START_CMD, table,
250*4882a593Smuzhiyun+			       command_real_open_table);
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun     return table->data;
253*4882a593Smuzhiyun }
254*4882a593Smuzhiyun@@ -257,3 +257,16 @@ void  bdb_table_release_result(struct ci_lookup_table *table,void **val)
255*4882a593Smuzhiyun {
256*4882a593Smuzhiyun     ci_buffer_free(val);
257*4882a593Smuzhiyun }
258*4882a593Smuzhiyun+
259*4882a593Smuzhiyun+ #ifdef __CYGWIN__
260*4882a593Smuzhiyun+#include <w32api/windows.h>
261*4882a593Smuzhiyun+void ci_command_register_action(const char *name, int type, void *data,
262*4882a593Smuzhiyun+				void (*command_action) (const char *name, int type, void *data))
263*4882a593Smuzhiyun+ {
264*4882a593Smuzhiyun+   typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *));
265*4882a593Smuzhiyun+   RA fn;
266*4882a593Smuzhiyun+   fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action");
267*4882a593Smuzhiyun+   if (fn)
268*4882a593Smuzhiyun+     (*fn)(name, type, data, command_action);
269*4882a593Smuzhiyun+ }
270*4882a593Smuzhiyun+#endif
271*4882a593Smuzhiyundiff --git a/modules/shared_cache.c b/modules/shared_cache.c
272*4882a593Smuzhiyunindex 103b760..a79d51a 100644
273*4882a593Smuzhiyun--- a/modules/shared_cache.c
274*4882a593Smuzhiyun+++ b/modules/shared_cache.c
275*4882a593Smuzhiyun@@ -345,3 +345,15 @@ void ci_shared_cache_destroy(struct ci_cache *cache)
276*4882a593Smuzhiyun         ci_shared_mem_detach(&data->id);
277*4882a593Smuzhiyun }
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun+#ifdef __CYGWIN__
280*4882a593Smuzhiyun+#include <w32api/windows.h>
281*4882a593Smuzhiyun+void ci_command_register_action(const char *name, int type, void *data,
282*4882a593Smuzhiyun+				void (*command_action) (const char *name, int type, void *data))
283*4882a593Smuzhiyun+ {
284*4882a593Smuzhiyun+   typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *));
285*4882a593Smuzhiyun+   RA fn;
286*4882a593Smuzhiyun+   fn = (RA)GetProcAddress(GetModuleHandle(NULL), "ci_command_register_action");
287*4882a593Smuzhiyun+   if (fn)
288*4882a593Smuzhiyun+     (*fn)(name, type, data, command_action);
289*4882a593Smuzhiyun+ }
290*4882a593Smuzhiyun+#endif
291*4882a593Smuzhiyundiff --git a/modules/sys_logger.c b/modules/sys_logger.c
292*4882a593Smuzhiyunindex 1c47753..1764b0d 100644
293*4882a593Smuzhiyun--- a/modules/sys_logger.c
294*4882a593Smuzhiyun+++ b/modules/sys_logger.c
295*4882a593Smuzhiyun@@ -60,7 +60,20 @@ int cfg_syslog_access(const char *directive, const char **argv, void *setdata);
296*4882a593Smuzhiyun    functions declared in log.c. This file is not included in c-icap library
297*4882a593Smuzhiyun    but defined in primary c-icap binary.
298*4882a593Smuzhiyun */
299*4882a593Smuzhiyun+#ifdef __CYGWIN__
300*4882a593Smuzhiyun+#include <w32api/windows.h>
301*4882a593Smuzhiyun+char *logformat_fmt(const char *name)
302*4882a593Smuzhiyun+{
303*4882a593Smuzhiyun+  typedef char* (*LF_FMT)(const char *);
304*4882a593Smuzhiyun+  LF_FMT fn;
305*4882a593Smuzhiyun+  fn = (LF_FMT)GetProcAddress(GetModuleHandle(NULL), "logformat_fmt");
306*4882a593Smuzhiyun+  if (fn)
307*4882a593Smuzhiyun+    return (*fn)(name);
308*4882a593Smuzhiyun+  return NULL;
309*4882a593Smuzhiyun+}
310*4882a593Smuzhiyun+#else
311*4882a593Smuzhiyun extern char *logformat_fmt(const char *name);
312*4882a593Smuzhiyun+#endif
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun /*Configuration Table .....*/
315*4882a593Smuzhiyun static struct ci_conf_entry conf_variables[] = {
316*4882a593Smuzhiyundiff --git a/services/echo/Makefile.am b/services/echo/Makefile.am
317*4882a593Smuzhiyunindex 402c8f9..7d701b1 100644
318*4882a593Smuzhiyun--- a/services/echo/Makefile.am
319*4882a593Smuzhiyun+++ b/services/echo/Makefile.am
320*4882a593Smuzhiyun@@ -3,9 +3,15 @@ pkglib_LTLIBRARIES=srv_echo.la
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun-srv_echo_la_LIBADD = @MODULES_LIBADD@
325*4882a593Smuzhiyun+if ISCYGWIN
326*4882a593Smuzhiyun+MODS_LIB_ADD=$(top_builddir)/libicapapi.la
327*4882a593Smuzhiyun+else
328*4882a593Smuzhiyun+MODS_LIB_ADD=
329*4882a593Smuzhiyun+endif
330*4882a593Smuzhiyun+
331*4882a593Smuzhiyun+srv_echo_la_LIBADD = $(MODS_LIB_ADD)
332*4882a593Smuzhiyun srv_echo_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@
333*4882a593Smuzhiyun-srv_echo_la_LDFLAGS= -module -avoid-version
334*4882a593Smuzhiyun+srv_echo_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
335*4882a593Smuzhiyun srv_echo_la_SOURCES = srv_echo.c
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun
338*4882a593Smuzhiyundiff --git a/services/ex-206/Makefile.am b/services/ex-206/Makefile.am
339*4882a593Smuzhiyunindex 44bbf21..ff73399 100644
340*4882a593Smuzhiyun--- a/services/ex-206/Makefile.am
341*4882a593Smuzhiyun+++ b/services/ex-206/Makefile.am
342*4882a593Smuzhiyun@@ -3,8 +3,14 @@ pkglib_LTLIBRARIES=srv_ex206.la
343*4882a593Smuzhiyun
344*4882a593Smuzhiyun AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/
345*4882a593Smuzhiyun
346*4882a593Smuzhiyun-srv_ex206_la_LIBADD = @MODULES_LIBADD@
347*4882a593Smuzhiyun+if ISCYGWIN
348*4882a593Smuzhiyun+MODS_LIB_ADD=$(top_builddir)/libicapapi.la
349*4882a593Smuzhiyun+else
350*4882a593Smuzhiyun+MODS_LIB_ADD=
351*4882a593Smuzhiyun+endif
352*4882a593Smuzhiyun+
353*4882a593Smuzhiyun+srv_ex206_la_LIBADD = $(MODS_LIB_ADD)
354*4882a593Smuzhiyun srv_ex206_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@
355*4882a593Smuzhiyun-srv_ex206_la_LDFLAGS= -module -avoid-version
356*4882a593Smuzhiyun+srv_ex206_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@
357*4882a593Smuzhiyun srv_ex206_la_SOURCES = srv_ex206.c
358*4882a593Smuzhiyun
359*4882a593Smuzhiyundiff --git a/utils/c-icap-mkbdb.c b/utils/c-icap-mkbdb.c
360*4882a593Smuzhiyunindex c29a46f..326ee1c 100644
361*4882a593Smuzhiyun--- a/utils/c-icap-mkbdb.c
362*4882a593Smuzhiyun+++ b/utils/c-icap-mkbdb.c
363*4882a593Smuzhiyun@@ -23,7 +23,7 @@ char *dbfile = NULL;
364*4882a593Smuzhiyun int DUMP_MODE = 0;
365*4882a593Smuzhiyun int VERSION_MODE = 0;
366*4882a593Smuzhiyun int USE_DBTREE = 0;
367*4882a593Smuzhiyun-long int PAGE_SIZE;
368*4882a593Smuzhiyun+long int DB_PAGE_SIZE;
369*4882a593Smuzhiyun
370*4882a593Smuzhiyun ci_mem_allocator_t *allocator = NULL;
371*4882a593Smuzhiyun int cfg_set_type(const char *directive, const char **argv, void *setdata);
372*4882a593Smuzhiyun@@ -52,7 +52,7 @@ static struct ci_options_entry options[] = {
373*4882a593Smuzhiyun         "The type of values"
374*4882a593Smuzhiyun     },
375*4882a593Smuzhiyun     {
376*4882a593Smuzhiyun-        "-p", "page_size", &PAGE_SIZE, ci_cfg_size_long,
377*4882a593Smuzhiyun+        "-p", "page_size", &DB_PAGE_SIZE, ci_cfg_size_long,
378*4882a593Smuzhiyun         "The page size to use for the database"
379*4882a593Smuzhiyun     },
380*4882a593Smuzhiyun     {
381*4882a593Smuzhiyun@@ -107,8 +107,8 @@ int open_db(char *path)
382*4882a593Smuzhiyun         return 0;
383*4882a593Smuzhiyun     }
384*4882a593Smuzhiyun
385*4882a593Smuzhiyun-    if (PAGE_SIZE > 512 && PAGE_SIZE <= 64*1024)
386*4882a593Smuzhiyun-        db->set_pagesize(db, (uint32_t)PAGE_SIZE);
387*4882a593Smuzhiyun+    if (DB_PAGE_SIZE > 512 && DB_PAGE_SIZE <= 64*1024)
388*4882a593Smuzhiyun+        db->set_pagesize(db, (uint32_t)DB_PAGE_SIZE);
389*4882a593Smuzhiyun
390*4882a593Smuzhiyun     if ((ret = db->open(db, NULL, path, NULL,
391*4882a593Smuzhiyun                         (USE_DBTREE ? DB_BTREE : DB_HASH),
392