logger: fix write in log file if it has been deleted or renamed (closes #123)
This commit is contained in:
parent
529af39612
commit
53360a7909
@ -39,6 +39,7 @@ Bug fixes::
|
||||
* buflist: fix extra spaces between buffers when conditions are used to hide buffers (regression introduced in version 2.6) (issue #1403)
|
||||
* irc: remove option irc.network.channel_encode, add server option "charset_message" to control which part of the IRC message is decoded/encoded to the target charset (issue #832)
|
||||
* irc: use path from option xfer.file.upload_path to complete filename in command "/dcc send" (issue #60)
|
||||
* logger: fix write in log file if it has been deleted or renamed (issue #123)
|
||||
* xfer: fix memory leak when a xfer is freed and when the plugin is unloaded
|
||||
|
||||
Tests::
|
||||
|
6
po/cs.po
6
po/cs.po
@ -21,7 +21,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:31+0200\n"
|
||||
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -9742,6 +9742,10 @@ msgstr "%s%s: nemohu vytvořit adresář pro logy (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: nemůžu zapsat log soubor \"%s\""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: nemůžu zapsat log soubor \"%s\""
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Začátek logu ****"
|
||||
|
6
po/de.po
6
po/de.po
@ -24,7 +24,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-10-03 15:25+0200\n"
|
||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||
"Language-Team: German <kde-i18n-de@kde.org>\n"
|
||||
@ -11559,6 +11559,10 @@ msgstr ""
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: Protokoll-Datei \"%s\" kann nicht geschrieben werden: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: Protokoll-Datei \"%s\" kann nicht geschrieben werden: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Beginn der Protokoll-Datei ****"
|
||||
|
6
po/es.po
6
po/es.po
@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:31+0200\n"
|
||||
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -10052,6 +10052,10 @@ msgstr "%s%s: imposible crear directorio para registros (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: imposible escribir en el registro \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: imposible escribir en el registro \"%s\": %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Comienzo del registro ****"
|
||||
|
8
po/fr.po
8
po/fr.po
@ -21,8 +21,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"PO-Revision-Date: 2019-10-06 09:22+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-10-06 13:25+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"Language: fr\n"
|
||||
@ -11288,6 +11288,10 @@ msgstr "%s%s : impossible de créer le répertoire pour les logs (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s : impossible d'écrire le fichier log \"%s\" : %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s : impossible de récupérer le statut du fichier de log \"%s\" : %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Début du log ****"
|
||||
|
6
po/hu.po
6
po/hu.po
@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:31+0200\n"
|
||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -9122,6 +9122,10 @@ msgstr "%s nem sikerült a szervert létrehozni\n"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "**** Naplófájl kezdete "
|
||||
|
6
po/it.po
6
po/it.po
@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:31+0200\n"
|
||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -10237,6 +10237,10 @@ msgstr "%s%s: impossibile creare la directory per i log (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: impossibile scrivere il file di log \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: impossibile scrivere il file di log \"%s\": %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Inizio del log ****"
|
||||
|
6
po/ja.po
6
po/ja.po
@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-09-22 18:54+0200\n"
|
||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||
"Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
|
||||
@ -10869,6 +10869,10 @@ msgstr "%s%s: ログ用のディレクトリを作成できません (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: ログファイル \"%s\" の書き込みに失敗: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: ログファイル \"%s\" の書き込みに失敗: %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** ログの最初 ****"
|
||||
|
6
po/pl.po
6
po/pl.po
@ -22,7 +22,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-09-22 18:54+0200\n"
|
||||
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
||||
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
|
||||
@ -11035,6 +11035,10 @@ msgstr "%s%s: nie można utworzyć katalogu dla logów (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: nie można zapisać pliku z logiem \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: nie można zapisać pliku z logiem \"%s\": %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Początek logu ****"
|
||||
|
6
po/pt.po
6
po/pt.po
@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-09-22 18:54+0200\n"
|
||||
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
||||
"Language-Team: Portuguese <>\n"
|
||||
@ -10704,6 +10704,10 @@ msgstr "%s%s: não foi possível criar diretório para registos (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: não foi possível escrever o ficheiro de registo \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: não foi possível escrever o ficheiro de registo \"%s\": %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t**** Início do registo ****"
|
||||
|
@ -21,7 +21,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:32+0200\n"
|
||||
"Last-Translator: Eduardo Elias <camponez@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -9570,6 +9570,10 @@ msgstr "%s%s: não foi possível criar diretório para registros (\"%s\")"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%s%s: não foi possível escrever arquivo de registro \"%s\": %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%s%s: não foi possível escrever arquivo de registro \"%s\": %s"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "%s\t*** Início do registro ****"
|
||||
|
6
po/ru.po
6
po/ru.po
@ -21,7 +21,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:32+0200\n"
|
||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -9159,6 +9159,10 @@ msgstr "%s не могу создать сервер \"%s\"\n"
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr "**** Начало log-файла"
|
||||
|
6
po/tr.po
6
po/tr.po
@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2019-05-13 21:32+0200\n"
|
||||
"Last-Translator: Hasan Kiran <sunder67@hotmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -8329,6 +8329,10 @@ msgstr ""
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr "%sHata: dosya \"%s\" oluşturulamaz"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr "%sHata: dosya \"%s\" oluşturulamaz"
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr ""
|
||||
|
@ -21,7 +21,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2019-10-06 09:20+0200\n"
|
||||
"POT-Creation-Date: 2019-10-06 13:24+0200\n"
|
||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -8192,6 +8192,10 @@ msgstr ""
|
||||
msgid "%s%s: unable to write log file \"%s\": %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: unable to get file status of log file \"%s\": %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s\t**** Beginning of log ****"
|
||||
msgstr ""
|
||||
|
@ -91,6 +91,7 @@ logger_buffer_add (struct t_gui_buffer *buffer, int log_level)
|
||||
new_logger_buffer->buffer = buffer;
|
||||
new_logger_buffer->log_filename = NULL;
|
||||
new_logger_buffer->log_file = NULL;
|
||||
new_logger_buffer->log_file_inode = 0;
|
||||
new_logger_buffer->log_enabled = 1;
|
||||
new_logger_buffer->log_level = log_level;
|
||||
new_logger_buffer->write_start_info_line = 1;
|
||||
@ -234,6 +235,8 @@ logger_buffer_add_to_infolist (struct t_infolist *infolist,
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_pointer (ptr_item, "log_file", logger_buffer->log_file))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_buffer (ptr_item, "log_file_inode", &(logger_buffer->log_file_inode), sizeof(logger_buffer->log_file_inode)))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_integer (ptr_item, "log_enabled", logger_buffer->log_enabled))
|
||||
return 0;
|
||||
if (!weechat_infolist_new_var_integer (ptr_item, "log_level", logger_buffer->log_level))
|
||||
|
@ -21,6 +21,9 @@
|
||||
#define WEECHAT_PLUGIN_LOGGER_BUFFER_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
struct t_infolist;
|
||||
|
||||
@ -29,6 +32,7 @@ struct t_logger_buffer
|
||||
struct t_gui_buffer *buffer; /* pointer to buffer */
|
||||
char *log_filename; /* log filename */
|
||||
FILE *log_file; /* log file */
|
||||
ino_t log_file_inode; /* inode of log file */
|
||||
int log_enabled; /* log enabled ? */
|
||||
int log_level; /* log level (0..9) */
|
||||
int write_start_info_line; /* 1 if start info line must be */
|
||||
|
@ -515,6 +515,132 @@ logger_set_log_filename (struct t_logger_buffer *logger_buffer)
|
||||
logger_buffer->log_filename = log_filename;
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a log file.
|
||||
*
|
||||
* Returns:
|
||||
* 1: OK
|
||||
* 0: error
|
||||
*/
|
||||
|
||||
int
|
||||
logger_create_log_file (struct t_logger_buffer *logger_buffer)
|
||||
{
|
||||
char *charset, *message, buf_time[256], buf_beginning[1024];
|
||||
int log_level, rc;
|
||||
time_t seconds;
|
||||
struct tm *date_tmp;
|
||||
struct stat statbuf;
|
||||
|
||||
if (logger_buffer->log_file)
|
||||
{
|
||||
/*
|
||||
* check that the inode has not changed, otherwise that means the file
|
||||
* was deleted, and we must reopen it
|
||||
*/
|
||||
rc = stat (logger_buffer->log_filename, &statbuf);
|
||||
if ((rc == 0) && (statbuf.st_ino == logger_buffer->log_file_inode))
|
||||
{
|
||||
/* inode has not changed, we can write in this file */
|
||||
return 1;
|
||||
}
|
||||
fclose (logger_buffer->log_file);
|
||||
logger_buffer->log_file = NULL;
|
||||
logger_buffer->log_file_inode = 0;
|
||||
}
|
||||
|
||||
/* get log level */
|
||||
log_level = logger_get_level_for_buffer (logger_buffer->buffer);
|
||||
if (log_level == 0)
|
||||
{
|
||||
logger_buffer_free (logger_buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* create directory */
|
||||
if (!logger_create_directory ())
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to create directory for logs "
|
||||
"(\"%s\")"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
weechat_config_string (logger_config_file_path));
|
||||
logger_buffer_free (logger_buffer);
|
||||
return 0;
|
||||
}
|
||||
if (!logger_buffer->log_filename)
|
||||
logger_set_log_filename (logger_buffer);
|
||||
if (!logger_buffer->log_filename)
|
||||
{
|
||||
logger_buffer_free (logger_buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* create or append to log file */
|
||||
logger_buffer->log_file =
|
||||
fopen (logger_buffer->log_filename, "a");
|
||||
if (!logger_buffer->log_file)
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to write log file \"%s\": %s"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
logger_buffer->log_filename, strerror (errno));
|
||||
logger_buffer_free (logger_buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get file inode */
|
||||
rc = stat (logger_buffer->log_filename, &statbuf);
|
||||
if (rc != 0)
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to get file status of log file \"%s\": %s"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
logger_buffer->log_filename, strerror (errno));
|
||||
fclose (logger_buffer->log_file);
|
||||
logger_buffer->log_file = NULL;
|
||||
logger_buffer->log_file_inode = 0;
|
||||
logger_buffer_free (logger_buffer);
|
||||
return 0;
|
||||
}
|
||||
logger_buffer->log_file_inode = statbuf.st_ino;
|
||||
|
||||
/* write info line */
|
||||
if (weechat_config_boolean (logger_config_file_info_lines)
|
||||
&& logger_buffer->write_start_info_line)
|
||||
{
|
||||
buf_time[0] = '\0';
|
||||
seconds = time (NULL);
|
||||
date_tmp = localtime (&seconds);
|
||||
if (date_tmp)
|
||||
{
|
||||
if (strftime (buf_time, sizeof (buf_time) - 1,
|
||||
weechat_config_string (logger_config_file_time_format),
|
||||
date_tmp) == 0)
|
||||
buf_time[0] = '\0';
|
||||
}
|
||||
snprintf (buf_beginning, sizeof (buf_beginning),
|
||||
_("%s\t**** Beginning of log ****"),
|
||||
buf_time);
|
||||
charset = weechat_info_get ("charset_terminal", "");
|
||||
message = (charset) ?
|
||||
weechat_iconv_from_internal (charset, buf_beginning) : NULL;
|
||||
fprintf (logger_buffer->log_file,
|
||||
"%s\n", (message) ? message : buf_beginning);
|
||||
if (charset)
|
||||
free (charset);
|
||||
if (message)
|
||||
free (message);
|
||||
logger_buffer->flush_needed = 1;
|
||||
}
|
||||
logger_buffer->write_start_info_line = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Writes a line to log file.
|
||||
*/
|
||||
@ -523,80 +649,10 @@ void
|
||||
logger_write_line (struct t_logger_buffer *logger_buffer,
|
||||
const char *format, ...)
|
||||
{
|
||||
char *message, buf_time[256], buf_beginning[1024], *charset;
|
||||
time_t seconds;
|
||||
struct tm *date_tmp;
|
||||
int log_level;
|
||||
char *charset, *message;
|
||||
|
||||
if (!logger_buffer->log_file)
|
||||
{
|
||||
log_level = logger_get_level_for_buffer (logger_buffer->buffer);
|
||||
if (log_level == 0)
|
||||
{
|
||||
logger_buffer_free (logger_buffer);
|
||||
return;
|
||||
}
|
||||
if (!logger_create_directory ())
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to create directory for logs "
|
||||
"(\"%s\")"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
weechat_config_string (logger_config_file_path));
|
||||
logger_buffer_free (logger_buffer);
|
||||
return;
|
||||
}
|
||||
if (!logger_buffer->log_filename)
|
||||
logger_set_log_filename (logger_buffer);
|
||||
if (!logger_buffer->log_filename)
|
||||
{
|
||||
logger_buffer_free (logger_buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
logger_buffer->log_file =
|
||||
fopen (logger_buffer->log_filename, "a");
|
||||
if (!logger_buffer->log_file)
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to write log file \"%s\": %s"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
logger_buffer->log_filename, strerror (errno));
|
||||
logger_buffer_free (logger_buffer);
|
||||
return;
|
||||
}
|
||||
|
||||
if (weechat_config_boolean (logger_config_file_info_lines)
|
||||
&& logger_buffer->write_start_info_line)
|
||||
{
|
||||
buf_time[0] = '\0';
|
||||
seconds = time (NULL);
|
||||
date_tmp = localtime (&seconds);
|
||||
if (date_tmp)
|
||||
{
|
||||
if (strftime (buf_time, sizeof (buf_time) - 1,
|
||||
weechat_config_string (logger_config_file_time_format),
|
||||
date_tmp) == 0)
|
||||
buf_time[0] = '\0';
|
||||
}
|
||||
snprintf (buf_beginning, sizeof (buf_beginning),
|
||||
_("%s\t**** Beginning of log ****"),
|
||||
buf_time);
|
||||
charset = weechat_info_get ("charset_terminal", "");
|
||||
message = (charset) ?
|
||||
weechat_iconv_from_internal (charset, buf_beginning) : NULL;
|
||||
fprintf (logger_buffer->log_file,
|
||||
"%s\n", (message) ? message : buf_beginning);
|
||||
if (charset)
|
||||
free (charset);
|
||||
if (message)
|
||||
free (message);
|
||||
logger_buffer->flush_needed = 1;
|
||||
}
|
||||
logger_buffer->write_start_info_line = 0;
|
||||
}
|
||||
if (!logger_create_log_file (logger_buffer))
|
||||
return;
|
||||
|
||||
weechat_va_format (format);
|
||||
if (vbuffer)
|
||||
@ -656,6 +712,7 @@ logger_stop (struct t_logger_buffer *logger_buffer, int write_info_line)
|
||||
}
|
||||
fclose (logger_buffer->log_file);
|
||||
logger_buffer->log_file = NULL;
|
||||
logger_buffer->log_file_inode = 0;
|
||||
}
|
||||
logger_buffer_free (logger_buffer);
|
||||
}
|
||||
@ -716,6 +773,7 @@ logger_start_buffer (struct t_gui_buffer *buffer, int write_info_line)
|
||||
{
|
||||
fclose (ptr_logger_buffer->log_file);
|
||||
ptr_logger_buffer->log_file = NULL;
|
||||
ptr_logger_buffer->log_file_inode = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user