diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/core/wee-command.c | 52 |
2 files changed, 28 insertions, 26 deletions
@@ -9,8 +9,6 @@ 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 5852b99e2..d6ab14857 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -3721,7 +3721,35 @@ 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); @@ -3733,30 +3761,6 @@ 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); |