X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fdbfn.c;h=c74ac9c50cd87b6bb3cd365f6a678e34fe266522;hb=82c6910a112610ac5c121ff5321365c5dc7e8eb2;hp=53f2212ac2ddbe80ee0f34e7bacc64a2a501ccfb;hpb=ff790e47f2de6f4d6d48148e1d5a67da8e93c446;p=exim.git diff --git a/src/src/dbfn.c b/src/src/dbfn.c index 53f2212ac..c74ac9c50 100644 --- a/src/src/dbfn.c +++ b/src/src/dbfn.c @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/dbfn.c,v 1.5 2005/06/22 15:44:37 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -80,6 +78,10 @@ Returns: NULL if the open failed, or the locking failed. After locking On success, dbblock is returned. This contains the dbm pointer and the fd of the locked lock file. + +There are some calls that use O_RDWR|O_CREAT for the flags. Having discovered +this in December 2005, I'm not sure if this is correct or not, but for the +moment I haven't changed them. */ open_db * @@ -138,10 +140,10 @@ alarm(0); if (sigalrm_seen) errno = ETIMEDOUT; if (rc < 0) { - log_write(0, LOG_MAIN, "Failed to get %s lock for %s: %s", - ((flags & O_RDONLY) != 0)? "read" : "write", buffer, + log_write(0, LOG_MAIN|LOG_PANIC, "Failed to get %s lock for %s: %s", + read_only? "read" : "write", buffer, (errno == ETIMEDOUT)? "timed out" : strerror(errno)); - close(dbblock->lockfd); + (void)close(dbblock->lockfd); errno = 0; /* Indicates locking failure */ return NULL; } @@ -229,13 +231,15 @@ if (dbblock->dbptr == NULL) debug_printf("%s", CS string_open_failed(save_errno, "DB file %s\n", buffer)); } - close(dbblock->lockfd); + (void)close(dbblock->lockfd); errno = save_errno; return NULL; } DEBUG(D_hints_lookup) - debug_printf("opened hints database %s: flags=%x\n", buffer, flags); + debug_printf("opened hints database %s: flags=%s\n", buffer, + (flags == O_RDONLY)? "O_RDONLY" : (flags == O_RDWR)? "O_RDWR" : + (flags == (O_RDWR|O_CREAT))? "O_RDWR|O_CREAT" : "??"); /* Pass back the block containing the opened database handle and the open fd for the lock. */ @@ -261,7 +265,7 @@ void dbfn_close(open_db *dbblock) { EXIM_DBCLOSE(dbblock->dbptr); -close(dbblock->lockfd); +(void)close(dbblock->lockfd); }