diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/core/wee-command.c | 52 |
2 files changed, 26 insertions, 28 deletions
@@ -9,6 +9,8 @@ Version 0.3.4 (under dev!) * core: add 256 colors support, new command /color, new section "palette" in weechat.conf (task #6834) +* core: fix bug with /upgrade: check existence of binary even when command is + executed without argument * core: add info "weechat_upgrading", signal "upgrade_ended", display duration of upgrade * core: replace the 10 nick color options and number of nick colors by a single diff --git a/src/core/wee-command.c b/src/core/wee-command.c index d6ab14857..5852b99e2 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -3721,35 +3721,7 @@ COMMAND_CALLBACK(upgrade) } if (argc > 1) - { ptr_binary = string_expand_home (argv_eol[1]); - if (ptr_binary) - { - /* check if weechat binary is here and executable by user */ - rc = stat (ptr_binary, &stat_buf); - if ((rc != 0) || (!S_ISREG(stat_buf.st_mode))) - { - gui_chat_printf (NULL, - _("%sCan't upgrade: WeeChat binary \"%s\" " - "does not exist"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - ptr_binary); - free (ptr_binary); - return WEECHAT_RC_OK; - } - if ((!(stat_buf.st_mode & S_IXUSR)) && (!(stat_buf.st_mode & S_IXGRP)) - && (!(stat_buf.st_mode & S_IXOTH))) - { - gui_chat_printf (NULL, - _("%sCan't upgrade: WeeChat binary \"%s\" " - "does not have execute permissions"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - ptr_binary); - free (ptr_binary); - return WEECHAT_RC_OK; - } - } - } else ptr_binary = strdup (weechat_argv0); @@ -3761,6 +3733,30 @@ COMMAND_CALLBACK(upgrade) return WEECHAT_RC_OK; } + /* check if weechat binary is here and executable by user */ + rc = stat (ptr_binary, &stat_buf); + if ((rc != 0) || (!S_ISREG(stat_buf.st_mode))) + { + gui_chat_printf (NULL, + _("%sCan't upgrade: WeeChat binary \"%s\" " + "does not exist"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + ptr_binary); + free (ptr_binary); + return WEECHAT_RC_OK; + } + if ((!(stat_buf.st_mode & S_IXUSR)) && (!(stat_buf.st_mode & S_IXGRP)) + && (!(stat_buf.st_mode & S_IXOTH))) + { + gui_chat_printf (NULL, + _("%sCan't upgrade: WeeChat binary \"%s\" " + "does not have execute permissions"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + ptr_binary); + free (ptr_binary); + return WEECHAT_RC_OK; + } + gui_chat_printf (NULL, _("Upgrading WeeChat with binary file: \"%s\"..."), ptr_binary); |