degesch: little step towards localisation

We don't use LC_MESSAGES, though, so it doesn't really matter as of now.

liberty currently isn't prepared for non-ASCII errors or filenames,
and just silently expects everything to be in the same all-compatible
encoding.  degesch further expects the encoding to be UTF-8.

All strings should ideally be converted to UTF-8 as soon as possible.
This commit is contained in:
Přemysl Eric Janouch 2015-12-25 21:22:59 +01:00
parent e101afab38
commit b7dd384048

View File

@ -2548,6 +2548,7 @@ irc_to_term (struct app_context *ctx, const char *text)
// Format strings use a #-quoted notation, to differentiate from printf: // Format strings use a #-quoted notation, to differentiate from printf:
// #s inserts a string (expected to be in UTF-8) // #s inserts a string (expected to be in UTF-8)
// #d inserts a signed integer // #d inserts a signed integer
// #l inserts a locale-encoded string
// //
// #S inserts a string from the server with unknown encoding // #S inserts a string from the server with unknown encoding
// #m inserts a mIRC-formatted string (auto-resets at boundaries) // #m inserts a mIRC-formatted string (auto-resets at boundaries)
@ -2767,6 +2768,14 @@ restart:
case 's': case 's':
str_append (buf, (s = va_arg (*ap, char *))); str_append (buf, (s = va_arg (*ap, char *)));
break; break;
case 'l':
if (!(tmp = iconv_xstrdup (self->ctx->term_to_utf8,
(s = va_arg (*ap, char *)), -1, NULL)))
print_error ("character conversion failed for: %s", "output");
else
str_append (buf, tmp);
free (tmp);
break;
case 'S': case 'S':
tmp = irc_to_utf8 (self->ctx, (s = va_arg (*ap, char *))); tmp = irc_to_utf8 (self->ctx, (s = va_arg (*ap, char *)));
@ -3228,7 +3237,7 @@ buffer_open_log_file (struct app_context *ctx, struct buffer *buffer)
char *path = buffer_get_log_path (buffer); char *path = buffer_get_log_path (buffer);
if (!(buffer->log_file = fopen (path, "ab"))) if (!(buffer->log_file = fopen (path, "ab")))
log_global_error (ctx, "Couldn't open log file `#s': #s", log_global_error (ctx, "Couldn't open log file `#s': #l",
path, strerror (errno)); path, strerror (errno));
else else
set_cloexec (fileno (buffer->log_file)); set_cloexec (fileno (buffer->log_file));
@ -9664,7 +9673,7 @@ process_input (struct app_context *ctx, char *user_input)
{ {
char *input; char *input;
if (!(input = iconv_xstrdup (ctx->term_to_utf8, user_input, -1, NULL))) if (!(input = iconv_xstrdup (ctx->term_to_utf8, user_input, -1, NULL)))
print_error ("character conversion failed for `%s'", "user input"); print_error ("character conversion failed for: %s", "user input");
else else
{ {
struct str_vector lines; struct str_vector lines;
@ -10173,7 +10182,7 @@ launch_backlog_helper (struct app_context *ctx, FILE *backlog)
"Failed to launch backlog helper", strerror (errno)); "Failed to launch backlog helper", strerror (errno));
_exit (EXIT_FAILURE); _exit (EXIT_FAILURE);
case -1: case -1:
log_global_error (ctx, "#s: #s", log_global_error (ctx, "#s: #l",
"Failed to launch backlog helper", strerror (errno)); "Failed to launch backlog helper", strerror (errno));
break; break;
default: default:
@ -10187,7 +10196,7 @@ display_backlog (struct app_context *ctx)
FILE *backlog = tmpfile (); FILE *backlog = tmpfile ();
if (!backlog) if (!backlog)
{ {
log_global_error (ctx, "#s: #s", log_global_error (ctx, "#s: #l",
"Failed to create a temporary file", strerror (errno)); "Failed to create a temporary file", strerror (errno));
return; return;
} }
@ -10211,7 +10220,7 @@ display_full_log (struct app_context *ctx)
if (!full_log) if (!full_log)
{ {
log_global_error (ctx, "Failed to open log file for #s: #s", log_global_error (ctx, "Failed to open log file for #s: #l",
ctx->current_buffer->name, strerror (errno)); ctx->current_buffer->name, strerror (errno));
return; return;
} }
@ -10280,7 +10289,7 @@ launch_input_editor (struct app_context *ctx)
"Failed to launch editor", strerror (errno)); "Failed to launch editor", strerror (errno));
_exit (EXIT_FAILURE); _exit (EXIT_FAILURE);
case -1: case -1:
log_global_error (ctx, "#s: #s", log_global_error (ctx, "#s: #l",
"Failed to launch editor", strerror (errno)); "Failed to launch editor", strerror (errno));
free (filename); free (filename);
break; break;
@ -10310,7 +10319,7 @@ process_edited_input (struct app_context *ctx)
"could not re-insert the modified text"); "could not re-insert the modified text");
if (unlink (ctx->editor_filename)) if (unlink (ctx->editor_filename))
log_global_error (ctx, "Could not unlink `#s': #s", log_global_error (ctx, "Could not unlink `#s': #l",
ctx->editor_filename, strerror (errno)); ctx->editor_filename, strerror (errno));
free (ctx->editor_filename); free (ctx->editor_filename);