Hi. I compiled 1.2.rc2 on NetBSD.
[toyota@sernpidal]% uname -rsm NetBSD 3.1 i386 [toyota@sernpidal]% ./configure; make --- snip --- gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -MT child-wait.o -MD -MP -MF .deps/child-wait.Tpo -c -o child-wait.o child-wait.c In file included from child-wait.c:4: lib-signals.h:9: error: parse error before '.' token *** Error code 1
Stop.
Error occurred. I changed some code, and find out the source of the trouble.
[toyota@sernpidal]% grep -w si_code /usr/include/sys/siginfo.h #define si_code _info._code /** si_code */ /** si_code */
The 'si_code' name is conflicted, and I need change the name of 'si_code'. The following is quick patch for NetBSD, just change si_code to sicode.
[toyota@sernpidal]% diff -crN dovecot-1.2.rc2_bak dovecot-1.2.rc2 diff -crN dovecot-1.2.rc2_bak/src/lib/lib-signals.c dovecot-1.2.rc2/src/lib/lib-signals.c *** dovecot-1.2.rc2_bak/src/lib/lib-signals.c Thu Apr 2 02:08:21 2009 --- dovecot-1.2.rc2/src/lib/lib-signals.c Mon Apr 6 12:45:42 2009
*** 27,36 **** static bool signals_initialized = FALSE; static struct io *io_sig = NULL;
! const char *lib_signal_code_to_str(int signo, int si_code) { /* common */ ! switch (si_code) { case SI_USER: return "kill"; #ifdef SI_KERNEL --- 27,36 ---- static bool signals_initialized = FALSE; static struct io *io_sig = NULL;
! const char *lib_signal_code_to_str(int signo, int sicode) { /* common */ ! switch (sicode) { case SI_USER: return "kill"; #ifdef SI_KERNEL
*** 43,49 ****
switch (signo) {
case SIGSEGV:
! switch (si_code) { case SEGV_MAPERR: return "address not mapped"; case SEGV_ACCERR: --- 43,49 ----
switch (signo) {
case SIGSEGV:
! switch (sicode) { case SEGV_MAPERR: return "address not mapped"; case SEGV_ACCERR:
*** 51,57 **** } break; case SIGBUS: ! switch (si_code) { case BUS_ADRALN: return "invalid address alignment"; case BUS_ADRERR: --- 51,57 ---- } break; case SIGBUS: ! switch (sicode) { case BUS_ADRALN: return "invalid address alignment"; case BUS_ADRERR:
*** 60,66 **** return "object-specific hardware error"; } } ! return t_strdup_printf("unknown %d", si_code); }
static void sig_handler(int signo, siginfo_t *si, void *context ATTR_UNUSED) --- 60,66 ---- return "object-specific hardware error"; } } ! return t_strdup_printf("unknown %d", sicode); }
static void sig_handler(int signo, siginfo_t *si, void *context ATTR_UNUSED) diff -crN dovecot-1.2.rc2_bak/src/lib/lib-signals.h dovecot-1.2.rc2/src/lib/lib-signals.h *** dovecot-1.2.rc2_bak/src/lib/lib-signals.h Thu Apr 2 01:59:55 2009 --- dovecot-1.2.rc2/src/lib/lib-signals.h Mon Apr 6 12:46:00 2009
*** 5,12 ****
typedef void signal_handler_t(const siginfo_t *si, void *context);
! /* Convert si_code to string */ ! const char *lib_signal_code_to_str(int signo, int si_code);
/* Set signal handler for specific signal. If delayed is TRUE, the handler will be called later, ie. not as a real signal handler. */ --- 5,12 ----
typedef void signal_handler_t(const siginfo_t *si, void *context);
! /* Convert sicode to string */ ! const char *lib_signal_code_to_str(int signo, int sicode);
/* Set signal handler for specific signal. If delayed is TRUE, the handler will be called later, ie. not as a real signal handler. */
-- Tatsuyoshi Toyota rs27@tatsuyoshi.net