X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Flock.c;h=bc8a4fc8a4089b4b28f2a92b248d155a7d90b67c;hb=2c94c7915a52f8df4323c8193ec424df568f0fc1;hp=391dd4639a6595036a18becc37b98294754aeb9e;hpb=0924180fa813af3767077df80e18d0ccbd947203;p=openldap diff --git a/servers/slapd/lock.c b/servers/slapd/lock.c index 391dd4639a..bc8a4fc8a4 100644 --- a/servers/slapd/lock.c +++ b/servers/slapd/lock.c @@ -1,4 +1,9 @@ /* lock.c - routines to open and apply an advisory lock to a file */ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ #include "portable.h" @@ -12,32 +17,41 @@ #ifdef HAVE_SYS_FILE_H #include #endif -#include + #include "slap.h" FILE * -lock_fopen( char *fname, char *type, FILE **lfp ) +lock_fopen( const char *fname, const char *type, FILE **lfp ) { FILE *fp; char buf[MAXPATHLEN]; /* open the lock file */ - strcpy( buf, fname ); - strcat( buf, ".lock" ); + strcpy(slap_strcopy( buf, fname ), ".lock" ); if ( (*lfp = fopen( buf, "w" )) == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_ERR, + "lock_fopen: could not open lock file \"%s\".\n", buf )); +#else Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", buf, 0, 0 ); +#endif + return( NULL ); } /* acquire the lock */ - while ( ldap_lockf( *lfp ) != 0 ) { - ; /* NULL */ - } + ldap_lockf( fileno(*lfp) ); /* open the log file */ if ( (fp = fopen( fname, type )) == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_ERR, + "lock_fopen: could not open log file \"%s\".\n", buf )); +#else Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", fname, 0, 0 ); - ldap_unlockf( *lfp ); +#endif + + ldap_unlockf( fileno(*lfp) ); fclose( *lfp ); *lfp = NULL; return( NULL ); @@ -50,7 +64,7 @@ int lock_fclose( FILE *fp, FILE *lfp ) { /* unlock */ - ldap_unlockf( lfp ); + ldap_unlockf( fileno(lfp) ); fclose( lfp ); return( fclose( fp ) );