From 328aa8f2028e62f2b7689899ac4f7bb5f24cb098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sun, 24 Nov 2024 10:07:05 +0100 Subject: [PATCH] core, plugins: abort upgrade immediately if any upgrade file fails to be written Detail of changes: - the save of upgrade files in plugins is now done as soon as the "upgrade" signal is received, and not when the plugin is unloaded (it was too late to detect any problem and prevent the upgrade to happen) - if the write of an upgrade file fails, the signal callback in plugin now returns WEECHAT_RC_ERROR and WeeChat checks this code to stop the upgrade as soon as this return code is received - a new flag is added in plugin structure: unload_with_upgrade, it is set to 1 before unloading all plugins when upgrade will happen (all *.upgrade files are then already successfully written). --- po/cs.po | 14 +++++++++++- po/de.po | 16 ++++++++++++- po/es.po | 15 +++++++++++- po/fr.po | 17 ++++++++++++-- po/hu.po | 14 +++++++++++- po/it.po | 14 +++++++++++- po/ja.po | 15 +++++++++++- po/pl.po | 16 ++++++++++++- po/pt.po | 15 +++++++++++- po/pt_BR.po | 14 +++++++++++- po/ru.po | 14 +++++++++++- po/sr.po | 16 ++++++++++++- po/tr.po | 16 ++++++++++++- po/weechat.pot | 14 +++++++++++- src/core/core-command.c | 39 +++++++++++++++++++++++++++++--- src/plugins/irc/irc-buffer.c | 2 +- src/plugins/irc/irc-notify.c | 5 ++-- src/plugins/irc/irc-server.c | 2 +- src/plugins/irc/irc.c | 25 ++++++++++++++------ src/plugins/irc/irc.h | 1 - src/plugins/plugin.c | 5 ++++ src/plugins/relay/relay-server.c | 2 +- src/plugins/relay/relay.c | 28 +++++++++++++++-------- src/plugins/relay/relay.h | 2 -- src/plugins/weechat-plugin.h | 4 +++- src/plugins/xfer/xfer.c | 27 ++++++++++++++-------- 26 files changed, 298 insertions(+), 54 deletions(-) diff --git a/po/cs.po b/po/cs.po index a2c569131..28dd441a2 100644 --- a/po/cs.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Ondřej Súkup \n" "Language-Team: weechat-dev \n" @@ -867,6 +867,10 @@ msgstr[2] "krát" msgid "WeeChat upgrades: none, started on %s" msgstr "Čas běhu WeeChat: %d %s %02d:%02d:%02d, spuštěn %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sChyba: nemohu uložit sezení do souboru" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sChyba: nemohu uložit sezení do souboru" @@ -908,6 +912,10 @@ msgstr "%sNení specifikována binárka" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Aktualizuji WeeChat s použitím binárního souboru: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "***** Chyba: exec selhal (program: \"%s\"), ukončuji WeeChat" @@ -12669,6 +12677,10 @@ msgstr "%s%s: odpojen od serveru" msgid "IRC (Internet Relay Chat) protocol" msgstr "IRC (Internet Relay Chat) protokol" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%sChyba: nemohu přejmenovat filter \"%s\" na \"%s\"" + #, fuzzy, c-format #| msgid "" #| "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/de.po b/po/de.po index cec7f439a..1b918047c 100644 --- a/po/de.po +++ b/po/de.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-21 09:23+0100\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -855,6 +855,11 @@ msgstr[1] "mal" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat upgrades: keine, gestartet am %s" +#, fuzzy, c-format +#| msgid "%sUnable to save WeeChat session (files *.upgrade)" +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sWeechat-Sitzung kann nicht gespeichert werden (Dateien *.upgrade)" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sWeechat-Sitzung kann nicht gespeichert werden (Dateien *.upgrade)" @@ -893,6 +898,10 @@ msgstr "%skeine Binärdatei angegeben" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Aktualisiere WeeChat mit Binärdatei \"%s\"...." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -13967,6 +13976,11 @@ msgstr "%s%s: vom Server getrennt" msgid "IRC (Internet Relay Chat) protocol" msgstr "IRC (Internet Relay Chat) Protokoll" +#, fuzzy, c-format +#| msgid "%s%s: failed to rename trigger \"%s\"" +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s: Trigger \"%s\" konnte nicht umbenannt werden" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/es.po b/po/es.po index 26b7e93e5..7e93066e2 100644 --- a/po/es.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Santiago Forero \n" "Language-Team: weechat-dev \n" @@ -872,6 +872,11 @@ msgstr[1] "veces" msgid "WeeChat upgrades: none, started on %s" msgstr "Uptime de WeeChat: %d %s %02d:%02d:%02d, iniciado el %s" +#, fuzzy, c-format +#| msgid "%sUnable to save session in file" +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sError: no se pudo guardar la sesión" + #, fuzzy, c-format #| msgid "%sUnable to save session in file" msgid "%sUnable to save WeeChat session (files *.upgrade)" @@ -916,6 +921,10 @@ msgstr "%sNingún ejecutable especificado" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Actualizando WeeChat con el archivo binario: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "***** Error: el ejecutable falló (programa: \"%s\"), cerrando WeeChat" @@ -12978,6 +12987,10 @@ msgstr "%s%s: desconectado del servidor" msgid "IRC (Internet Relay Chat) protocol" msgstr "Protocolo IRC (Internet Relay Chat)" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%sError: no se pudo crear la barra \"%s\"" + #, fuzzy, c-format #| msgid "" #| "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/fr.po b/po/fr.po index 53f2736c9..a8118aba3 100644 --- a/po/fr.po +++ b/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: 2024-11-24 09:58+0100\n" -"PO-Revision-Date: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" +"PO-Revision-Date: 2024-11-24 10:08+0100\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -845,6 +845,11 @@ msgstr[1] "fois" msgid "WeeChat upgrades: none, started on %s" msgstr "Mises à jour de WeeChat : aucune, démarré le %s" +#, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "" +"%sImpossible de sauvegarder les sessions des extensions (fichiers *.upgrade)" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sImpossible de sauvegarder la session WeeChat (fichiers *.upgrade)" @@ -883,6 +888,10 @@ msgstr "%sPas de binaire spécifié" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Mise à jour de WeeChat avec le fichier binaire : \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "%sMise à jour abandonnée" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "***** Erreur : exec a échoué (programme : \"%s\"), sortie de WeeChat" @@ -13680,6 +13689,10 @@ msgstr "%s%s : déconnecté du serveur" msgid "IRC (Internet Relay Chat) protocol" msgstr "Protocole IRC (Internet Relay Chat)" +#, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s : impossible de sauvegarder les données de mise à jour" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/hu.po b/po/hu.po index ca74debc7..dfadca615 100644 --- a/po/hu.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -859,6 +859,10 @@ msgstr[1] "Aktív" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat futásidő: %d %s %02d:%02d:%02d, elindítva: %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%s nem sikerült a folyamatot menteni\n" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%s nem sikerült a folyamatot menteni\n" @@ -894,6 +898,10 @@ msgstr "Nincs aliasz definiálva.\n" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "WeeChat frissítése...\n" +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, fuzzy, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "%s futtatási hiba (program: \"%s\"), a WeeChat kilép\n" @@ -12123,6 +12131,10 @@ msgstr "Lekapcsolódott a szerverről!\n" msgid "IRC (Internet Relay Chat) protocol" msgstr "" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%s nem sikerült a modul opciókat elmenteni\n" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/it.po b/po/it.po index 3e408a2cc..3b3c3e3b2 100644 --- a/po/it.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" @@ -857,6 +857,10 @@ msgstr[1] "volte" msgid "WeeChat upgrades: none, started on %s" msgstr "Uptime di WeeChat: %d %s %02d:%02d:%02d, avviato il %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sErrore: impossibile salvare la sessione su file" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sErrore: impossibile salvare la sessione su file" @@ -899,6 +903,10 @@ msgstr "Nessuna barra definita" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Aggiornamento di WeeChat con il file binario: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "***** Errore: exec fallito (programma: \"%s\"), chiusura di WeeChat" @@ -12984,6 +12992,10 @@ msgstr "%s%s: disconnesso dal server" msgid "IRC (Internet Relay Chat) protocol" msgstr "Protocollo IRC (Internet Relay Chat)" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%sErrore: creazione della barra \"%s\" fallita" + #, fuzzy, c-format #| msgid "" #| "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/ja.po b/po/ja.po index c005226ec..90587123e 100644 --- a/po/ja.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" "Language-Team: weechat-dev \n" @@ -854,6 +854,11 @@ msgstr[2] "razy" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat aktualizacje: brak, uruchomiono %s" +#, fuzzy, c-format +#| msgid "%sUnable to save WeeChat session (files *.upgrade)" +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sNie można zapisać sesji WeeChat (pliki *.upgrade)" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sNie można zapisać sesji WeeChat (pliki *.upgrade)" @@ -892,6 +897,10 @@ msgstr "%sNie określono binarki" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Uaktualniam WeeChat z użyciem pliku: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -13652,6 +13661,11 @@ msgstr "%s%s: rozłączono z serwerem" msgid "IRC (Internet Relay Chat) protocol" msgstr "Protokół IRC (Internet Relay Chat)" +#, fuzzy, c-format +#| msgid "%s%s: failed to rename trigger \"%s\"" +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s: zmiana nazwy triggera \"%s\" nie powiodła się" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/pt.po b/po/pt.po index 54da9cbcb..472d9142d 100644 --- a/po/pt.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Vasco Almeida \n" "Language-Team: Portuguese <>\n" @@ -866,6 +866,10 @@ msgstr[1] "vezes" msgid "WeeChat upgrades: none, started on %s" msgstr "Tempo de atividade do WeeChat: %d %s %02d:%02d:%02d, iniciado a %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sErro: não foi possível guardar a sessão no ficheiro" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sErro: não foi possível guardar a sessão no ficheiro" @@ -908,6 +912,10 @@ msgstr "%sNenhum binário especificado" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "A atualizar o WeeChat com o ficheiro binário: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -13378,6 +13386,11 @@ msgstr "%s%s: desconectado do servidor" msgid "IRC (Internet Relay Chat) protocol" msgstr "Protocolo IRC (Internet Relay Chat)" +#, fuzzy, c-format +#| msgid "%s%s: failed to rename trigger \"%s\"" +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s: falha ao mudar o nome do acionador \"%s\"" + #, fuzzy, c-format #| msgid "" #| "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/pt_BR.po b/po/pt_BR.po index 3b451a929..aec227c66 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Érico Nogueira \n" "Language-Team: weechat-dev \n" @@ -862,6 +862,10 @@ msgstr[1] "vezes" msgid "WeeChat upgrades: none, started on %s" msgstr "Tempo de execução do WeeChat: %d %s %02d:%02d:%02d, iniciado em %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sErro: incapaz de salvar a sessão em arquivo" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sErro: incapaz de salvar a sessão em arquivo" @@ -904,6 +908,10 @@ msgstr "Nenhuma barra definida" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Atualizando WeeChat com o arquivo binário: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "***** Erro: exec falhou (programa: \"%s\"), saindo do WeeChat" @@ -12517,6 +12525,10 @@ msgstr "%s%s: desconectado do servidor" msgid "IRC (Internet Relay Chat) protocol" msgstr "" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%sErro: falha ao criar a barra \"%s\"" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/ru.po b/po/ru.po index da5c57276..ccdcf65e9 100644 --- a/po/ru.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -881,6 +881,10 @@ msgstr[2] "Активно" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat работает: %d %s %02d:%02d:%02d, запущен %s" +#, fuzzy, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%s не могу сохранить сессию в файл\n" + #, fuzzy, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%s не могу сохранить сессию в файл\n" @@ -916,6 +920,10 @@ msgstr "Сокращения не заданы.\n" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "Обновляю WeeChat...\n" +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, fuzzy, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "%s запуск не удался (программа: \"%s\"), выхожу из WeeChat\n" @@ -12176,6 +12184,10 @@ msgstr "Отключен от сервера!\n" msgid "IRC (Internet Relay Chat) protocol" msgstr "" +#, fuzzy, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "%s не могу сохранить конфигурационный файл pluginов\n" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/sr.po b/po/sr.po index 49a4ed182..b82d7741c 100644 --- a/po/sr.po +++ b/po/sr.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Ivan Pešić \n" "Language-Team: weechat-dev \n" @@ -835,6 +835,11 @@ msgstr[2] "пута" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat ажурирања: ниједно, покренут је %s" +#, fuzzy, c-format +#| msgid "%sUnable to save WeeChat session (files *.upgrade)" +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sНије могуће чување WeeChat сесије (*.upgrade фајлови)" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sНије могуће чување WeeChat сесије (*.upgrade фајлови)" @@ -872,6 +877,10 @@ msgstr "%sНије наведен бинарни фајл" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "WeeChat се ажурира са бинарним фајлом: „%s”..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -13293,6 +13302,11 @@ msgstr "%s%s: прекинута је веза са сервером" msgid "IRC (Internet Relay Chat) protocol" msgstr "IRC (Internet Relay Chat) протокол" +#, fuzzy, c-format +#| msgid "%s%s: failed to rename trigger \"%s\"" +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s: промена имена окидача „%s” није успела" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/tr.po b/po/tr.po index 400dd0d1e..cf5d4d80b 100644 --- a/po/tr.po +++ b/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: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2024-11-20 18:17+0100\n" "Last-Translator: Emir SARI \n" "Language-Team: weechat-dev \n" @@ -851,6 +851,11 @@ msgstr[1] "kez" msgid "WeeChat upgrades: none, started on %s" msgstr "WeeChat çalışma süresi: %d %s %02d:%02d:%02d, başlatma: %s" +#, fuzzy, c-format +#| msgid "%sUnable to save WeeChat session (files *.upgrade)" +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "%sWeeChat oturumu kaydedilemiyor (*.upgrade dosyalar)" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "%sWeeChat oturumu kaydedilemiyor (*.upgrade dosyalar)" @@ -890,6 +895,10 @@ msgstr "%sBir ikili belirtilmemiş" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "WeeChat ikili dosya ile yükseltiliyor: \"%s\"..." +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -13646,6 +13655,11 @@ msgstr "%s%s: Sunucu bağlantısı kesildi" msgid "IRC (Internet Relay Chat) protocol" msgstr "IRC (Internet Relay Chat) protokolü" +#, fuzzy, c-format +#| msgid "%s%s: failed to rename trigger \"%s\"" +msgid "%s%s: failed to save upgrade data" +msgstr "%s%s: \"%s\" tetiği yeniden adlandırılamadı" + #, fuzzy, c-format #| msgid "" #| "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/po/weechat.pot b/po/weechat.pot index 94c14dc43..5bab0e9b0 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2024-11-24 09:58+0100\n" +"POT-Creation-Date: 2024-11-24 10:07+0100\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -804,6 +804,10 @@ msgstr[1] "" msgid "WeeChat upgrades: none, started on %s" msgstr "" +#, c-format +msgid "%sUnable to save some plugin sessions (files *.upgrade)" +msgstr "" + #, c-format msgid "%sUnable to save WeeChat session (files *.upgrade)" msgstr "" @@ -838,6 +842,10 @@ msgstr "" msgid "Upgrading WeeChat with binary file: \"%s\"..." msgstr "" +#, c-format +msgid "%sUpgrade aborted" +msgstr "" + #, c-format msgid "***** Error: exec failed (program: \"%s\"), exiting WeeChat" msgstr "" @@ -11074,6 +11082,10 @@ msgstr "" msgid "IRC (Internet Relay Chat) protocol" msgstr "" +#, c-format +msgid "%s%s: failed to save upgrade data" +msgstr "" + #, c-format msgid "" "%s%s: disconnecting from server because upgrade can't work for servers " diff --git a/src/core/core-command.c b/src/core/core-command.c index c6646d316..7b485aeb5 100644 --- a/src/core/core-command.c +++ b/src/core/core-command.c @@ -7200,6 +7200,7 @@ command_upgrade_display (struct t_gui_buffer *buffer, COMMAND_CALLBACK(upgrade) { + struct t_weechat_plugin *ptr_plugin; char *ptr_binary; char *exec_args[7] = { NULL, "-a", "--dir", NULL, "--upgrade", NULL }; struct stat stat_buf; @@ -7253,7 +7254,16 @@ COMMAND_CALLBACK(upgrade) && (string_strcmp (argv[index_args], "-save") == 0)) { /* send "upgrade" signal to plugins */ - (void) hook_signal_send ("upgrade", WEECHAT_HOOK_SIGNAL_STRING, "save"); + rc = hook_signal_send ("[flags:stop_on_error,ignore_eat]upgrade", + WEECHAT_HOOK_SIGNAL_STRING, "save"); + if (rc == WEECHAT_RC_ERROR) + { + gui_chat_printf (NULL, + _("%sUnable to save some plugin sessions " + "(files *.upgrade)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } /* save WeeChat session */ if (!upgrade_weechat_save ()) { @@ -7353,19 +7363,42 @@ COMMAND_CALLBACK(upgrade) } /* send "upgrade" signal to plugins */ - (void) hook_signal_send ("upgrade", WEECHAT_HOOK_SIGNAL_STRING, - (quit) ? "quit" : NULL); + rc = hook_signal_send ("[flags:stop_on_error,ignore_eat]upgrade", + WEECHAT_HOOK_SIGNAL_STRING, + (quit) ? "quit" : NULL); + if (rc == WEECHAT_RC_ERROR) + { + gui_chat_printf (NULL, + _("%sUnable to save some plugin sessions " + "(files *.upgrade)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf (NULL, + _("%sUpgrade aborted"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + free (ptr_binary); + return WEECHAT_RC_ERROR; + } + /* save WeeChat session */ if (!upgrade_weechat_save ()) { gui_chat_printf (NULL, _("%sUnable to save WeeChat session " "(files *.upgrade)"), gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + gui_chat_printf (NULL, + _("%sUpgrade aborted"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); free (ptr_binary); return WEECHAT_RC_ERROR; } + for (ptr_plugin = weechat_plugins; ptr_plugin; + ptr_plugin = ptr_plugin->next_plugin) + { + ptr_plugin->unload_with_upgrade = 1; + } + weechat_quit = 1; weechat_upgrading = 1; diff --git a/src/plugins/irc/irc-buffer.c b/src/plugins/irc/irc-buffer.c index b957c4f17..affb66982 100644 --- a/src/plugins/irc/irc-buffer.c +++ b/src/plugins/irc/irc-buffer.c @@ -199,7 +199,7 @@ irc_buffer_close_cb (const void *pointer, void *data, IRC_SERVER_OPTION_AUTOJOIN_DYNAMIC) && ptr_server->is_connected && !irc_signal_quit_received - && !irc_signal_upgrade_received) + && !weechat_irc_plugin->unload_with_upgrade) { irc_join_remove_channel_from_autojoin (ptr_server, ptr_channel->name); diff --git a/src/plugins/irc/irc-notify.c b/src/plugins/irc/irc-notify.c index 8c1c57ac5..8d49d89e0 100644 --- a/src/plugins/irc/irc-notify.c +++ b/src/plugins/irc/irc-notify.c @@ -452,7 +452,8 @@ irc_notify_free (struct t_irc_server *server, struct t_irc_notify *notify, if (notify->nick) { if ((server->monitor > 0) && remove_monitor - && (server->is_connected) && !irc_signal_upgrade_received) + && (server->is_connected) + && !weechat_irc_plugin->unload_with_upgrade) { /* remove one monitored nick */ irc_server_sendf (notify->server, @@ -491,7 +492,7 @@ irc_notify_free_all (struct t_irc_server *server) { /* remove all monitored nicks */ if ((server->monitor > 0) && (server->is_connected) - && !irc_signal_upgrade_received) + && !weechat_irc_plugin->unload_with_upgrade) { irc_server_sendf (server, IRC_SERVER_SEND_OUTQ_PRIO_LOW, NULL, "MONITOR C"); diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 90a67e88d..0952757cd 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -2411,7 +2411,7 @@ irc_server_free (struct t_irc_server *server) * (only if we are not in a /upgrade, because during upgrade we want to * keep connections and closing server buffer would disconnect from server) */ - if (server->buffer && !irc_signal_upgrade_received) + if (server->buffer && !weechat_irc_plugin->unload_with_upgrade) weechat_buffer_close (server->buffer); /* remove server from queue */ diff --git a/src/plugins/irc/irc.c b/src/plugins/irc/irc.c index d5a723c09..9f5126582 100644 --- a/src/plugins/irc/irc.c +++ b/src/plugins/irc/irc.c @@ -61,7 +61,6 @@ struct t_weechat_plugin *weechat_irc_plugin = NULL; struct t_hook *irc_hook_timer = NULL; int irc_signal_quit_received = 0; /* signal "quit" received? */ -int irc_signal_upgrade_received = 0; /* signal "upgrade" received? */ /* @@ -121,12 +120,17 @@ irc_signal_upgrade_cb (const void *pointer, void *data, * save session with a disconnected state in servers and a scheduled * reconnection */ - irc_upgrade_save (1); + if (!irc_upgrade_save (1)) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } return WEECHAT_RC_OK; } - irc_signal_upgrade_received = 1; - quit = (signal_data && (strcmp (signal_data, "quit") == 0)); tls_disconnected = 0; @@ -178,6 +182,15 @@ irc_signal_upgrade_cb (const void *pointer, void *data, tls_disconnected); } + if (!irc_upgrade_save (0)) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), IRC_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } + return WEECHAT_RC_OK; } @@ -194,7 +207,6 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) weechat_plugin = plugin; irc_signal_quit_received = 0; - irc_signal_upgrade_received = 0; irc_color_init (); @@ -323,10 +335,9 @@ weechat_plugin_end (struct t_weechat_plugin *plugin) irc_hook_timer = NULL; } - if (irc_signal_upgrade_received) + if (weechat_irc_plugin->unload_with_upgrade) { irc_config_write (1); - irc_upgrade_save (0); } else { diff --git a/src/plugins/irc/irc.h b/src/plugins/irc/irc.h index 6973aedb4..6f8b7c2fa 100644 --- a/src/plugins/irc/irc.h +++ b/src/plugins/irc/irc.h @@ -28,6 +28,5 @@ extern struct t_weechat_plugin *weechat_irc_plugin; extern int irc_signal_quit_received; -extern int irc_signal_upgrade_received; #endif /* WEECHAT_PLUGIN_IRC_H */ diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c index bdffb5767..aaa0a4541 100644 --- a/src/plugins/plugin.c +++ b/src/plugins/plugin.c @@ -595,6 +595,7 @@ plugin_load (const char *filename, int init_plugin, int argc, char **argv) ptr_option = config_weechat_debug_get (name); new_plugin->debug = (ptr_option) ? CONFIG_INTEGER(ptr_option) : 0; new_plugin->upgrading = weechat_upgrading; + new_plugin->unload_with_upgrade = 0; new_plugin->variables = hashtable_new ( 32, WEECHAT_HASHTABLE_STRING, WEECHAT_HASHTABLE_STRING, @@ -1461,6 +1462,7 @@ plugin_hdata_plugin_cb (const void *pointer, void *data, HDATA_VAR(struct t_weechat_plugin, initialized, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_weechat_plugin, debug, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_weechat_plugin, upgrading, INTEGER, 0, NULL, NULL); + HDATA_VAR(struct t_weechat_plugin, unload_with_upgrade, INTEGER, 0, NULL, NULL); HDATA_VAR(struct t_weechat_plugin, variables, HASHTABLE, 0, NULL, NULL); HDATA_VAR(struct t_weechat_plugin, prev_plugin, POINTER, 0, NULL, hdata_name); HDATA_VAR(struct t_weechat_plugin, next_plugin, POINTER, 0, NULL, hdata_name); @@ -1521,6 +1523,8 @@ plugin_add_to_infolist (struct t_infolist *infolist, return 0; if (!infolist_new_var_integer (ptr_item, "upgrading", plugin->upgrading)) return 0; + if (!infolist_new_var_integer (ptr_item, "unload_with_upgrade", plugin->unload_with_upgrade)) + return 0; if (!hashtable_add_to_infolist (plugin->variables, ptr_item, "var")) return 0; @@ -1553,6 +1557,7 @@ plugin_print_log () log_printf (" initialized. . . . . . : %d", ptr_plugin->initialized); log_printf (" debug. . . . . . . . . : %d", ptr_plugin->debug); log_printf (" upgrading. . . . . . . : %d", ptr_plugin->upgrading); + log_printf (" unload_with_upgrade. . : %d", ptr_plugin->unload_with_upgrade); hashtable_print_log (ptr_plugin->variables, "variables"); log_printf (" prev_plugin. . . . . . : %p", ptr_plugin->prev_plugin); log_printf (" next_plugin. . . . . . : %p", ptr_plugin->next_plugin); diff --git a/src/plugins/relay/relay-server.c b/src/plugins/relay/relay-server.c index 7e80bdb7a..7bf1fee27 100644 --- a/src/plugins/relay/relay-server.c +++ b/src/plugins/relay/relay-server.c @@ -251,7 +251,7 @@ relay_server_close_socket (struct t_relay_server *server) server->sock = -1; if (server->unix_socket) unlink (server->path); - if (!relay_signal_upgrade_received) + if (!weechat_relay_plugin->unload_with_upgrade) { weechat_printf (NULL, _("%s: socket closed for %s (%s: %s)"), diff --git a/src/plugins/relay/relay.c b/src/plugins/relay/relay.c index e530906c9..8d029fa94 100644 --- a/src/plugins/relay/relay.c +++ b/src/plugins/relay/relay.c @@ -73,8 +73,6 @@ struct t_hdata *relay_hdata_completion = NULL; struct t_hdata *relay_hdata_completion_word = NULL; struct t_hdata *relay_hdata_hotlist = NULL; -int relay_signal_upgrade_received = 0; /* signal "upgrade" received ? */ - struct t_hook *relay_hook_timer = NULL; @@ -151,12 +149,17 @@ relay_signal_upgrade_cb (const void *pointer, void *data, if (signal_data && (strcmp (signal_data, "save") == 0)) { /* save session with a disconnected state in clients */ - relay_upgrade_save (1); + if (!relay_upgrade_save (1)) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), RELAY_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } return WEECHAT_RC_OK; } - relay_signal_upgrade_received = 1; - /* close socket for relay servers */ for (ptr_server = relay_servers; ptr_server; ptr_server = ptr_server->next_server) @@ -203,6 +206,15 @@ relay_signal_upgrade_cb (const void *pointer, void *data, NG_("client", "clients", tls_disconnected)); } + if (!relay_upgrade_save (0)) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), RELAY_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } + return WEECHAT_RC_OK; } @@ -284,8 +296,6 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) relay_hdata_completion_word = weechat_hdata_get ("completion_word"); relay_hdata_hotlist = weechat_hdata_get ("hotlist"); - relay_signal_upgrade_received = 0; - if (!relay_config_init ()) return WEECHAT_RC_ERROR; @@ -341,9 +351,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin) relay_config_write (); - if (relay_signal_upgrade_received) - relay_upgrade_save (0); - else + if (!weechat_relay_plugin->unload_with_upgrade) relay_client_disconnect_all (); relay_raw_message_free_all (); diff --git a/src/plugins/relay/relay.h b/src/plugins/relay/relay.h index f30a5c054..62b35fb57 100644 --- a/src/plugins/relay/relay.h +++ b/src/plugins/relay/relay.h @@ -37,8 +37,6 @@ extern struct t_hdata *relay_hdata_completion; extern struct t_hdata *relay_hdata_completion_word; extern struct t_hdata *relay_hdata_hotlist; -extern int relay_signal_upgrade_received; - /* relay protocol */ enum t_relay_protocol diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h index eef46dd4d..047ce659b 100644 --- a/src/plugins/weechat-plugin.h +++ b/src/plugins/weechat-plugin.h @@ -74,7 +74,7 @@ struct t_weelist_item; * please change the date with current one; for a second change at same * date, increment the 01, otherwise please keep 01. */ -#define WEECHAT_PLUGIN_API_VERSION "20240727-01" +#define WEECHAT_PLUGIN_API_VERSION "20241124-01" /* macros for defining plugin infos */ #define WEECHAT_PLUGIN_NAME(__name) \ @@ -307,6 +307,8 @@ struct t_weechat_plugin int upgrading; /* 1 if the plugin must load upgrade */ /* info on startup (if weechat is */ /* run with --upgrade) */ + int unload_with_upgrade; /* 1 if the plugin is unloaded after */ + /* /upgrade command */ struct t_hashtable *variables; /* plugin custom variables */ struct t_weechat_plugin *prev_plugin; /* link to previous plugin */ struct t_weechat_plugin *next_plugin; /* link to next plugin */ diff --git a/src/plugins/xfer/xfer.c b/src/plugins/xfer/xfer.c index 7f6fb9995..19e45d8a8 100644 --- a/src/plugins/xfer/xfer.c +++ b/src/plugins/xfer/xfer.c @@ -80,8 +80,6 @@ struct t_xfer *xfer_list = NULL; /* list of files/chats */ struct t_xfer *last_xfer = NULL; /* last file/chat in list */ int xfer_count = 0; /* number of xfer */ -int xfer_signal_upgrade_received = 0; /* signal "upgrade" received ? */ - void xfer_disconnect_all (); @@ -130,12 +128,17 @@ xfer_signal_upgrade_cb (const void *pointer, void *data, /* only save session and continue? */ if (signal_data && (strcmp (signal_data, "save") == 0)) { - xfer_upgrade_save (); + if (!xfer_upgrade_save ()) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), XFER_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } return WEECHAT_RC_OK; } - xfer_signal_upgrade_received = 1; - /* * TODO: do not disconnect here in case of upgrade when the save of xfers * in upgrade file will be implemented @@ -144,6 +147,15 @@ xfer_signal_upgrade_cb (const void *pointer, void *data, /*if (signal_data && (strcmp (signal_data, "quit") == 0))*/ xfer_disconnect_all (); + if (!xfer_upgrade_save ()) + { + weechat_printf ( + NULL, + _("%s%s: failed to save upgrade data"), + weechat_prefix ("error"), XFER_PLUGIN_NAME); + return WEECHAT_RC_ERROR; + } + return WEECHAT_RC_OK; } @@ -1808,8 +1820,6 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) weechat_plugin = plugin; - xfer_signal_upgrade_received = 0; - if (!xfer_config_init ()) return WEECHAT_RC_ERROR; @@ -1861,9 +1871,6 @@ weechat_plugin_end (struct t_weechat_plugin *plugin) xfer_config_write (); - if (xfer_signal_upgrade_received) - xfer_upgrade_save (); - xfer_disconnect_all (); xfer_free_all ();