summaryrefslogtreecommitdiff
path: root/0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-06 02:29:45 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-06 02:29:45 +0000
commit270f9116726f7716112d3b3183629fe0f862564c (patch)
tree3dc972ac99297758c879cdfc8eab26198ba5d792 /0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch
parent84a8a4c14528400bffb6de1ac255f7925f344d1a (diff)
automatic import of libnotifyopeneuler24.03_LTS
Diffstat (limited to '0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch')
-rw-r--r--0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch139
1 files changed, 139 insertions, 0 deletions
diff --git a/0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch b/0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch
new file mode 100644
index 0000000..3cf41c0
--- /dev/null
+++ b/0001-notify-send-Give-failing-exit-code-if-showing-notifi.patch
@@ -0,0 +1,139 @@
+From 390500fc0c806ed347f76afcfe8a62a74653e81b Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Tue, 12 May 2020 10:12:26 -0400
+Subject: [PATCH] notify-send: Give failing exit code if showing notification
+ fails
+
+Right now notify-send will quietly return a successful exit status
+even if showing the notification fails.
+
+This commit changes the behavior to instead fail on failure.
+
+https://gitlab.gnome.org/GNOME/libnotify/-/merge_requests/13
+---
+ tools/notify-send.c | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/tools/notify-send.c b/tools/notify-send.c
+index 67e0b03..52fa46a 100644
+--- a/tools/notify-send.c
++++ b/tools/notify-send.c
+@@ -105,61 +105,61 @@ notify_notification_set_hint_variant (NotifyNotification *notification,
+ N_("Invalid hint type \"%s\". Valid types "
+ "are int, double, string and byte."),
+ type);
+ return FALSE;
+ }
+
+ if (conv_error) {
+ *error = g_error_new (G_OPTION_ERROR,
+ G_OPTION_ERROR_BAD_VALUE,
+ N_("Value \"%s\" of hint \"%s\" could not be "
+ "parsed as type \"%s\"."), value, key,
+ type);
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ int
+ main (int argc, char *argv[])
+ {
+ static const char *summary = NULL;
+ char *body;
+ static const char *type = NULL;
+ static char *app_name = NULL;
+ static char *icon_str = NULL;
+ static char *icons = NULL;
+ static char **n_text = NULL;
+ static char **hints = NULL;
+ static gboolean do_version = FALSE;
+- static gboolean hint_error = FALSE;
++ static gboolean hint_error = FALSE, show_error = FALSE;
+ static glong expire_timeout = NOTIFY_EXPIRES_DEFAULT;
+ GOptionContext *opt_ctx;
+ NotifyNotification *notify;
+ GError *error = NULL;
+ gboolean retval;
+
+ static const GOptionEntry entries[] = {
+ {"urgency", 'u', 0, G_OPTION_ARG_CALLBACK,
+ g_option_arg_urgency_cb,
+ N_("Specifies the urgency level (low, normal, critical)."),
+ N_("LEVEL")},
+ {"expire-time", 't', 0, G_OPTION_ARG_INT, &expire_timeout,
+ N_
+ ("Specifies the timeout in milliseconds at which to expire the "
+ "notification."), N_("TIME")},
+ {"app-name", 'a', 0, G_OPTION_ARG_STRING, &app_name,
+ N_("Specifies the app name for the icon"), N_("APP_NAME")},
+ {"icon", 'i', 0, G_OPTION_ARG_FILENAME, &icons,
+ N_("Specifies an icon filename or stock icon to display."),
+ N_("ICON[,ICON...]")},
+ {"category", 'c', 0, G_OPTION_ARG_FILENAME, &type,
+ N_("Specifies the notification category."),
+ N_("TYPE[,TYPE...]")},
+ {"hint", 'h', 0, G_OPTION_ARG_FILENAME_ARRAY, &hints,
+ N_
+ ("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
+ N_("TYPE:NAME:VALUE")},
+ {"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
+ N_("Version of the package."),
+ NULL},
+@@ -247,39 +247,49 @@ main (int argc, char *argv[])
+
+ while ((hint = hints[i++])) {
+ tokens = g_strsplit (hint, ":", 3);
+ l = g_strv_length (tokens);
+
+ if (l != 3) {
+ fprintf (stderr, "%s\n",
+ N_("Invalid hint syntax specified. "
+ "Use TYPE:NAME:VALUE."));
+ hint_error = TRUE;
+ } else {
+ retval = notify_notification_set_hint_variant (notify,
+ tokens[0],
+ tokens[1],
+ tokens[2],
+ &error);
+
+ if (!retval) {
+ fprintf (stderr, "%s\n", error->message);
+ g_error_free (error);
+ hint_error = TRUE;
+ }
+ }
+
+ g_strfreev (tokens);
+ if (hint_error)
+ break;
+ }
+ }
+
+- if (!hint_error)
+- notify_notification_show (notify, NULL);
++ if (!hint_error) {
++ retval = notify_notification_show (notify, &error);
++
++ if (!retval) {
++ fprintf (stderr, "%s\n", error->message);
++ g_error_free (error);
++ show_error = TRUE;
++ }
++ }
+
+ g_object_unref (G_OBJECT (notify));
+
+ notify_uninit ();
+
+- exit (hint_error);
++ if (hint_error || show_error)
++ exit (1);
++
++ return 0;
+ }
+--
+2.33.1
+