summaryrefslogtreecommitdiff
path: root/log
diff options
context:
space:
mode:
authorSoikk2025-06-08 03:22:21 +0200
committerSoikk2025-06-08 03:22:21 +0200
commit6c98531b826415d8f77d3327d7716a06adde33e4 (patch)
tree21892ff90b362aa6f9eb5a5578ff62da3d3499b3 /log
parentc19fd9f23eb52a354259ada8fa07aeaf3a7afc3d (diff)
downloadsoikk-libs-6c98531b826415d8f77d3327d7716a06adde33e4.tar.xz
soikk-libs-6c98531b826415d8f77d3327d7716a06adde33e4.tar.zst
Added log_remove_fp, fixed bug in log_add_fp
Diffstat (limited to 'log')
-rwxr-xr-xlog/log.c18
-rwxr-xr-xlog/log.h1
2 files changed, 18 insertions, 1 deletions
diff --git a/log/log.c b/log/log.c
index df73b1e..063c113 100755
--- a/log/log.c
+++ b/log/log.c
@@ -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]));
}
diff --git a/log/log.h b/log/log.h
index 09b93bb..63337f2 100755
--- a/log/log.h
+++ b/log/log.h
@@ -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, ...);