From c31977f59cb2e36fe6c0d036f85e96670b2ca603 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Wed, 5 Jan 2011 08:05:32 +0100 Subject: Revert "Fix bug with /upgrade: check existence of binary even when command is executed without argument" This reverts commit 3cd267ab23ff25c89204cb5be0f019c1254ac83f. With this fix, upgrade was not possible any more if WeeChat was run without path, ie for example "weechat-curses" running "/usr/bin/weechat-curses". --- src/core/wee-command.c | 52 +++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 24 deletions(-) (limited to 'src') 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); -- cgit v1.2.3