From 99f42d6bd2116b0bd8f75394fe92255ca1f4c80b Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 4 Nov 2007 16:38:59 -0600 Subject: libalpm: open the logstream on demand Don't open a stream to the logfile until necessary. This will allow us to catch any errors in opening the logfile instead of ignorning them. Signed-off-by: Dan McGee --- lib/libalpm/handle.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'lib/libalpm/handle.c') diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c index 9031291d..af549498 100644 --- a/lib/libalpm/handle.c +++ b/lib/libalpm/handle.c @@ -50,6 +50,8 @@ pmhandle_t *_alpm_handle_new() { pmhandle_t *handle; + ALPM_LOG_FUNC; + CALLOC(handle, 1, sizeof(pmhandle_t), RET_ERR(PM_ERR_MEMORY, NULL)); handle->lckfd = -1; @@ -388,7 +390,6 @@ void SYMEXPORT alpm_option_set_cachedirs(alpm_list_t *cachedirs) int SYMEXPORT alpm_option_set_logfile(const char *logfile) { char *oldlogfile = handle->logfile; - FILE *oldlogstream = handle->logstream; ALPM_LOG_FUNC; @@ -398,32 +399,14 @@ int SYMEXPORT alpm_option_set_logfile(const char *logfile) } handle->logfile = strdup(logfile); - handle->logstream = fopen(logfile, "a"); - if(handle->logstream == NULL) { - /* TODO we probably want to do this at some point, but right now - * it just blows up when a user calls pacman without privilages */ - _alpm_log(PM_LOG_DEBUG, "couldn't open logfile for writing, ignoring\n"); - /* - if(errno == EACCES) { - pm_errno = PM_ERR_BADPERMS; - } else if(errno == ENOENT) { - pm_errno = PM_ERR_NOT_A_DIR; - } else { - pm_errno = PM_ERR_SYSTEM; - } - * reset logfile to its previous value * - FREE(handle->logfile); - handle->logfile = oldlogfile; - handle->logstream = oldlogstream; - return(-1); - */ - } + /* free the old logfile path string, and close the stream so logaction + * will reopen a new stream on the new logfile */ if(oldlogfile) { FREE(oldlogfile); } - if(oldlogstream) { - fclose(oldlogstream); + if(handle->logstream) { + fclose(handle->logstream); } _alpm_log(PM_LOG_DEBUG, "option 'logfile' = %s\n", handle->logfile); return(0); -- cgit v1.2.3-24-g4f1b