From 2be084c8a1427e670d6f15bf39ff5a4a29b8225c Mon Sep 17 00:00:00 2001 From: markster Date: Fri, 5 Dec 2003 00:50:42 +0000 Subject: Try to unscrew logger git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1828 f38db490-d61c-443f-a65b-d21fe96a405b --- logger.c | 62 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'logger.c') diff --git a/logger.c b/logger.c index d344611b1..a0f5dac12 100755 --- a/logger.c +++ b/logger.c @@ -185,9 +185,9 @@ static void init_logger_chain(void) int reload_logger(int rotate) { char old[AST_CONFIG_MAX_PATH]; - char tmp[AST_CONFIG_MAX_PATH]; char new[AST_CONFIG_MAX_PATH]; struct logfile *f; + FILE *myf; int x; @@ -196,50 +196,51 @@ int reload_logger(int rotate) fclose(eventlog); else rotate = 0; + eventlog = NULL; mkdir((char *)ast_config_AST_LOG_DIR, 0755); snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR, EVENTLOG); - for(x=0;;x++) { - snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, EVENTLOG,x); - eventlog = fopen((char *)new, "r"); - if(eventlog) - fclose(eventlog); - else - break; - } - if(rotate) { - /* do it */ - if(! link(old,new)) - unlink(old); - strcpy(tmp,old); + for(x=0;;x++) { + snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR, EVENTLOG,x); + myf = fopen((char *)new, "r"); + if(myf) + fclose(myf); + else + break; + } + + /* do it */ + if (rename(old,new)) + fprintf(stderr, "Unable to rename file '%s' to '%s'\n", old, new); } + eventlog = fopen(old, "a"); f = logfiles; while(f) { if (f->f && (f->f != stdout) && (f->f != stderr)) { fclose(f->f); - snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR,f->fn); - - for(x=0;;x++) { - snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR,f->fn,x); - eventlog = fopen((char *)new, "r"); - if(eventlog) - fclose(eventlog); - else - break; - } - + f->f = NULL; if(rotate) { - /* do it */ - if(! link(old,new)) - unlink(old); - f->f = fopen((char *)old, "a"); - } + snprintf(old, sizeof(old), "%s/%s", (char *)ast_config_AST_LOG_DIR,f->fn); + + for(x=0;;x++) { + snprintf(new, sizeof(new), "%s/%s.%d", (char *)ast_config_AST_LOG_DIR,f->fn,x); + myf = fopen((char *)new, "r"); + if(f) + fclose(myf); + else + break; + } + + /* do it */ + if (rename(old,new)) + fprintf(stderr, "Unable to rename file '%s' to '%s'\n", old, new); + } } @@ -249,7 +250,6 @@ int reload_logger(int rotate) } - eventlog = fopen((char *)tmp, "a"); ast_mutex_unlock(&loglock); if (eventlog) { -- cgit v1.2.3