diff --git a/log/log.c b/log/log.c index 64bd6bc..91e4980 100644 --- a/log/log.c +++ b/log/log.c @@ -69,29 +69,45 @@ void log_initialize() _initialized = 1; } -int log_open(const char *filename) +int log_open_file(FILE *file) { - int log_id; + int log_id; - if (filename == NULL) return LOG_EINSANE; - if (strcmp(filename, "") == 0) return LOG_EINSANE; + if(file == NULL) return LOG_EINSANE; log_id = _get_log_id(); if (log_id < 0) return LOG_ENOMORELOGS; - loglist[log_id].logfile = fopen(filename, "a"); + loglist[log_id].logfile = file; if (loglist[log_id].logfile != NULL) { - loglist[log_id].filename = (char *)strdup(filename); + loglist[log_id].filename = NULL; } else { _release_log_id(log_id); return LOG_ECANTOPEN; } - setvbuf(loglist[log_id].logfile, NULL, _IOLBF, 0); - return log_id; } + +int log_open(const char *filename) +{ + int ret; + FILE *file; + + if (filename == NULL) return LOG_EINSANE; + if (strcmp(filename, "") == 0) return LOG_EINSANE; + + file = fopen(filename, "a"); + + ret = log_open_file(file); + + if(ret >= 0) + setvbuf(file, NULL, _IOLBF, 0); + + return ret; +} + int log_open_with_buffer(const char *filename, int size) { /* not implemented */ diff --git a/log/log.h b/log/log.h index 0e95981..0634da3 100644 --- a/log/log.h +++ b/log/log.h @@ -1,6 +1,8 @@ #ifndef __LOG_H__ #define __LOG_H__ +#include + #define LOG_EINSANE -1 #define LOG_ENOMORELOGS -2 #define LOG_ECANTOPEN -3 @@ -9,6 +11,7 @@ void log_initialize(); +int log_open_file(FILE *file); int log_open(const char *filename); int log_open_with_buffer(const char *filename, int size); void log_set_level(int log_id, int level);