From 672945a359ab767fbf74a11dbfed062ee3a6e096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 30 Mar 2023 22:04:33 +0200 Subject: [PATCH] logger: add info "logger_log_file" --- ChangeLog.adoc | 1 + src/plugins/logger/logger-info.c | 62 ++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 51eb9d5f7..9992c784c 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -38,6 +38,7 @@ New features:: * irc: add command `/knock` (issue #7) * irc: add server option "registered_mode", add fields "authentication_method" and "sasl_mechanism_used" in server (issue #1625) * irc: add option `join` in command `/autojoin` + * logger: add info "logger_log_file" Bug fixes:: diff --git a/src/plugins/logger/logger-info.c b/src/plugins/logger/logger-info.c index c08577f8f..868b3317f 100644 --- a/src/plugins/logger/logger-info.c +++ b/src/plugins/logger/logger-info.c @@ -21,12 +21,64 @@ #include #include +#include #include "../weechat-plugin.h" #include "logger.h" #include "logger-buffer.h" +/* + * Returns info "logger_log_file". + */ + +char * +logger_info_log_file_cb (const void *pointer, void *data, + const char *info_name, + const char *arguments) +{ + int rc; + unsigned long value; + struct t_gui_buffer *buffer; + struct t_logger_buffer *logger_buffer; + + /* make C compiler happy */ + (void) pointer; + (void) data; + (void) info_name; + + if (!arguments) + return NULL; + + buffer = NULL; + if (strncmp (arguments, "0x", 2) == 0) + { + rc = sscanf (arguments, "%lx", &value); + if ((rc != EOF) && (rc != 0) && value) + { + if (weechat_hdata_check_pointer (weechat_hdata_get ("buffer"), + NULL, + (struct t_gui_buffer *)value)) + { + buffer = (struct t_gui_buffer *)value; + } + } + } + else + { + buffer = weechat_buffer_search ("==", arguments); + } + + if (buffer) + { + logger_buffer = logger_buffer_search_buffer (buffer); + if (logger_buffer && logger_buffer->log_filename) + return strdup (logger_buffer->log_filename); + } + + return NULL; +} + /* * Returns logger infolist "logger_buffer". */ @@ -82,6 +134,7 @@ logger_info_infolist_logger_buffer_cb (const void *pointer, void *data, return NULL; } + /* * Hooks infolist for logger plugin. */ @@ -89,6 +142,15 @@ logger_info_infolist_logger_buffer_cb (const void *pointer, void *data, void logger_info_init () { + /* info hooks */ + weechat_hook_info ( + "logger_log_file", + N_("path to current log filename for the buffer"), + N_("buffer pointer (\"0x12345678\") or buffer full name " + "(\"irc.libera.#weechat\")"), + &logger_info_log_file_cb, NULL, NULL); + + /* infolist hooks */ weechat_hook_infolist ( "logger_buffer", N_("list of logger buffers"), N_("logger pointer (optional)"),