X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslurpd%2Flock.c;h=8a8fa65f98c447193addb3ad8e5a61dd6883ce52;hb=782b481a9a0415fb652590282b95bb11701a00e4;hp=726fc3c5c8dcec1d6c3c7fb24b5d48d07d8f294a;hpb=a8a05cbe48f55fcb9132352a923435ce177ca1b1;p=openldap diff --git a/servers/slurpd/lock.c b/servers/slurpd/lock.c index 726fc3c5c8..8a8fa65f98 100644 --- a/servers/slurpd/lock.c +++ b/servers/slurpd/lock.c @@ -1,3 +1,8 @@ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ /* * Copyright (c) 1996 Regents of the University of Michigan. * All rights reserved. @@ -18,6 +23,7 @@ #include +#include #include #include #include @@ -26,17 +32,14 @@ #ifdef HAVE_SYS_FILE_H #include #endif -#ifdef HAVE_SYS_PARAM_H -#include -#endif #include "slurp.h" FILE * lock_fopen( - char *fname, - char *type, + const char *fname, + const char *type, FILE **lfp ) { @@ -44,33 +47,32 @@ lock_fopen( char buf[MAXPATHLEN]; /* open the lock file */ - strcpy( buf, fname ); - strcat( buf, ".lock" ); + snprintf( buf, sizeof buf, "%s.lock", fname ); + if ( (*lfp = fopen( buf, "w" )) == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG ( SLURPD, ERR, "lock_fopen: " + "Error: could not open \"%s\"\n", buf, 0, 0 ); +#else Debug( LDAP_DEBUG_ANY, "Error: could not open \"%s\"\n", buf, 0, 0 ); +#endif return( NULL ); } /* acquire the lock */ -#ifdef HAVE_FLOCK - while ( flock( fileno( *lfp ), LOCK_EX ) != 0 ) -#else - while ( lockf( fileno( *lfp ), F_LOCK, 0 ) != 0 ) -#endif - { - ; /* NULL */ - } + ldap_lockf( fileno(*lfp) ); /* open the log file */ if ( (fp = fopen( fname, type )) == NULL ) { - Debug( LDAP_DEBUG_ANY, +#ifdef NEW_LOGGING + LDAP_LOG ( SLURPD, ERR, "lock_fopen: " "Error: could not open \"%s\"\n", fname, 0, 0 ); -#ifdef HAVE_FLOCK - flock( fileno( *lfp ), LOCK_UN ); #else - lockf( fileno( *lfp ), F_ULOCK, 0 ); + Debug( LDAP_DEBUG_ANY, + "Error: could not open \"%s\"\n", fname, 0, 0 ); #endif + ldap_unlockf( fileno(*lfp) ); fclose( *lfp ); *lfp = NULL; return( NULL ); @@ -88,11 +90,7 @@ lock_fclose( ) { /* unlock */ -#ifdef HAVE_FLOCK - flock( fileno( lfp ), LOCK_UN ); -#else - lockf( fileno( lfp ), F_ULOCK, 0 ); -#endif + ldap_unlockf( fileno(lfp) ); fclose( lfp ); return( fclose( fp ) ); @@ -105,15 +103,21 @@ lock_fclose( */ int acquire_lock( - char *file, + const char *file, FILE **rfp, FILE **lfp ) { if (( *rfp = lock_fopen( file, "r+", lfp )) == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG ( SLURPD, ERR, "acquire_lock: " + "Error: acquire_lock(%ld): Could not acquire lock on \"%s\"\n", + (long) getpid(), file, 0 ); +#else Debug( LDAP_DEBUG_ANY, "Error: acquire_lock(%ld): Could not acquire lock on \"%s\"\n", (long) getpid(), file, 0); +#endif return( -1 ); } return( 0 ); @@ -127,15 +131,21 @@ acquire_lock( */ int relinquish_lock( - char *file, + const char *file, FILE *rfp, FILE *lfp ) { if ( lock_fclose( rfp, lfp ) == EOF ) { +#ifdef NEW_LOGGING + LDAP_LOG ( SLURPD, ERR, "relinguish_lock: " + "Error: relinquish_lock (%ld): Error closing \"%s\"\n", + (long) getpid(), file, 0 ); +#else Debug( LDAP_DEBUG_ANY, "Error: relinquish_lock (%ld): Error closing \"%s\"\n", (long) getpid(), file, 0 ); +#endif return( -1 ); } return( 0 );