From 03f2123447b1a5537db1cdde016eb87eb2d2371f Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch
Date: Wed, 6 Oct 2021 16:09:35 +0200
Subject: GLib-related improvements
Now all error messages produced by tools should be in the right
encoding, even if the system isn't in UTF-8.
---
CMakeLists.txt | 2 +-
README.adoc | 4 ++--
src/add-pronunciation.c | 2 +-
src/transform.c | 11 +++++------
src/utils.c | 3 ++-
5 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e46ec37..e1cff26 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -15,7 +15,7 @@ set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package (ZLIB REQUIRED)
find_package (Ncursesw REQUIRED)
find_package (PkgConfig REQUIRED)
-pkg_check_modules (dependencies REQUIRED glib-2.0 gio-2.0 pango)
+pkg_check_modules (dependencies REQUIRED glib-2.0>=2.38 gio-2.0 pango)
pkg_check_modules (icu icu-uc icu-i18n)
if (NOT icu_FOUND)
diff --git a/README.adoc b/README.adoc
index d225bbb..4f98061 100644
--- a/README.adoc
+++ b/README.adoc
@@ -31,8 +31,8 @@ a package with the latest development version from Archlinux's AUR.
Building and Running
--------------------
Build dependencies: CMake, pkg-config, asciidoctor +
-Runtime dependencies: ncursesw, zlib, ICU, termo (included),
- glib-2.0, pango, xcb, xcb-xfixes (the latter two optional)
+Runtime dependencies: ncursesw, zlib, ICU, termo (included), glib-2.0 >= 2.38,
+ pango, xcb, xcb-xfixes (the latter two optional)
$ git clone --recursive https://git.janouch.name/p/sdtui.git
$ mkdir sdtui/build
diff --git a/src/add-pronunciation.c b/src/add-pronunciation.c
index eb0d464..d409c9d 100644
--- a/src/add-pronunciation.c
+++ b/src/add-pronunciation.c
@@ -150,7 +150,7 @@ worker_writer (WorkerData *data)
stardict_iterator_next (data->iterator);
if (fprintf (data->child_stdin, "%s\n", x) < 0)
- fatal ("write to eSpeak failed: %s\n", strerror (errno));
+ fatal ("write to eSpeak failed: %s\n", g_strerror (errno));
g_free (x);
}
diff --git a/src/transform.c b/src/transform.c
index f9909b7..e3e8d4d 100644
--- a/src/transform.c
+++ b/src/transform.c
@@ -76,8 +76,8 @@ write_to_filter (StardictDict *dict, gint fd, GError **error)
if (write (fd, field->data, field->data_size)
!= (ssize_t) field->data_size)
{
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "%s", strerror (errno));
+ g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+ "%s", g_strerror (errno));
return FALSE;
}
}
@@ -117,7 +117,7 @@ update_from_filter (StardictDict *dict, Generator *generator,
gchar *end = memchr (filtered, 0, filtered_end - filtered);
if (!end)
{
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_PARTIAL_INPUT,
"filter seems to have ended too early");
return FALSE;
}
@@ -176,7 +176,6 @@ main (int argc, char *argv[])
("input.ifo output-basename -- FILTER [ARG...]");
g_option_context_set_summary
(ctx, "Transform dictionaries using a filter program.");
- g_option_context_set_description (ctx, "Test?");
if (!g_option_context_parse (ctx, &argc, &argv, &error))
fatal ("Error: option parsing failed: %s\n", error->message);
@@ -202,7 +201,7 @@ main (int argc, char *argv[])
FILE *child_out = tmpfile ();
if (!child_out)
- fatal ("tmpfile: %s\n", strerror (errno));
+ fatal ("tmpfile: %s\n", g_strerror (errno));
GPid pid = -1;
if (!g_spawn_async_with_fds (NULL /* working_directory */,
@@ -221,7 +220,7 @@ main (int argc, char *argv[])
int wstatus = errno = 0;
if (waitpid (pid, &wstatus, 0) < 1
|| !WIFEXITED (wstatus) || WEXITSTATUS (wstatus) > 0)
- fatal ("Filter failed (%s, status %d)\n", strerror (errno), wstatus);
+ fatal ("Filter failed (%s, status %d)\n", g_strerror (errno), wstatus);
GMappedFile *filtered = g_mapped_file_new_from_fd (fileno (child_out),
FALSE /* writable */, &error);
diff --git a/src/utils.c b/src/utils.c
index 89cca9a..8c63548 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -17,6 +17,7 @@
*/
#include