summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Peach <jpeach@samba.org>2006-03-09 22:31:05 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:11:12 -0500
commitf0210601d19016d0c932ad1623e77a70c9aee023 (patch)
treea50ad4f6d1337f399d1635c806db365874ca3f83
parent433e17148200ed76da4ece3ee9468862116bcc84 (diff)
downloadsamba-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.in5
-rw-r--r--source3/smbd/notify_fam.c15
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 | \