feat: add rsync info flags
CI / lint (pull_request) Successful in 12s
CI / sanitizers (address) (pull_request) Successful in 38s
CI / sanitizers (undefined) (pull_request) Successful in 37s
CI / fuzz-build (pull_request) Successful in 15s
CI / coverage (pull_request) Successful in 32s
CI / build-and-test (pull_request) Successful in 1m16s
CI / valgrind (pull_request) Successful in 33s

This commit is contained in:
2026-09-03 16:13:56 +02:00
parent 190fc5d300
commit 4872d425a3
8 changed files with 183 additions and 12 deletions
+30
View File
@@ -7,12 +7,21 @@
static const char* log_level_strings[] = {"DEBUG", "INFO", "WARN", "ERROR"};
static LogLevel current_log_level = LOG_LEVEL_WARNING;
static uint32_t info_flags = 0;
static FILE* log_fp = NULL;
void set_log_level(LogLevel level) {
current_log_level = level;
}
void set_log_info_flags(uint32_t flags) {
info_flags = flags;
}
uint32_t get_log_info_flags(void) {
return info_flags;
}
void log_set_file(FILE* fp) {
log_fp = fp;
}
@@ -53,6 +62,27 @@ void log_message(LogLevel log_level, const char* format, ...) {
}
}
void log_info_message(LogInfoFlag flag, const char* format, ...) {
if ((info_flags & flag) == 0 && current_log_level > LOG_LEVEL_DEBUG)
return;
time_t now = time(NULL);
struct tm t;
if (!localtime_r(&now, &t))
return;
va_list args;
va_start(args, format);
write_message(stdout, LOG_LEVEL_INFO, t, format, args);
va_end(args);
if (log_fp) {
va_start(args, format);
write_message(log_fp, LOG_LEVEL_INFO, t, format, args);
va_end(args);
}
}
void log_perror(const char* context) {
log_message(LOG_LEVEL_ERROR, "%s: %s", context, strerror(errno));
}
+20
View File
@@ -2,12 +2,32 @@
#define LOG_H
#include <stdio.h>
#include <stdint.h>
typedef enum { LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARNING, LOG_LEVEL_ERROR } LogLevel;
typedef enum {
LOG_INFO_COPY = 1u << 0,
LOG_INFO_DEL = 1u << 1,
LOG_INFO_FLIST = 1u << 2,
LOG_INFO_MISC = 1u << 3,
LOG_INFO_MOUNT = 1u << 4,
LOG_INFO_NAME = 1u << 5,
LOG_INFO_NONREG = 1u << 6,
LOG_INFO_PROGRESS = 1u << 7,
LOG_INFO_SKIP = 1u << 8,
LOG_INFO_STATS = 1u << 9,
LOG_INFO_SYMSAFE = 1u << 10,
LOG_INFO_BACKUP = 1u << 11,
LOG_INFO_ALL = (1u << 12) - 1,
} LogInfoFlag;
void log_message(LogLevel log_level, const char* message, ...);
void log_perror(const char* context);
void set_log_level(LogLevel level);
void set_log_info_flags(uint32_t flags);
uint32_t get_log_info_flags(void);
void log_info_message(LogInfoFlag flag, const char* message, ...);
void log_set_file(FILE* fp);
#endif