From fdee04fa8a936d3f678fef6a20005e97b9b5f5de Mon Sep 17 00:00:00 2001 From: James Peach Date: Thu, 9 Mar 2006 22:31:05 +0000 Subject: [PATCH] r14111: Work around additional typedefs in the gamin implementation of the FAM API. --- source/configure.in | 5 +++++ source/smbd/notify_fam.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/configure.in b/source/configure.in index 08e52ef145b..16efdf92897 100644 --- a/source/configure.in +++ b/source/configure.in @@ -2272,6 +2272,11 @@ fi if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1, [Whether FAM is file notifications are available]) + AC_TRY_COMPILE([#include ], + [FAMCodes code = FAMChanged;], + AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1, + [Whether fam.h contains a typedef for enum FAMCodes]), + []) fi AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[ diff --git a/source/smbd/notify_fam.c b/source/smbd/notify_fam.c index dd1e5b709e1..3b6be77acab 100644 --- a/source/smbd/notify_fam.c +++ b/source/smbd/notify_fam.c @@ -24,6 +24,13 @@ #include +#if !defined(HAVE_FAM_H_FAMCODES_TYPEDEF) +/* Gamin provides this typedef which means we can't use 'enum FAMCodes' as per + * every other FAM implementation. Phooey. + */ +typedef enum FAMCodes FAMCodes; +#endif + /* NOTE: There are multiple versions of FAM floating around the net, each with * slight differences from the original SGI FAM implementation. In this file, * we rely only on the SGI features and do not assume any extensions. For @@ -40,7 +47,7 @@ struct fam_req_info { FAMRequest req; int generation; - enum FAMCodes code; + FAMCodes code; enum { /* We are waiting for an event. */ @@ -91,9 +98,9 @@ static struct cnotify_fns global_fam_notify = * because that might not work across all flavours of FAM. */ static const char * -fam_event_str(enum FAMCodes code) +fam_event_str(FAMCodes code) { - static struct { enum FAMCodes code; const char * name; } evstr[] = + static const struct { FAMCodes code; const char * name; } evstr[] = { { FAMChanged, "FAMChanged"}, { FAMDeleted, "FAMDeleted"}, @@ -188,7 +195,7 @@ fam_monitor_path(connection_struct * conn, } static BOOL -fam_handle_event(enum FAMCodes code, uint32 flags) +fam_handle_event(const FAMCodes code, uint32 flags) { #define F_CHANGE_MASK (FILE_NOTIFY_CHANGE_FILE | \ FILE_NOTIFY_CHANGE_ATTRIBUTES | \ -- 2.11.4.GIT