--- /dev/null
+/*
+ * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License. A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+/* File locking methods */
+
+#ifndef _LUTIL_LOCKF_H_
+#define _LUTIL_LOCKF_H_
+
+#include <stdio.h>
+#include <ldap_cdefs.h>
+#include <ac/bytes.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef NEED_FCNTL_LOCKING
+LDAP_BEGIN_DECL
+
+LDAP_F int lutil_ldap_lockf LDAP_P(( FILE *fs ));
+LDAP_F int lutil_ldap_unlockf LDAP_P(( FILE *fs ));
+
+LDAP_END_DECL
+#endif /* NEED_FCNTL_LOCKING */
+
+#endif /* _LUTIL_LOCKF_H_ */
--- /dev/null
+/*
+ * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License. A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+/* File locking methods */
+
+#include "portable.h"
+
+#include <stdio.h>
+#include <ac/unistd.h>
+
+#if defined(NEED_FCNTL_LOCKING) && defined(HAVE_FCNTL_H)
+
+#include <fcntl.h>
+
+int lutil_ldap_lockf ( FILE *fs ) {
+ struct flock file_lock;
+ memset( &file_lock, 0, sizeof( file_lock ) );
+ file_lock.l_type = F_WRLCK;
+ file_lock.l_whence = SEEK_SET;
+ file_lock.l_start = 0;
+ file_lock.l_len = 0;
+ return( fcntl( fileno( fs ), F_SETLKW, &file_lock ) );
+}
+
+int lutil_ldap_unlockf ( FILE *fs ) {
+ struct flock file_lock;
+ memset( &file_lock, 0, sizeof( file_lock ) );
+ file_lock.l_type = F_UNLCK;
+ file_lock.l_whence = SEEK_SET;
+ file_lock.l_start = 0;
+ file_lock.l_len = 0;
+ return ( fcntl( fileno( fs ), F_SETLK, &file_lock ) );
+}
+
+#endif /* !HAVE_FILE_LOCKING */