From: franklahm Date: Sun, 20 Dec 2009 16:04:21 +0000 (+0000) Subject: Logfile removal was not working X-Git-Tag: branch-symlink-start~21 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=commitdiff_plain;h=73557ce3125316deb2f2f63eacae6a4e4a8ecd2f;ds=sidebyside Logfile removal was not working --- 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); }