diff options
| author | Soikk | 2025-06-08 03:22:21 +0200 |
|---|---|---|
| committer | Soikk | 2025-06-08 03:22:21 +0200 |
| commit | 6c98531b826415d8f77d3327d7716a06adde33e4 (patch) | |
| tree | 21892ff90b362aa6f9eb5a5578ff62da3d3499b3 | |
| parent | c19fd9f23eb52a354259ada8fa07aeaf3a7afc3d (diff) | |
| download | soikk-libs-6c98531b826415d8f77d3327d7716a06adde33e4.tar.xz soikk-libs-6c98531b826415d8f77d3327d7716a06adde33e4.tar.zst | |
Added log_remove_fp, fixed bug in log_add_fp
| -rwxr-xr-x | log/log.c | 18 | ||||
| -rwxr-xr-x | log/log.h | 1 |
2 files changed, 18 insertions, 1 deletions
@@ -55,13 +55,29 @@ void log_set_level(int level, int of){ } int log_add_fp(int level, FILE *fp){ - if(level >= 0 && level < LOG_LEVEL_COUNT && log_levels[level].nfps < MAX_LOGFILES-1){ + if(level >= 0 && level < LOG_LEVEL_COUNT && log_levels[level].nfps < MAX_LOGFILES){ log_levels[level].fps[log_levels[level].nfps++] = fp; return 0; } return 1; } +int log_remove_fp(int level, FILE *fp){ + if(level < 0 || level >= LOG_LEVEL_COUNT){ + return 1; + } + for(int i = 0; i < log_levels[level].nfps; i++){ + if(log_levels[level].fps[i] == fp){ + for(int j = i; j < MAX_LOGFILES-1; j++){ + log_levels[level].fps[j] = log_levels[level].fps[j+1]; + } + log_levels[level].fps[log_levels[level].nfps--] = NULL; + return 0; + } + } + return 1; +} + void log_time_format(char *tf){ strncpy(time_format, tf, sizeof(time_format)/sizeof(time_format[0])); } @@ -29,6 +29,7 @@ enum { int log_set_stderr(int level, int of); void log_set_level(int level, int of); int log_add_fp(int level, FILE *fp); +int log_remove_fp(int level, FILE *fp); void log_time_format(char *tf); int log_nanoseconds(int n); void log_message(int level, char *file, int line, char *fmt, ...); |
