FILE * lock_fopen( const char *fname, const char *type, FILE **lfp ) { FILE *fp; char buf[MAXPATHLEN]; /* open the lock file */ snprintf( buf, sizeof buf, "%s.lock", fname ); if ( (*lfp = fopen( buf, "w" )) == NULL ) { Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", buf, 0, 0 ); return( NULL ); } /* acquire the lock */ ldap_lockf( fileno(*lfp) ); /* open the log file */ if ( (fp = fopen( fname, type )) == NULL ) { Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", fname, 0, 0 ); ldap_unlockf( fileno(*lfp) ); fclose( *lfp ); *lfp = NULL; return( NULL ); } return( fp ); }
int lock_fclose( FILE *fp, FILE *lfp ) { /* unlock */ ldap_unlockf( fileno(lfp) ); fclose( lfp ); return( fclose( fp ) ); }
FILE * lock_fopen( const char *fname, const char *type, FILE **lfp ) { FILE *fp; char buf[MAXPATHLEN]; /* open the lock file */ snprintf( buf, sizeof buf, "%s.lock", fname ); if ( (*lfp = fopen( buf, "w" )) == NULL ) { #ifdef NEW_LOGGING LDAP_LOG( OPERATION, ERR, "lock_fopen: could not open lock file \"%s\".\n", buf, 0, 0); #else Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", buf, 0, 0 ); #endif return( NULL ); } /* acquire the lock */ ldap_lockf( fileno(*lfp) ); /* open the log file */ if ( (fp = fopen( fname, type )) == NULL ) { #ifdef NEW_LOGGING LDAP_LOG( OPERATION, ERR, "lock_fopen: could not open log file \"%s\".\n", buf, 0, 0); #else Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", fname, 0, 0 ); #endif ldap_unlockf( fileno(*lfp) ); fclose( *lfp ); *lfp = NULL; return( NULL ); } return( fp ); }