mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
session_set_binary() - we can't get the full path to irssi binary from
argv[0] and we need it, so its searched now. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2079 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
ee708c1469
commit
5656ad352d
@ -30,13 +30,42 @@
|
|||||||
#include "servers-setup.h"
|
#include "servers-setup.h"
|
||||||
|
|
||||||
static char *session_file;
|
static char *session_file;
|
||||||
static const char *irssi_binary; /* from argv[0] */
|
static char *irssi_binary;
|
||||||
|
|
||||||
static GIOChannel *next_handle;
|
static GIOChannel *next_handle;
|
||||||
|
|
||||||
void session_set_binary(const char *path)
|
void session_set_binary(const char *path)
|
||||||
{
|
{
|
||||||
irssi_binary = path;
|
char **paths, **tmp;
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
g_free_and_null(irssi_binary);
|
||||||
|
|
||||||
|
if (g_path_is_absolute(path)) {
|
||||||
|
/* full path - easy */
|
||||||
|
irssi_binary = g_strdup(path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strchr(path, G_DIR_SEPARATOR) != NULL) {
|
||||||
|
/* relative path */
|
||||||
|
str = g_get_current_dir();
|
||||||
|
irssi_binary = g_strconcat(str, G_DIR_SEPARATOR_S, path, NULL);
|
||||||
|
g_free(str);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* we'll need to find it from path. */
|
||||||
|
paths = g_strsplit(g_getenv("PATH"), ":", -1);
|
||||||
|
for (tmp = paths; *tmp != NULL; tmp++) {
|
||||||
|
str = g_strconcat(*tmp, G_DIR_SEPARATOR_S, path, NULL);
|
||||||
|
if (access(str, X_OK) == 0) {
|
||||||
|
irssi_binary = str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
g_free(str);
|
||||||
|
}
|
||||||
|
g_strfreev(paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SYNTAX: UPGRADE [<irssi binary path>] */
|
/* SYNTAX: UPGRADE [<irssi binary path>] */
|
||||||
@ -52,7 +81,7 @@ static void cmd_upgrade(const char *data)
|
|||||||
data = irssi_binary;
|
data = irssi_binary;
|
||||||
|
|
||||||
/* make sure we can execute it */
|
/* make sure we can execute it */
|
||||||
if (access(data, X_OK) != 0)
|
if (data == NULL || access(data, X_OK) != 0)
|
||||||
cmd_return_error(CMDERR_ERRNO);
|
cmd_return_error(CMDERR_ERRNO);
|
||||||
|
|
||||||
/* save the session */
|
/* save the session */
|
||||||
@ -214,6 +243,8 @@ void session_init(void)
|
|||||||
|
|
||||||
void session_deinit(void)
|
void session_deinit(void)
|
||||||
{
|
{
|
||||||
|
g_free_not_null(irssi_binary);
|
||||||
|
|
||||||
command_unbind("upgrade", (SIGNAL_FUNC) cmd_upgrade);
|
command_unbind("upgrade", (SIGNAL_FUNC) cmd_upgrade);
|
||||||
|
|
||||||
signal_remove("session save", (SIGNAL_FUNC) sig_session_save);
|
signal_remove("session save", (SIGNAL_FUNC) sig_session_save);
|
||||||
|
Loading…
Reference in New Issue
Block a user