diff --git a/bin/system-info.c b/bin/system-info.c index a0fa957a2aaf65cf6cffef43fce314796f377d7b..e8fab9c45ceeddc025ce474c5eb35db58aee97c0 100644 --- a/bin/system-info.c +++ b/bin/system-info.c @@ -119,6 +119,7 @@ #include <errno.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <getopt.h> #include <glib.h> @@ -394,6 +395,24 @@ print_libraries_details (JsonBuilder *builder, json_builder_begin_array (builder); jsonify_library_issues (builder, srt_library_get_issues (l->data)); json_builder_end_array (builder); + + int exit_status = srt_library_get_exit_status (l->data); + if (exit_status != 0 && exit_status != -1) + { + json_builder_set_member_name (builder, "exit-status"); + json_builder_add_int_value (builder, exit_status); + } + + int terminating_signal = srt_library_get_terminating_signal (l->data); + if (terminating_signal != 0) + { + json_builder_set_member_name (builder, "terminating-signal"); + json_builder_add_int_value (builder, terminating_signal); + + json_builder_set_member_name (builder, "terminating-signal-name"); + json_builder_add_string_value (builder, strsignal (terminating_signal)); + } + } missing_symbols = srt_library_get_missing_symbols (l->data); @@ -464,6 +483,23 @@ print_graphics_details(JsonBuilder *builder, json_builder_begin_array (builder); jsonify_graphics_issues (builder, srt_graphics_get_issues (g->data)); json_builder_end_array (builder); + int exit_status = srt_graphics_get_exit_status (g->data); + if (exit_status != 0 && exit_status != -1) + { + json_builder_set_member_name (builder, "exit-status"); + json_builder_add_int_value (builder, exit_status); + } + + int terminating_signal = srt_graphics_get_terminating_signal (g->data); + if (terminating_signal != 0) + { + json_builder_set_member_name (builder, "terminating-signal"); + json_builder_add_int_value (builder, terminating_signal); + + json_builder_set_member_name (builder, "terminating-signal-name"); + json_builder_add_string_value (builder, strsignal (terminating_signal)); + } + } json_builder_end_object (builder); // End object for parameters g_free (parameters); diff --git a/steam-runtime-tools/graphics-internal.h b/steam-runtime-tools/graphics-internal.h index a4a5c67df1a599f5c4d09f4832dd12a4a2acf61b..88148a202af7576c1f86f29cbe0986cf8ef61a35 100644 --- a/steam-runtime-tools/graphics-internal.h +++ b/steam-runtime-tools/graphics-internal.h @@ -37,6 +37,8 @@ * @issues: Problems found when checking @multiarch_tuple with * the given @winsys and @renderer. * @messages: Any debug messages found when checking graphics. + * @exit_status: exit status of helper, or -1 if it did not exit normally + * @termination_signal: signal that terminated the helper, or 0 * * Inline convenience function to create a new SrtGraphics. * This is not part of the public API. @@ -50,7 +52,9 @@ static inline SrtGraphics *_srt_graphics_new (const char *multiarch_tuple, const gchar *renderer_string, const gchar *version_string, SrtGraphicsIssues issues, - const gchar *messages); + const gchar *messages, + int exit_status, + int termination_signal); /* * _srt_graphics_hash_key: @@ -82,7 +86,9 @@ _srt_graphics_new (const char *multiarch_tuple, const gchar *renderer_string, const gchar *version_string, SrtGraphicsIssues issues, - const gchar *messages) + const gchar *messages, + int exit_status, + int terminating_signal) { g_return_val_if_fail (multiarch_tuple != NULL, NULL); return g_object_new (SRT_TYPE_GRAPHICS, @@ -94,6 +100,8 @@ _srt_graphics_new (const char *multiarch_tuple, "renderer-string", renderer_string, "version-string", version_string, "messages", messages, + "exit-status", exit_status, + "terminating-signal", terminating_signal, NULL); } diff --git a/steam-runtime-tools/graphics.c b/steam-runtime-tools/graphics.c index 85f7f10311bb335a71793a4ed3ab69f5784b6516..728335c6d47b7b2ae2ee20e2f820fd2205b97f86 100644 --- a/steam-runtime-tools/graphics.c +++ b/steam-runtime-tools/graphics.c @@ -34,7 +34,6 @@ #include <stdint.h> #include <string.h> -#include <sys/wait.h> #include <json-glib/json-glib.h> @@ -75,6 +74,8 @@ struct _SrtGraphics gchar *messages; gchar *renderer_string; gchar *version_string; + int exit_status; + int terminating_signal; }; struct _SrtGraphicsClass @@ -93,6 +94,8 @@ enum { PROP_RENDERING_INTERFACE, PROP_RENDERER_STRING, PROP_VERSION_STRING, + PROP_EXIT_STATUS, + PROP_TERMINATING_SIGNAL, N_PROPERTIES }; @@ -145,6 +148,14 @@ srt_graphics_get_property (GObject *object, g_value_set_string (value, self->version_string); break; + case PROP_EXIT_STATUS: + g_value_set_int (value, self->exit_status); + break; + + case PROP_TERMINATING_SIGNAL: + g_value_set_int (value, self->terminating_signal); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -218,6 +229,14 @@ srt_graphics_set_property (GObject *object, self->version_string = g_value_dup_string (value); break; + case PROP_EXIT_STATUS: + self->exit_status = g_value_get_int (value); + break; + + case PROP_TERMINATING_SIGNAL: + self->terminating_signal = g_value_get_int (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -298,6 +317,22 @@ srt_graphics_class_init (SrtGraphicsClass *cls) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + properties[PROP_EXIT_STATUS] = + g_param_spec_int ("exit-status", "Exit status", "Exit status of helper(s) executed. 0 on success, positive on unsuccessful exit(), -1 if killed by a signal or not run at all", + -1, + G_MAXINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + properties[PROP_TERMINATING_SIGNAL] = + g_param_spec_int ("terminating-signal", "Terminating signal", "Signal used to terminate helper process if any, 0 otherwise", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, N_PROPERTIES, properties); } @@ -696,7 +731,9 @@ _srt_check_graphics (const char *helpers_path, gchar *output = NULL; gchar *child_stderr = NULL; gchar *child_stderr2 = NULL; + int wait_status = -1; int exit_status = -1; + int terminating_signal = 0; JsonParser *parser = NULL; const gchar *version_string = NULL; gchar *new_version_string = NULL; @@ -747,28 +784,29 @@ _srt_check_graphics (const char *helpers_path, NULL, /* user data */ &output, /* stdout */ &child_stderr, - &exit_status, + &wait_status, &error)) { g_debug ("An error occurred calling the helper: %s", error->message); issues |= SRT_GRAPHICS_ISSUES_CANNOT_LOAD; - goto out; } - if (exit_status != 0) + if (wait_status != 0) { - g_debug ("... wait status %d", exit_status); + g_debug ("... wait status %d", wait_status); issues |= SRT_GRAPHICS_ISSUES_CANNOT_LOAD; - // TERM signal gives us 124 from timeout man page - if (WIFEXITED (exit_status) && WEXITSTATUS (exit_status) == 124) // timeout command killed the helper + if (_srt_process_timeout_wait_status (wait_status, &exit_status, &terminating_signal)) { - g_debug ("helper killed by timeout command"); issues |= SRT_GRAPHICS_ISSUES_TIMEOUT; } goto out; } + else + { + exit_status = 0; + } /* We can't use `json_from_string()` directly because we are targeting an * older json-glib version */ @@ -815,26 +853,27 @@ _srt_check_graphics (const char *helpers_path, NULL, /* user data */ &output, /* stdout */ &child_stderr2, - &exit_status, + &wait_status, &error)) { g_debug ("An error occurred calling the helper: %s", error->message); issues |= SRT_GRAPHICS_ISSUES_CANNOT_DRAW; - goto out; } - if (exit_status != 0) + if (wait_status != 0) { - g_debug ("... wait status %d", exit_status); + g_debug ("... wait status %d", wait_status); issues |= SRT_GRAPHICS_ISSUES_CANNOT_DRAW; - // TERM signal gives us 124 from timeout man page - if (WIFEXITED (exit_status) && WEXITSTATUS (exit_status) == 124) // timeout command killed the helper + if (_srt_process_timeout_wait_status (wait_status, &exit_status, &terminating_signal)) { - g_debug ("helper killed by timeout command"); issues |= SRT_GRAPHICS_ISSUES_TIMEOUT; } } + else + { + exit_status = 0; + } } } else @@ -871,25 +910,27 @@ _srt_check_graphics (const char *helpers_path, NULL, /* user data */ &output, /* stdout */ &child_stderr2, - &exit_status, + &wait_status, &error)) { g_debug ("An error occurred calling the helper: %s", error->message); issues |= SRT_GRAPHICS_ISSUES_CANNOT_DRAW; - goto out; } - if (exit_status != 0) + if (wait_status != 0) { - g_debug ("... wait status %d", exit_status); + g_debug ("... wait status %d", wait_status); issues |= SRT_GRAPHICS_ISSUES_CANNOT_DRAW; - // TERM signal gives us 124 from timeout man page - if (WIFEXITED (exit_status) && WEXITSTATUS (exit_status) == 124) // timeout command killed the helper + if (_srt_process_timeout_wait_status (wait_status, &exit_status, &terminating_signal)) { - g_debug ("helper killed by timeout command"); issues |= SRT_GRAPHICS_ISSUES_TIMEOUT; } + + } + else + { + exit_status = 0; } } @@ -912,7 +953,9 @@ out: renderer_string, version_string, issues, - child_stderr); + child_stderr, + exit_status, + terminating_signal); if (parser != NULL) g_object_unref (parser); @@ -1033,6 +1076,37 @@ srt_graphics_get_version_string (SrtGraphics *self) return self->version_string; } +/** + * srt_graphics_get_exit_status: + * @self: a graphics object + * + * Return the exit status of helpers when testing the given graphics. + * + * Returns: 0 on success, positive on unsuccessful `exit()`, + * -1 if killed by a signal or not run at all + */ +int srt_graphics_get_exit_status (SrtGraphics *self) +{ + g_return_val_if_fail (SRT_IS_GRAPHICS (self), -1); + + return self->exit_status; +} + +/** + * srt_graphics_get_terminating_signal: + * @self: a graphics object + * + * Return the terminating signal used to terminate the helper if any. + * + * Returns: a signal number such as `SIGTERM`, or 0 if not killed by a signal or not run at all. + */ +int srt_graphics_get_terminating_signal (SrtGraphics *self) +{ + g_return_val_if_fail (SRT_IS_GRAPHICS (self), -1); + + return self->terminating_signal; +} + /** * srt_graphics_get_renderer_string: * @self: a graphics object diff --git a/steam-runtime-tools/graphics.h b/steam-runtime-tools/graphics.h index 8465a9987e90cc40aebf79a55ff478aa87a6c8aa..cc6b79f5c4291619ff20a07c25c04c9cc4efaa50 100644 --- a/steam-runtime-tools/graphics.h +++ b/steam-runtime-tools/graphics.h @@ -130,6 +130,8 @@ const char *srt_graphics_get_version_string (SrtGraphics *self); const char *srt_graphics_get_renderer_string (SrtGraphics *self); const char *srt_graphics_get_messages (SrtGraphics *self); gchar *srt_graphics_dup_parameters_string (SrtGraphics *self); +int srt_graphics_get_exit_status (SrtGraphics *self); +int srt_graphics_get_terminating_signal (SrtGraphics *self); typedef struct _SrtEglIcd SrtEglIcd; typedef struct _SrtEglIcdClass SrtEglIcdClass; diff --git a/steam-runtime-tools/library-internal.h b/steam-runtime-tools/library-internal.h index ebc11dea8fd812784808a680b703711a3ad62762..1463eb245d368e5edbe5c7c352e8ad2696926e26 100644 --- a/steam-runtime-tools/library-internal.h +++ b/steam-runtime-tools/library-internal.h @@ -43,6 +43,8 @@ * version * @dependencies: (nullable) (array zero-terminated=1) (element-type utf8): * Dependencies of @soname + * @exit_status: exit status of helper, or -1 if it did not exit normally + * @terminating_signal: signal that terminated the helper, or 0 * * Inline convenience function to create a new SrtLibrary. * This is not part of the public API. @@ -56,7 +58,9 @@ static inline SrtLibrary *_srt_library_new (const char *multiarch_tuple, const char *messages, const char * const *missing_symbols, const char * const *misversioned_symbols, - const char * const *dependencies); + const char * const *dependencies, + int exit_status, + int terminating_signal); #ifndef __GTK_DOC_IGNORE__ static inline SrtLibrary * @@ -67,7 +71,9 @@ _srt_library_new (const char *multiarch_tuple, const char *messages, const char * const *missing_symbols, const char * const *misversioned_symbols, - const char * const *dependencies) + const char * const *dependencies, + int exit_status, + int terminating_signal) { g_return_val_if_fail (multiarch_tuple != NULL, NULL); g_return_val_if_fail (soname != NULL, NULL); @@ -80,6 +86,8 @@ _srt_library_new (const char *multiarch_tuple, "multiarch-tuple", multiarch_tuple, "soname", soname, "misversioned-symbols", misversioned_symbols, + "exit-status", exit_status, + "terminating-signal", terminating_signal, NULL); } #endif diff --git a/steam-runtime-tools/library.c b/steam-runtime-tools/library.c index e02cecb00ba1ac4c02b654855fe6a9df8dcd013e..b677124362ffdeab492d690fb198c7e1d0f1d941 100644 --- a/steam-runtime-tools/library.c +++ b/steam-runtime-tools/library.c @@ -57,6 +57,8 @@ struct _SrtLibrary GStrv misversioned_symbols; GQuark multiarch_tuple; SrtLibraryIssues issues; + int exit_status; + int terminating_signal; }; struct _SrtLibraryClass @@ -75,6 +77,8 @@ enum { PROP_MULTIARCH_TUPLE, PROP_SONAME, PROP_MISVERSIONED_SYMBOLS, + PROP_EXIT_STATUS, + PROP_TERMINATING_SIGNAL, N_PROPERTIES }; @@ -127,6 +131,14 @@ srt_library_get_property (GObject *object, g_value_set_boxed (value, self->misversioned_symbols); break; + case PROP_EXIT_STATUS: + g_value_set_int (value, self->exit_status); + break; + + case PROP_TERMINATING_SIGNAL: + g_value_set_int (value, self->terminating_signal); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -213,6 +225,14 @@ srt_library_set_property (GObject *object, break; + case PROP_EXIT_STATUS: + self->exit_status = g_value_get_int (value); + break; + + case PROP_TERMINATING_SIGNAL: + self->terminating_signal = g_value_get_int (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -297,6 +317,22 @@ srt_library_class_init (SrtLibraryClass *cls) G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + properties[PROP_EXIT_STATUS] = + g_param_spec_int ("exit-status", "Exit status", "Exit status of helper(s) executed. 0 on success, positive on unsuccessful exit(), -1 if killed by a signal or not run at all", + -1, + G_MAXINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + properties[PROP_TERMINATING_SIGNAL] = + g_param_spec_int ("terminating-signal", "Terminating signal", "Signal used to terminate helper process if any, 0 otherwise", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, N_PROPERTIES, properties); } @@ -399,6 +435,37 @@ srt_library_get_dependencies (SrtLibrary *self) return (const char * const *) self->dependencies; } +/** + * srt_library_get_exit_status: + * @self: a library + * + * Return the exit status of helpers when testing the given library. + * + * Returns: 0 on success, positive on unsuccessful `exit()`, or + * -1 if killed by a signal or not run at all + */ +int srt_library_get_exit_status (SrtLibrary *self) +{ + g_return_val_if_fail (SRT_IS_LIBRARY (self), -1); + + return self->exit_status; +} + +/** + * srt_library_get_terminating_signal: + * @self: a library + * + * Return the terminating signal used to terminate the helper if any. + * + * Returns: a signal number such as `SIGTERM`, or 0 if not killed by a signal or not run at all. + */ +int srt_library_get_terminating_signal (SrtLibrary *self) +{ + g_return_val_if_fail (SRT_IS_LIBRARY (self), -1); + + return self->terminating_signal; +} + /** * srt_library_get_missing_symbols: * @self: a library @@ -492,7 +559,9 @@ _srt_check_library_presence (const char *helpers_path, gchar *output = NULL; gchar *child_stderr = NULL; gchar *absolute_path = NULL; + int wait_status = -1; int exit_status = -1; + int terminating_signal = 0; JsonParser *parser = NULL; JsonNode *node = NULL; JsonObject *json; @@ -533,7 +602,7 @@ _srt_check_library_presence (const char *helpers_path, log_args = g_string_new (""); - for (int i = 0; i < argv->len; ++i) + for (guint i = 0; i < argv->len; ++i) { if (i > 0) { @@ -587,20 +656,28 @@ _srt_check_library_presence (const char *helpers_path, NULL, /* user data */ &output, /* stdout */ &child_stderr, - &exit_status, + &wait_status, &error)) { g_debug ("An error occurred calling the helper: %s", error->message); issues |= SRT_LIBRARY_ISSUES_CANNOT_LOAD; - goto out; } - if (exit_status != 0) + if (wait_status != 0) { - g_debug ("... wait status %d", exit_status); + g_debug ("... wait status %d", wait_status); issues |= SRT_LIBRARY_ISSUES_CANNOT_LOAD; + + if (_srt_process_timeout_wait_status (wait_status, &exit_status, &terminating_signal)) + { + issues |= SRT_LIBRARY_ISSUES_TIMEOUT; + } goto out; } + else + { + exit_status = 0; + } /* We can't use `json_from_string()` directly because we are targeting an * older json-glib version */ @@ -678,7 +755,9 @@ out: child_stderr, (const char **) missing_symbols, (const char **) misversioned_symbols, - (const char **) dependencies); + (const char **) dependencies, + exit_status, + terminating_signal); if (parser != NULL) g_object_unref (parser); diff --git a/steam-runtime-tools/library.h b/steam-runtime-tools/library.h index 9f4fff0dd3d1e7387b51e2e9495eeb3cfbd5a6c4..011f9c16ce9503545415fcdd2ea54f10775dc385 100644 --- a/steam-runtime-tools/library.h +++ b/steam-runtime-tools/library.h @@ -57,6 +57,7 @@ GType srt_library_get_type (void); * @SRT_LIBRARY_ISSUES_UNKNOWN_EXPECTATIONS: No directory containing * expected ABIs has been set, so we cannot know which libraries we are * meant to have found + * @SRT_LIBRARY_ISSUES_TIMEOUT: Helper timed out when executing * * A bitfield with flags representing problems with a library, or * %SRT_LIBRARY_ISSUES_NONE (which is numerically zero) if no problems @@ -71,6 +72,7 @@ typedef enum SRT_LIBRARY_ISSUES_MISVERSIONED_SYMBOLS = (1 << 2), SRT_LIBRARY_ISSUES_INTERNAL_ERROR = (1 << 3), SRT_LIBRARY_ISSUES_UNKNOWN_EXPECTATIONS = (1 << 4), + SRT_LIBRARY_ISSUES_TIMEOUT = (1 << 5), SRT_LIBRARY_ISSUES_NONE = 0 } SrtLibraryIssues; @@ -100,6 +102,8 @@ SrtLibraryIssues srt_check_library_presence (const char *soname, const char *symbols_path, SrtLibrarySymbolsFormat symbols_format, SrtLibrary **more_details_out); +int srt_library_get_exit_status (SrtLibrary *self); +int srt_library_get_terminating_signal (SrtLibrary *self); #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC G_DEFINE_AUTOPTR_CLEANUP_FUNC (SrtLibrary, g_object_unref) diff --git a/steam-runtime-tools/utils-internal.h b/steam-runtime-tools/utils-internal.h index dc74724aec8959a6aaf8fedc5edab45647eb4089..396a76acb7679b63099a41758a4e94ea7afed8bc 100644 --- a/steam-runtime-tools/utils-internal.h +++ b/steam-runtime-tools/utils-internal.h @@ -44,3 +44,7 @@ G_GNUC_INTERNAL GPtrArray *_srt_get_helper (const char *helpers_path, gchar *_srt_filter_gameoverlayrenderer (const gchar *input); G_GNUC_INTERNAL const char *_srt_find_myself (const char **helpers_path_out, GError **error); + +G_GNUC_INTERNAL gboolean _srt_process_timeout_wait_status (int wait_status, + int *exit_status, + int *terminating_signal); diff --git a/steam-runtime-tools/utils.c b/steam-runtime-tools/utils.c index 1c2b95bcd2370906b3f8a3669469e158fa7bb255..d324b5db26576b4c61ce57d29f7e7eafe63484cd 100644 --- a/steam-runtime-tools/utils.c +++ b/steam-runtime-tools/utils.c @@ -32,6 +32,7 @@ #include <link.h> #include <stdio.h> #include <string.h> +#include <sys/wait.h> #include <unistd.h> #ifdef HAVE_SYS_AUXV_H @@ -151,6 +152,57 @@ _srt_check_not_setuid (void) #define RELOCATABLE_PKGLIBDIR \ MULTIARCH_LIBDIR "/steam-runtime-tools-" _SRT_API_MAJOR +/** + * _srt_process_timeout_wait_status: + * + * @wait_status: The wait_status from g_spawn_sync to process + * @exit_status: (not optional): The exit_status to populate + * @terminating_signal: (not optional): The terminating signal if any, 0 otherwise + * + * Check given wait_status and populate given exit_status and terminating_signal + * + * Returns: True if timeout, false otherwise + */ +G_GNUC_INTERNAL gboolean +_srt_process_timeout_wait_status (int wait_status, int *exit_status, int *terminating_signal) +{ + gboolean timed_out = FALSE; + + g_return_val_if_fail (exit_status != NULL, FALSE); + g_return_val_if_fail (terminating_signal != NULL, FALSE); + + *exit_status = -1; + *terminating_signal = 0; + + if (WIFEXITED (wait_status)) + { + *exit_status = WEXITSTATUS (wait_status); + + if (*exit_status > 128) + { + g_debug ("-> killed by signal %d", (*exit_status - 128)); + *terminating_signal = (*exit_status - 128); + } + else if (*exit_status == 124) + { + g_debug ("-> timed out"); + timed_out = TRUE; + } + } + else if (WIFSIGNALED (wait_status)) + { + g_debug ("-> timeout killed by signal %d", WTERMSIG (wait_status)); + *terminating_signal = WTERMSIG (wait_status); + } + else + { + g_critical ("Somehow got a wait_status that was neither exited nor signaled"); + g_return_val_if_reached (FALSE); + } + + return timed_out; +} + G_GNUC_INTERNAL const char * _srt_find_myself (const char **helpers_path_out, GError **error) diff --git a/tests/graphics.c b/tests/graphics.c index 2fac6cc0300d23a21aa3c022b80a0e85da397f29..c244dba2037223e64e87f4ce7521f040cdc496ca 100644 --- a/tests/graphics.c +++ b/tests/graphics.c @@ -208,7 +208,9 @@ test_object (Fixture *f, SRT_TEST_GOOD_GRAPHICS_RENDERER, SRT_TEST_GOOD_GRAPHICS_VERSION, SRT_GRAPHICS_ISSUES_NONE, - ""); + "", + 0, + 0); g_assert_cmpint (srt_graphics_get_issues (graphics), ==, SRT_GRAPHICS_ISSUES_NONE); g_assert_cmpstr (srt_graphics_get_multiarch_tuple (graphics), ==, diff --git a/tests/library.c b/tests/library.c index dc1b6d7a084974207b1ca56bff6b73ff6df9a03b..0d32171b61396825c95aba24ee41f075a437d86f 100644 --- a/tests/library.c +++ b/tests/library.c @@ -88,7 +88,9 @@ test_object (Fixture *f, "", NULL, NULL, - NULL); + NULL, + 0, + 0); g_assert_cmpint (srt_library_get_issues (library), ==, SRT_LIBRARY_ISSUES_NONE); g_assert_cmpstr (srt_library_get_messages (library), ==, NULL); @@ -145,7 +147,9 @@ test_object (Fixture *f, "ld.so: libjpeg.so.62: nope\n", one_missing, one_misversioned, - two_deps); + two_deps, + 0, + 0); g_assert_cmpint (srt_library_get_issues (library) & SRT_LIBRARY_ISSUES_MISSING_SYMBOLS, !=, 0); g_assert_cmpint (srt_library_get_issues (library) &