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 +#include #include #include #include @@ -107,7 +108,7 @@ fatal (const gchar *format, ...) { va_list ap; va_start (ap, format); - vfprintf (stderr, format, ap); + g_vfprintf (stderr, format, ap); exit (EXIT_FAILURE); va_end (ap); } -- cgit v1.2.3-70-g09d2