summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2022-07-27 22:07:24 +0200
committerSébastien Helleu <flashcode@flashtux.org>2022-07-27 22:07:24 +0200
commita50143fdf896eab674d52604c2200b963962bc49 (patch)
treeb8918a181ff758d3dec55280ab5379947a2403ea /src
parent56b82fb11558ab7c314217bc25ffc5517f381645 (diff)
downloadweechat-a50143fdf896eab674d52604c2200b963962bc49.zip
irc: display an error message when using command /dcc without xfer plugin loaded
Diffstat (limited to 'src')
-rw-r--r--src/plugins/irc/irc-command.c38
-rw-r--r--src/plugins/xfer/xfer.c2
2 files changed, 31 insertions, 9 deletions
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index 368c32f48..8b2692bcb 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -2072,13 +2072,13 @@ IRC_COMMAND_CALLBACK(dcc)
weechat_infolist_new_var_string (item, "filename", argv_eol[3]);
weechat_infolist_new_var_string (item, "local_address", str_address);
weechat_infolist_new_var_integer (item, "socket", ptr_server->sock);
- (void) weechat_hook_signal_send ("xfer_add",
- WEECHAT_HOOK_SIGNAL_POINTER,
- infolist);
+ rc = weechat_hook_signal_send ("xfer_add",
+ WEECHAT_HOOK_SIGNAL_POINTER,
+ infolist);
}
weechat_infolist_free (infolist);
}
- return WEECHAT_RC_OK;
+ goto end;
}
/* DCC CHAT */
@@ -2100,16 +2100,38 @@ IRC_COMMAND_CALLBACK(dcc)
"irc.%s.%s", ptr_server->name, argv[2]);
weechat_infolist_new_var_string (item, "charset_modifier", charset_modifier);
weechat_infolist_new_var_string (item, "local_address", str_address);
- (void) weechat_hook_signal_send ("xfer_add",
- WEECHAT_HOOK_SIGNAL_POINTER,
- infolist);
+ rc = weechat_hook_signal_send ("xfer_add",
+ WEECHAT_HOOK_SIGNAL_POINTER,
+ infolist);
}
weechat_infolist_free (infolist);
}
- return WEECHAT_RC_OK;
+ goto end;
}
WEECHAT_COMMAND_ERROR;
+
+end:
+ switch (rc)
+ {
+ case WEECHAT_RC_OK_EAT:
+ /* signal has been properly handled by the xfer plugin */
+ break;
+ case WEECHAT_RC_ERROR:
+ weechat_printf (
+ ptr_server->buffer,
+ _("%s%s: unable to create DCC"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ break;
+ default:
+ weechat_printf (
+ ptr_server->buffer,
+ _("%s%s: unable to create DCC, please check that "
+ "the \"xfer\" plugin is loaded"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ break;
+ }
+ return WEECHAT_RC_OK;
}
/*
diff --git a/src/plugins/xfer/xfer.c b/src/plugins/xfer/xfer.c
index 4c114b81c..b1c5690d8 100644
--- a/src/plugins/xfer/xfer.c
+++ b/src/plugins/xfer/xfer.c
@@ -1443,7 +1443,7 @@ xfer_add_cb (const void *pointer, void *data,
if (short_filename)
free (short_filename);
weechat_infolist_reset_item_cursor (infolist);
- return WEECHAT_RC_OK;
+ return WEECHAT_RC_OK_EAT;
error:
if (filename2)