From 2053441bede22555c17c6c23c5dcc4129fba0ec8 Mon Sep 17 00:00:00 2001 From: oreo639 Date: Thu, 29 Feb 2024 14:46:27 -0800 Subject: [PATCH 1/2] Use GUri instead of libsoup-2.4 and use webkit2gtk-4.1 --- CMakeLists.txt | 11 +++++------ src/astroid.cc | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8613572ec..77d50d571 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,11 +95,13 @@ endif() pkg_check_modules (GTKMM3 REQUIRED gtkmm-3.0>=3.10) pkg_check_modules (GLIBMM2 REQUIRED glibmm-2.4) -pkg_check_modules (WEBKIT2GTK REQUIRED webkit2gtk-4.0>=2.22) +pkg_check_modules (WEBKIT2GTK webkit2gtk-4.1) +if (NOT WEBKIT2GTK_FOUND) + pkg_check_modules (WEBKIT2GTK REQUIRED webkit2gtk-4.0>=2.22) +endif () pkg_check_modules (SASS REQUIRED libsass) pkg_check_modules (GIOMM2 REQUIRED giomm-2.4) -pkg_check_modules (GIOUNIX REQUIRED gio-unix-2.0) -pkg_check_modules (LIBSOUP REQUIRED libsoup-2.4) +pkg_check_modules (GIOUNIX REQUIRED gio-unix-2.0>=2.66) string (REGEX REPLACE "([0-9]+\.[0-9]+)\.[0-9]+" "\\1" GMIME_MAJOR_MINOR ${Notmuch_GMIME_VERSION}) pkg_check_modules (GMIME REQUIRED gmime-${GMIME_MAJOR_MINOR}>=${Notmuch_GMIME_VERSION}) @@ -154,7 +156,6 @@ include_directories ( ${GLIBMM2_INCLUDE_DIRS} ${GIOMM2_INCLUDE_DIRS} ${GIOUNIX_INCLUDE_DIRS} - ${LIBSOUP_INCLUDE_DIRS} ${GMIME_INCLUDE_DIRS} ${WEBKIT2GTK_INCLUDE_DIRS} ${VTE2_INCLUDE_DIRS} @@ -169,7 +170,6 @@ add_compile_options ( ${GLIBMM2_CFLAGS} ${GIOMM2_CFLAGS} ${GIOUNIX_CFLAGS} - ${LIBSOUP_CFLAGS} ${GMIME_CFLAGS} ${WEBKIT2GTK_CFLAGS} ${VTE2_CFLAGS} @@ -339,7 +339,6 @@ target_link_libraries ( ${GLIBMM2_LDFLAGS} ${GIOMM2_LDFLAGS} ${GIOUNIX_LDFLAGS} - ${LIBSOUP_LDFLAGS} ${GMIME_LDFLAGS} ${VTE2_LDFLAGS} ${SASS_LDFLAGS} diff --git a/src/astroid.cc b/src/astroid.cc index 3d5dc9f54..a312aca9d 100644 --- a/src/astroid.cc +++ b/src/astroid.cc @@ -6,6 +6,8 @@ # include # include +# include + /* program options */ # include # include @@ -53,8 +55,6 @@ # include # include -# include - using namespace std; using namespace boost::filesystem; @@ -550,17 +550,18 @@ namespace Astroid { MainWindow * mw = (MainWindow*) get_windows ()[0]; - SoupURI *uri = soup_uri_new(url.c_str()); + GUriFlags guriflags = (GUriFlags)(G_URI_FLAGS_ENCODED_PATH | G_URI_FLAGS_ENCODED_QUERY | G_URI_FLAGS_ENCODED_FRAGMENT | G_URI_FLAGS_PARSE_RELAXED); + GUri *guri = g_uri_parse (url.c_str(), guriflags, NULL); - if (SOUP_URI_IS_VALID(uri)) { + if (guri) { /* we got an mailto url */ ustring from, to, cc, bcc, subject, body; - to = soup_uri_decode (soup_uri_get_path (uri)); + to = g_uri_unescape_string (g_uri_get_path (guri), NULL); - const char * soup_query = soup_uri_get_query (uri); - if (soup_query) { - std::istringstream query_string (soup_query); + const char * uri_query = g_uri_get_query (guri); + if (uri_query) { + std::istringstream query_string (uri_query); std::string keyval; while (std::getline(query_string, keyval, '&')) { ustring::size_type pos = keyval.find ("="); @@ -568,7 +569,7 @@ namespace Astroid { ustring key = keyval.substr (0, pos); key = key.lowercase (); - ustring val = soup_uri_decode (keyval.substr (pos+1).c_str()); + ustring val = g_uri_unescape_string (keyval.substr (pos+1).c_str(), NULL); if (key == "from") { from = ustring (val); @@ -591,7 +592,7 @@ namespace Astroid { mw->add_mode (new EditMessage (mw, url)); } - soup_uri_free (uri); + g_uri_unref (guri); } int Astroid::hint_level () { From 9d26dbd61e7557f70d2f648e6d2574e49fffa658 Mon Sep 17 00:00:00 2001 From: oreo639 Date: Tue, 4 Jun 2024 17:38:39 -0700 Subject: [PATCH 2/2] ci: Remove Focal target 4 years old release and doesn't support glib 2.66+ (necessary for GUri). --- .github/workflows/ci-debian-build-test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci-debian-build-test.yml b/.github/workflows/ci-debian-build-test.yml index 3015b7f06..3a905139d 100644 --- a/.github/workflows/ci-debian-build-test.yml +++ b/.github/workflows/ci-debian-build-test.yml @@ -17,9 +17,6 @@ jobs: - image: 'debian:bullseye' env: WEBKITGTK_VERSION: '4.0' - - image: 'ubuntu:focal' - env: - WEBKITGTK_VERSION: '4.0' - image: 'debian:sid' env: WEBKITGTK_VERSION: '4.1'