Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libnotify for openSUSE:Factory checked in at 2026-10-23 20:21:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libnotify (Old) and /work/SRC/openSUSE:Factory/.libnotify.new.2252680 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libnotify" Fri Oct 23 20:21:10 2026 rev:52 rq:1386719 version:0.8.9 Changes: -------- --- /work/SRC/openSUSE:Factory/libnotify/libnotify.changes 2026-03-27 16:49:44.876034359 +0100 +++ /work/SRC/openSUSE:Factory/.libnotify.new.2252680/libnotify.changes 2026-10-23 20:21:22.444188534 +0200 @@ -1,0 +2,25 @@ +Sun Oct 18 04:56:49 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 0.8.9: + * This is a maintenance release, mostly with bug fixes around notify-send + behaviors and portal notifications, together with more tests coverage for + hints edge cases, and some library cleanups: + + Notify-send: + - Start action ID from 1 as docs states + - Fix the activation token FD validity check + - Don't write the notification ID and action to stdin + - Don't cache the hint conversion error + + Notify: Free the application name and icon on uninit + + Notification: + - Do not send the default action as a button in portal notifications + - Read the icon contents using g_file_load_contents() + - Use g_clear_handle_id() for the portal timeout + + Tests/notify-send: + - Add tests for the default action button + - Verify behavior on invalid hints + + Launch-context: Don't omit parameter names in vfunc implementation + + Bugs fixed: + - portal: "default" action adds additional button + - Omitted parameter names in a vfunc implementation + +------------------------------------------------------------------- Old: ---- libnotify-0.8.8.tar.xz New: ---- libnotify-0.8.9.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libnotify.spec ++++++ --- /var/tmp/diff_new_pack.fiLcfy/_old 2026-10-23 20:21:23.299224315 +0200 +++ /var/tmp/diff_new_pack.fiLcfy/_new 2026-10-23 20:21:23.301224399 +0200 @@ -17,7 +17,7 @@ Name: libnotify -Version: 0.8.8 +Version: 0.8.9 Release: 0 Summary: Notifications Library License: LGPL-2.1-or-later ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.fiLcfy/_old 2026-10-23 20:21:23.331225654 +0200 +++ /var/tmp/diff_new_pack.fiLcfy/_new 2026-10-23 20:21:23.334225780 +0200 @@ -1,6 +1,7 @@ -mtime: 1774262915 -commit: 95e229b7682ed902e5222a694238f09eda1855b3fad3af7d3e88385a286bcf65 +mtime: 1792299863 +commit: 5927c095685e257320f5b100dd6967941294e18e7ae2808d6eb1beaec86f432a url: https://src.opensuse.org/GNOME/libnotify -revision: 95e229b7682ed902e5222a694238f09eda1855b3fad3af7d3e88385a286bcf65 +revision: 5927c095685e257320f5b100dd6967941294e18e7ae2808d6eb1beaec86f432a +trackingbranch: factory projectscmsync: https://src.opensuse.org/GNOME/_ObsPrj ++++++ _service ++++++ --- /var/tmp/diff_new_pack.fiLcfy/_old 2026-10-23 20:21:23.355226659 +0200 +++ /var/tmp/diff_new_pack.fiLcfy/_new 2026-10-23 20:21:23.359226826 +0200 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/libnotify.git</param> - <param name="revision">0.8.8</param> + <param name="revision">0.8.9</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-10-18 07:04:23.000000000 +0200 @@ -0,0 +1,5 @@ +*.obscpio +*.osc +_build.* +.pbuild +osc-collab.* ++++++ libnotify-0.8.8.tar.xz -> libnotify-0.8.9.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/.gitlab-ci.yml new/libnotify-0.8.9/.gitlab-ci.yml --- old/libnotify-0.8.8/.gitlab-ci.yml 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/.gitlab-ci.yml 2026-10-17 22:10:15.000000000 +0200 @@ -1,9 +1,9 @@ variables: DEBIAN_FRONTEND: noninteractive - MESON_TEST_TIMEOUT_MULTIPLIER: 3 - MESON_BUILD_DIR: _build + TEST_TIMEOUT_MULTIPLIER: 3 + BUILD_DIR: _build DOCS_BUILD_DIR: _reference - TARBALL_ARTIFACT_PATH: ${MESON_BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz + TARBALL_ARTIFACT_PATH: ${BUILD_DIR}/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz include: - component: "gitlab.gnome.org/GNOME/citemplates/release-service@master" @@ -66,7 +66,7 @@ gi-docgen xvfb script: - - meson setup ${MESON_BUILD_DIR} -Ddocbook_docs=enabled + - meson setup ${BUILD_DIR} -Ddocbook_docs=enabled build:ubuntu: stage: build @@ -74,14 +74,14 @@ - .build:ubuntu:base script: - !reference [".build:ubuntu:base", "script"] - - meson install -C ${MESON_BUILD_DIR} - - mv ${MESON_BUILD_DIR}/docs/reference/libnotify-0 ${DOCS_BUILD_DIR} + - meson install -C ${BUILD_DIR} + - mv ${BUILD_DIR}/docs/reference/libnotify-0 ${DOCS_BUILD_DIR} artifacts: expose_as: "Build artifacts" paths: - - ${MESON_BUILD_DIR}/docs/notification-spec.html + - ${BUILD_DIR}/docs/notification-spec.html - ${DOCS_BUILD_DIR} - - ${MESON_BUILD_DIR}/meson-logs + - ${BUILD_DIR}/meson-logs build:coverage:ubuntu: stage: build @@ -91,21 +91,21 @@ - !reference [".build:ubuntu:base", "before_script"] - apt-get install -q -y gcovr script: - - meson setup ${MESON_BUILD_DIR} -Db_coverage=true - - meson test -C ${MESON_BUILD_DIR} --print-errorlogs - - ninja -C ${MESON_BUILD_DIR} coverage || true - - cat ${MESON_BUILD_DIR}/meson-logs/coverage.txt || true + - meson setup ${BUILD_DIR} -Db_coverage=true + - meson test -C ${BUILD_DIR} --print-errorlogs -t ${TEST_TIMEOUT_MULTIPLIER} + - ninja -C ${BUILD_DIR} coverage || true + - cat ${BUILD_DIR}/meson-logs/coverage.txt || true artifacts: reports: - junit: ${MESON_BUILD_DIR}/meson-logs/testlog.junit.xml + junit: ${BUILD_DIR}/meson-logs/testlog.junit.xml coverage_report: coverage_format: cobertura - path: ${MESON_BUILD_DIR}/meson-logs/coverage.xml + path: ${BUILD_DIR}/meson-logs/coverage.xml expose_as: 'Coverage Report' when: always paths: - - ${MESON_BUILD_DIR}/meson-logs - - ${MESON_BUILD_DIR}/meson-logs/coveragereport/index.html + - ${BUILD_DIR}/meson-logs + - ${BUILD_DIR}/meson-logs/coveragereport/index.html expire_in: 1 week coverage: '/^TOTAL.*\s+(\d+\%)$/' @@ -118,7 +118,7 @@ - apt-get install -q -y git script: - !reference [".build:ubuntu:base", "script"] - - meson dist -C "${MESON_BUILD_DIR}" --include-subprojects + - meson dist -C "${BUILD_DIR}" --include-subprojects artifacts: name: "${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" when: "always" @@ -135,7 +135,7 @@ script: - mkdir public - mv ${DOCS_BUILD_DIR}/* public/ - - mv ${MESON_BUILD_DIR}/meson-logs/coveragereport public/coverage + - mv ${BUILD_DIR}/meson-logs/coveragereport public/coverage artifacts: when: on_success paths: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/NEWS new/libnotify-0.8.9/NEWS --- old/libnotify-0.8.8/NEWS 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/NEWS 2026-10-17 22:10:15.000000000 +0200 @@ -1,3 +1,32 @@ +New in 0.8.9 +============ + +This is a maintenance release, mostly with bug fixes around notify-send +behaviors and portal notifications, together with more tests coverage for +hints edge cases, and some library cleanups. + +* notify-send: Start action ID from 1 as docs states [Marco] +* notification: Do not send the default action as a button in portal + notifications [Cajus] +* notify-send: Fix the activation token FD validity check [Marco] +* notify-send: Don't write the notification ID and action to stdin [Marco] +* notify: Free the application name and icon on uninit [Cajus] +* notification: Read the icon contents using g_file_load_contents() [Cajus] +* notification: Use g_clear_handle_id() for the portal timeout [Cajus] +* notify-send: Don't cache the hint conversion error [Cajus] +* tests/notify-send: Add tests for the default action button [Cajus] +* tests/notify-send: Verify behavior on invalid hints [Marco] +* launch-context: Don't omit parameter names in vfunc implementation [Logan] +* ci: Do not involve MESON into non-meson env variables [Marco] +* ci: Actually use the meson test multiplier value [Marco] + +* Bugs fixed: + - #66 portal: "default" action adds additional button [Cajus] + - #67 Omitted parameter names in a vfunc implementation [Logan] + +Contributors: + Cajus Pollmeier, Logan Rathbone, Marco Trevisan + New in 0.8.8 ============ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/libnotify/launch-context.c new/libnotify-0.8.9/libnotify/launch-context.c --- old/libnotify-0.8.8/libnotify/launch-context.c 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/libnotify/launch-context.c 2026-10-17 22:10:15.000000000 +0200 @@ -49,8 +49,8 @@ static char * notification_app_launch_context_get_startup_notify_id (GAppLaunchContext *context, - GAppInfo *, - GList *) + GAppInfo *info G_GNUC_UNUSED, + GList *files G_GNUC_UNUSED) { NotificationAppLaunchContext *self = NOTIFICATION_APP_LAUNCH_CONTEXT (context); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/libnotify/notification.c new/libnotify-0.8.9/libnotify/notification.c --- old/libnotify-0.8.8/libnotify/notification.c 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/libnotify/notification.c 2026-10-17 22:10:15.000000000 +0200 @@ -879,10 +879,7 @@ GVariant *ret; gchar *notification_id; - if (priv->portal_timeout_id) { - g_source_remove (priv->portal_timeout_id); - priv->portal_timeout_id = 0; - } + g_clear_handle_id (&priv->portal_timeout_id, g_source_remove); notification_id = get_portal_notification_id (notification); @@ -933,8 +930,10 @@ { NotifyNotificationPrivate *priv = notify_notification_get_instance_private (notification); - GFileInputStream *input; g_autoptr(GFile) file = NULL; + g_autofree gchar *contents = NULL; + g_autoptr(GByteArray) bytes_array = NULL; + gsize length; if (priv->icon_pixbuf) { return G_ICON (g_object_ref (priv->icon_pixbuf)); @@ -952,37 +951,12 @@ return g_themed_icon_new (priv->icon_name); } - if (!(input = g_file_read (file, NULL, error))) { + if (!g_file_load_contents (file, NULL, &contents, &length, NULL, error)) { return NULL; } - g_autoptr(GByteArray) bytes_array = g_byte_array_new (); - g_autoptr(GInputStream) buffered_stream = NULL; - - buffered_stream = g_buffered_input_stream_new (G_INPUT_STREAM (input)); - - while (TRUE) { - gssize read; - - read = g_buffered_input_stream_fill (G_BUFFERED_INPUT_STREAM (buffered_stream), - -1, NULL, error); - - if (read < 0) { - return NULL; - } - - if (read > 0) { - gconstpointer buffer; - gsize buffer_size; - - buffer = g_buffered_input_stream_peek_buffer (G_BUFFERED_INPUT_STREAM (buffered_stream), - &buffer_size); - g_byte_array_append (bytes_array, buffer, buffer_size); - continue; - } - - break; - } + bytes_array = g_byte_array_new_take ((guint8 *) g_steal_pointer (&contents), + length); if (bytes_array->len) { g_autoptr(GBytes) bytes = NULL; @@ -1034,6 +1008,10 @@ GVariantBuilder button; ActionInfo *ai = g_ptr_array_index (priv->actions, i); + if (g_ascii_strcasecmp (ai->id, "default") == 0) { + continue; + } + g_variant_builder_init (&button, G_VARIANT_TYPE_VARDICT); g_variant_builder_add (&button, "{sv}", "action", @@ -1101,11 +1079,7 @@ NULL, error); - if (priv->portal_timeout_id) { - g_source_remove (priv->portal_timeout_id); - priv->portal_timeout_id = 0; - } - + g_clear_handle_id (&priv->portal_timeout_id, g_source_remove); g_free (notification_id); if (!ret) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/libnotify/notify.c new/libnotify-0.8.9/libnotify/notify.c --- old/libnotify-0.8.8/libnotify/notify.c 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/libnotify/notify.c 2026-10-17 22:10:15.000000000 +0200 @@ -497,8 +497,6 @@ return; } - g_clear_pointer (&_app_name, g_free); - for (l = _active_notifications; l != NULL; l = l->next) { NotifyNotification *n = NOTIFY_NOTIFICATION (l->data); @@ -510,6 +508,9 @@ g_object_run_dispose (G_OBJECT (n)); } + g_clear_pointer (&_app_name, g_free); + g_clear_pointer (&_app_icon, g_free); + g_clear_object (&_proxy); g_clear_pointer (&_snap_name, g_free); g_clear_pointer (&_snap_app, g_free); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/meson.build new/libnotify-0.8.9/meson.build --- old/libnotify-0.8.8/meson.build 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/meson.build 2026-10-17 22:10:15.000000000 +0200 @@ -1,6 +1,6 @@ project('libnotify', 'c', - version: '0.8.8', + version: '0.8.9', meson_version: '>= 0.64.0') fs = import('fs') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/tests/test_notify_send.py new/libnotify-0.8.9/tests/test_notify_send.py --- old/libnotify-0.8.8/tests/test_notify_send.py 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/tests/test_notify_send.py 2026-10-17 22:10:15.000000000 +0200 @@ -339,6 +339,46 @@ }, ) + def test_invalid_hint(self): + """notify-send with an invalid hint is not shown""" + + # Any hint error stops the parsing, so nothing is ever shown + invalid_hints = { + "unknown-type:hint:value": + 'Invalid hint type "unknown-type"', + "string:just-a-name": + "Invalid hint syntax specified. Use TYPE:NAME:VALUE.", + "int:int-hint:not-a-number": + 'Value "not-a-number" of hint "int-hint" could not be parsed ' + 'as type "int".', + "double:double-hint:not-a-number": + 'Value "not-a-number" of hint "double-hint" could not be ' + 'parsed as type "double".', + "byte:byte-hint:300": + 'Value "300" of hint "byte-hint" could not be parsed as ' + 'type "byte".', + "byte:byte-hint:0x100": + 'Value "0x100" of hint "byte-hint" could not be parsed as ' + 'type "byte".', + "variant:variant-hint:not-a-variant": + 'Value "not-a-variant" of hint "variant-hint" could not be ' + 'parsed as type "variant".', + } + + for hint, expected_error in invalid_hints.items(): + with self.subTest(hint=hint): + ns_proc = self.notify_send_proc( + ["-h", hint, "hints!"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + [stdout, stderr] = ns_proc.communicate(timeout=5) + + self.assertEqual(ns_proc.returncode, 1) + self.assertIn(expected_error, stderr.decode("utf-8")) + self.assertNoDaemonCall("Notify") + def test_actions_not_supported(self): """notify-send with action not supported""" @@ -410,7 +450,7 @@ action_id = action[1] args.append(f"--action={action_id}={label}") else: - action_id = str(int(len(exp_actions) / 2)) + action_id = str(int(len(exp_actions) / 2) + 1) args.append(f"--action={label}") if action_id in exp_actions: @@ -482,7 +522,7 @@ def test_activate_numeric_action(self): """notify-send with action""" - self.check_activate_action(0) + self.check_activate_action(1) def test_activate_named_action(self): """notify-send with action""" @@ -490,7 +530,7 @@ def test_activate_third_unnamed_action(self): """notify-send with action""" - self.check_activate_action(action_id=2, actions=[ + self.check_activate_action(action_id=3, actions=[ ("foo",), ("default", "id"), ("baz",)]) def test_activate_replaced_action(self): @@ -520,6 +560,31 @@ self.assertFalse(tmp.readlines()) + def test_default_action_is_kept(self): + """The default action is only filtered out in the portal path, standard + FDO action list must keep it""" + [ns_proc, _] = self.notify_send_wait_id([ + "action!", "Body", + "--action=default=Default label", + "--action=foo=Foo label", + ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + notification = self.assertDaemonCall("Notify") + self.assertNotificationMatches( + notification, + exp_summary="action!", + exp_body="Body", + exp_actions=["default", "Default label", "foo", "Foo label"], + exp_hints={ + "urgency": 1, + "sender-pid": ns_proc.pid, + }, + ) + + ns_proc.send_signal(signal.SIGINT) + ns_proc.communicate(timeout=5) + self.assertEqual(ns_proc.returncode, 0) + def test_close_notification(self): [ns_proc, notification_id] = self.show_actions_notification([("Foo",)]) @@ -713,7 +778,7 @@ action_id = action[1] args.append(f"--action={action_id}={label}") else: - action_id = str(int(len(exp_actions))) + action_id = str(int(len(exp_actions)) + 1) args.append(f"--action={label}") other = [a for a in exp_actions if a["action"] == action_id] @@ -765,9 +830,27 @@ self.assertIn(action_id, stdout.decode('utf-8')) self.assertEqual(ns_proc.returncode, 0) + def notification_options_for_actions(self, actions): + """Shows a notification with the given action/label pairs and returns + the options received by the portal""" + + args = ["action!", "Body"] + args += [f"--action={action_id}={label}" for label, action_id in actions] + + [ns_proc, _] = self.notify_send_wait_id(args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + + [_, notification] = self.assertDaemonCall("AddNotification") + + ns_proc.send_signal(signal.SIGINT) + ns_proc.communicate(timeout=5) + self.assertEqual(ns_proc.returncode, 0) + + return notification + def test_activate_numeric_action(self): """notify-send with action""" - self.check_activate_action(0) + self.check_activate_action(1) def test_activate_named_action(self): """notify-send with action""" @@ -775,7 +858,7 @@ def test_activate_third_unnamed_action(self): """notify-send with action""" - self.check_activate_action(action_id=2, actions=[ + self.check_activate_action(action_id=3, actions=[ ("foo",), ("default", "id"), ("baz",)]) def test_activate_replaced_action(self): @@ -783,6 +866,45 @@ self.check_activate_action(action_id="foo-action", actions=[ ("Foo", "foo-action"), ("FooBar", "foo-action")]) + def test_default_action_alone_has_no_buttons(self): + """notify-send just with default action must not show a button""" + + notification = self.notification_options_for_actions([ + ("Default label", "default"), + ]) + + self.assertEqual(notification["default-action"], "default") + self.assertNotIn("buttons", notification) + + def test_default_action_is_not_a_button(self): + """notify-send with default action must not show a button for the + default action""" + + notification = self.notification_options_for_actions([ + ("Default label", "default"), + ("Foo label", "foo"), + ]) + + self.assertEqual(notification["default-action"], "default") + self.assertEqual(notification["buttons"], dbus.Array([ + {"label": "Foo label", "action": "foo"}, + ], signature="a{sv}")) + + def test_default_action_is_not_a_button_ignore_case(self): + """notify-send default action is recognized with mixed case""" + + notification = self.notification_options_for_actions([ + ("Foo label", "foo"), + ("Default label", "DefAulT"), + ("Bar label", "bar"), + ]) + + self.assertEqual(notification["default-action"], "default") + self.assertEqual(notification["buttons"], dbus.Array([ + {"label": "Foo label", "action": "foo"}, + {"label": "Bar label", "action": "bar"}, + ], signature="a{sv}")) + def test_activate_invalid_action(self): with TemporaryFD("action-id") as tmpfd: [fd, tmp] = tmpfd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libnotify-0.8.8/tools/notify-send.c new/libnotify-0.8.9/tools/notify-send.c --- old/libnotify-0.8.8/tools/notify-send.c 2026-01-09 04:16:29.000000000 +0100 +++ new/libnotify-0.8.9/tools/notify-send.c 2026-10-17 22:10:15.000000000 +0200 @@ -69,7 +69,7 @@ const char *value, GError **error) { - static gboolean conv_error = FALSE; + gboolean conv_error = FALSE; if (!strcasecmp (type, "string")) { notify_notification_set_hint_string (notification, key, @@ -180,7 +180,7 @@ g_printf ("%s\n", action); - if (action_data->selected_action_fd >= 0) { + if (action_data->selected_action_fd > 0) { write (action_data->selected_action_fd, action, strlen (action)); write (action_data->selected_action_fd, "\n", 1); fsync (action_data->selected_action_fd); @@ -194,13 +194,13 @@ NULL, NULL); g_debug ("Activation Token: %s", activation_token); - if (action_data->activation_token_fd) { + if (action_data->activation_token_fd > 0) { write (action_data->activation_token_fd, activation_token, strlen (activation_token)); } } - if (action_data->activation_token_fd) { + if (action_data->activation_token_fd > 0) { write (action_data->activation_token_fd, "\n", 1); fsync (action_data->activation_token_fd); } @@ -489,7 +489,7 @@ spl = g_strsplit (action, "=", 2); if (g_strv_length (spl) == 1) { - name = g_strdup_printf ("%d", i - 1); + name = g_strdup_printf ("%d", i); label = g_strstrip (spl[0]); } else { name = g_strdup (g_strstrip (spl[0])); @@ -549,7 +549,7 @@ fflush (stdout); } - if (id_fd >= 0) { + if (id_fd > 0) { g_autofree char *id_str = NULL; g_object_get (notify, "id", ¬ification_id, NULL); ++++++ libnotify.obsinfo ++++++ --- /var/tmp/diff_new_pack.fiLcfy/_old 2026-10-23 20:21:23.619237707 +0200 +++ /var/tmp/diff_new_pack.fiLcfy/_new 2026-10-23 20:21:23.622237833 +0200 @@ -1,5 +1,5 @@ name: libnotify -version: 0.8.8 -mtime: 1767928589 -commit: 8b35b6b74e4af71a20b024330b71ce0daf6c022f +version: 0.8.9 +mtime: 1792267815 +commit: 9b53a46b0307fe3a7ddd2545de1e395ee2f94d18
