mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
/SET translation now says if there were any errors
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1810 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
d246f862e8
commit
bb507a8b85
@ -248,6 +248,8 @@ FORMAT_REC fecommon_core_formats[] = {
|
||||
{ "set_item", "$0 = $1", 2, { 0, 0 } },
|
||||
{ "set_unknown", "Unknown setting $0", 1, { 0 } },
|
||||
{ "set_not_boolean", "Setting {hilight $0} isn't boolean, use /SET", 1, { 0 } },
|
||||
{ "translation_not_found", "Error opening translation table file $0: $1", 2, { 0, 0 } },
|
||||
{ "translation_file_error", "Error parsing translation table file $0", 1, { 0 } },
|
||||
|
||||
{ NULL, NULL, 0 }
|
||||
};
|
||||
|
@ -213,7 +213,9 @@ enum {
|
||||
TXT_SET_TITLE,
|
||||
TXT_SET_ITEM,
|
||||
TXT_SET_UNKNOWN,
|
||||
TXT_SET_NOT_BOOLEAN
|
||||
TXT_SET_NOT_BOOLEAN,
|
||||
TXT_TRANSLATION_NOT_FOUND,
|
||||
TXT_TRANSLATION_FILE_ERROR
|
||||
};
|
||||
|
||||
extern FORMAT_REC fecommon_core_formats[];
|
||||
|
@ -19,12 +19,17 @@
|
||||
*/
|
||||
|
||||
#include "module.h"
|
||||
#include "module-formats.h"
|
||||
#include "signals.h"
|
||||
#include "line-split.h"
|
||||
#include "misc.h"
|
||||
#include "levels.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include "printtext.h"
|
||||
|
||||
unsigned char translation_in[256], translation_out[256];
|
||||
static char *current_translation;
|
||||
|
||||
void translation_reset(void)
|
||||
{
|
||||
@ -81,7 +86,12 @@ int translation_read(const char *file)
|
||||
f = open(file, O_RDONLY);
|
||||
g_free(path);
|
||||
|
||||
if (f == -1) return FALSE;
|
||||
if (f == -1) {
|
||||
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
||||
TXT_TRANSLATION_NOT_FOUND, file,
|
||||
g_strerror(errno));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pos = 0; buffer = NULL;
|
||||
while (pos < 512) {
|
||||
@ -95,20 +105,40 @@ int translation_read(const char *file)
|
||||
line_split_free(buffer);
|
||||
|
||||
close(f);
|
||||
if (pos != 512)
|
||||
if (pos != 512) {
|
||||
translation_reset();
|
||||
printformat(NULL, NULL, MSGLEVEL_CLIENTERROR,
|
||||
TXT_TRANSLATION_FILE_ERROR, file);
|
||||
}
|
||||
return pos == 512;
|
||||
}
|
||||
|
||||
static void read_settings(void)
|
||||
{
|
||||
translation_read(settings_get_str("translation"));
|
||||
const char *translation;
|
||||
|
||||
translation = settings_get_str("translation");
|
||||
if (*translation == '\0') {
|
||||
if (current_translation != NULL) {
|
||||
g_free_and_null(current_translation);
|
||||
translation_reset();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (current_translation != NULL &&
|
||||
strcmp(translation, current_translation) != 0) {
|
||||
g_free_not_null(current_translation);
|
||||
current_translation = g_strdup(translation);
|
||||
translation_read(translation);
|
||||
}
|
||||
}
|
||||
|
||||
void translation_init(void)
|
||||
{
|
||||
translation_reset();
|
||||
|
||||
current_translation = NULL;
|
||||
settings_add_str("misc", "translation", "");
|
||||
signal_add("setup changed", (SIGNAL_FUNC) read_settings);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user