diff options
author | James Peach <jpeach@samba.org> | 2006-03-09 22:31:05 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:11:12 -0500 |
commit | f0210601d19016d0c932ad1623e77a70c9aee023 (patch) | |
tree | a50ad4f6d1337f399d1635c806db365874ca3f83 | |
parent | 433e17148200ed76da4ece3ee9468862116bcc84 (diff) | |
download | samba-f0210601d19016d0c932ad1623e77a70c9aee023.tar.gz samba-f0210601d19016d0c932ad1623e77a70c9aee023.tar.bz2 samba-f0210601d19016d0c932ad1623e77a70c9aee023.zip |
r14111: Work around additional typedefs in the gamin implementation
of the FAM API.
(This used to be commit dc96ce90e50da9a82f941b0b534c0681c8477f5e)
-rw-r--r-- | source3/configure.in | 5 | ||||
-rw-r--r-- | source3/smbd/notify_fam.c | 15 |
2 files changed, 16 insertions, 4 deletions
diff --git a/source3/configure.in b/source3/configure.in index 08e52ef145..16efdf9289 100644 --- a/source3/configure.in +++ b/source3/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 <fam.h>], + [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/source3/smbd/notify_fam.c b/source3/smbd/notify_fam.c index dd1e5b709e..3b6be77aca 100644 --- a/source3/smbd/notify_fam.c +++ b/source3/smbd/notify_fam.c @@ -24,6 +24,13 @@ #include <fam.h> +#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 | \ |