1
1
mirror of https://github.com/profanity-im/profanity.git synced 2025-02-02 15:08:15 -05:00

support for formatting in avatar executable

in before it just used the input command line as it was but this fixes
this by adding formatting using `format_call_external_argv` which is
already used in `url open` executable.
This commit is contained in:
nandesu-utils 2022-08-25 00:10:22 +03:00 committed by Michael Vetter
parent 056b19eb91
commit e1ed012f72
2 changed files with 25 additions and 15 deletions

View File

@ -445,8 +445,8 @@ get_mentions(gboolean whole_word, gboolean case_sensitive, const char* const mes
gboolean
call_external(gchar** argv, gchar** std_out, gchar** std_err)
{
GError *spawn_error = NULL;
GError *exit_error = NULL;
GError* spawn_error = NULL;
GError* exit_error = NULL;
gboolean is_successful;
gint wait_status;
@ -457,22 +457,22 @@ call_external(gchar** argv, gchar** std_out, gchar** std_err)
flags |= G_SPAWN_STDERR_TO_DEV_NULL;
is_successful = g_spawn_sync(NULL, // Inherit the parent PWD.
argv,
NULL, // Inherit the parent environment.
flags,
NULL, NULL, // No func. before exec() in child.
std_out, std_err,
&wait_status, &spawn_error);
argv,
NULL, // Inherit the parent environment.
flags,
NULL, NULL, // No func. before exec() in child.
std_out, std_err,
&wait_status, &spawn_error);
if (!is_successful) {
gchar* cmd = g_strjoinv(" ", argv);
log_error("could not spawn '%s' with error '%s'", cmd, spawn_error->message);
log_error("Spawning '%s' failed with with error '%s'", cmd, spawn_error ? spawn_error->message : "Unknown, spawn_error is NULL");
;
g_error_free(spawn_error);
g_free(cmd);
}
else {
is_successful = g_spawn_check_wait_status(wait_status, &exit_error);
} else {
is_successful = g_spawn_check_exit_status(wait_status, &exit_error);
if (!is_successful) {
gchar* cmd = g_strjoinv(" ", argv);

View File

@ -339,10 +339,20 @@ _avatar_request_item_result_handler(xmpp_stanza_t* const stanza, void* const use
// if we shall open it
if (g_hash_table_contains(shall_open, from_attr)) {
gchar* argv[] = { prefs_get_string(PREF_AVATAR_CMD), filename->str, NULL };
if (!call_external(argv, NULL, NULL)) {
cons_show_error("Unable to display avatar: check the logs for more information.");
gchar* cmdtemplate = prefs_get_string(PREF_AVATAR_CMD);
if (cmdtemplate == NULL) {
cons_show_error("No default `avatar open` command found in executables preferences.");
} else {
gchar** argv = format_call_external_argv(cmdtemplate, NULL, filename->str);
if (!call_external(argv, NULL, NULL)) {
cons_show_error("Unable to display avatar: check the logs for more information.");
}
g_strfreev(argv);
}
g_hash_table_remove(shall_open, from_attr);
}