summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/wee-command.c52
1 files changed, 28 insertions, 24 deletions
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);