/*
+ * $Id: adouble.h,v 1.8 2002-05-13 07:21:55 jmarcus Exp $
* Copyright (c) 1990,1991 Regents of The University of Michigan.
* All Rights Reserved.
*
#include <unistd.h>
-#if defined(sun) && defined(__svr4__)
-#include </usr/ucbinclude/sys/file.h>
-#else
+#ifdef HAVE_FLOCK
#include <sys/file.h>
+#else
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_NB 4
+#define LOCK_UN 8
+extern int flock (int /*fd*/, int /*operation*/);
#endif
#include <fcntl.h>
#include <sys/cdefs.h>
#define AD_DATASZ_MAX 1024
#if AD_VERSION == AD_VERSION1
#define AD_DATASZ AD_DATASZ1 /* hold enough for the entries */
-#else if AD_VERSION == AD_VERSION2
+#elif AD_VERSION == AD_VERSION2
#define AD_DATASZ AD_DATASZ2
#endif
struct ad_entry ad_eid[ ADEID_MAX ];
struct ad_fd ad_df, ad_hf;
int ad_flags, ad_inited;
+ int ad_refcount; /* used in afpd/ofork.c */
#ifdef USE_MMAPPED_HEADERS
char *ad_data;
#else
#if defined(TRY_64BITOFF_T) && (~0UL > 0xFFFFFFFFU)
/* synchronization locks */
#define AD_FILELOCK_BASE (0x80000000)
-#define AD_FILELOCK_WR (AD_FILELOCK_BASE + 0)
-#define AD_FILELOCK_RD (AD_FILELOCK_BASE + 1)
#else
-#define AD_FILELOCK_BASE (0x7FFFFFFE)
-#define AD_FILELOCK_WR (AD_FILELOCK_BASE + 0)
-#define AD_FILELOCK_RD (AD_FILELOCK_BASE + 1)
+#define AD_FILELOCK_BASE (0x7FFFFFFF -4)
#endif
+#define AD_FILELOCK_OPEN_WR (AD_FILELOCK_BASE + 0)
+#define AD_FILELOCK_OPEN_RD (AD_FILELOCK_BASE + 1)
+#define AD_FILELOCK_DENY_WR (AD_FILELOCK_BASE + 2)
+#define AD_FILELOCK_DENY_RD (AD_FILELOCK_BASE + 3)
+#define AD_FILELOCK_OPEN_NONE (AD_FILELOCK_BASE + 4)
/* time stuff. we overload the bits a little. */
#define AD_DATE_CREATE 0