From 73557ce3125316deb2f2f63eacae6a4e4a8ecd2f Mon Sep 17 00:00:00 2001 From: franklahm Date: Sun, 20 Dec 2009 16:04:21 +0000 Subject: [PATCH] Logfile removal was not working --- etc/cnid_dbd/dbif.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/etc/cnid_dbd/dbif.c b/etc/cnid_dbd/dbif.c index 0fdbb9ff..2dd56d43 100644 --- a/etc/cnid_dbd/dbif.c +++ b/etc/cnid_dbd/dbif.c @@ -1,5 +1,5 @@ /* - * $Id: dbif.c,v 1.17 2009-11-25 14:59:15 franklahm Exp $ + * $Id: dbif.c,v 1.18 2009-12-20 16:04:21 franklahm Exp $ * * Copyright (C) Joerg Lenneis 2003 * Copyright (C) Frank Lahm 2009 @@ -247,10 +247,29 @@ int dbif_env_open(DBD *dbd, struct db_param *dbp, uint32_t dbenv_oflags) return -1; } if (logfiles != NULL) { + /* Remember cwd */ + if ((cwd = open(".", O_RDONLY)) < 0) { + LOG(log_error, logtype_cnid, "error opening cwd: %s", strerror(errno)); + goto logfiles_done; + } + /* chdir to db_envhome */ + if ((chdir(dbd->db_envhome)) != 0) { + LOG(log_error, logtype_cnid, "error chdiring to db_env '%s': %s", dbd->db_envhome, strerror(errno)); + goto logfiles_done; + } + for (file = logfiles; *file != NULL; file++) { if (unlink(*file) < 0) LOG(log_warning, logtype_cnid, "Error removing stale logfile %s: %s", *file, strerror(errno)); } + + /* chdir back */ + if ((fchdir(cwd)) != 0) { + LOG(log_error, logtype_cnid, "error chdiring back: %s", strerror(errno)); + return -1; + } + + logfiles_done: free(logfiles); } -- 2.39.2