Script plugins now load scripts in WeeChat system share directory
This commit is contained in:
parent
8c662f69f9
commit
e4cc182105
@ -5,6 +5,7 @@ ChangeLog - 2006-02-28
|
||||
|
||||
|
||||
Version 0.1.8 (under dev!):
|
||||
* script plugins now load scripts in WeeChat system share directory
|
||||
* /msg command does not open any buffer any more
|
||||
* fixed crash when using global history (when older entry is removed)
|
||||
* added IRC raw data buffer (new key: alt-J + alt-R)
|
||||
|
4
po/cs.po
4
po/cs.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:26+0100\n"
|
||||
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1438,7 +1438,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s přezdívka \"%s\" nebyla nalezena pro příkaz \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s nemohu vytvořít nové soukromý buffer\"%s\"\n"
|
||||
|
4
po/es.po
4
po/es.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:25+0100\n"
|
||||
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1450,7 +1450,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s usuario \"%s\" no encontrado para el comando \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s no es posible crear una nueva ventana privada \"%s\"\n"
|
||||
|
4
po/fr.po
4
po/fr.po
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:32+0100\n"
|
||||
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1447,7 +1447,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s pseudo \"%s\" non trouvé pour la commande \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s impossible de créer le tampon privé \"%s\"\n"
|
||||
|
4
po/hu.po
4
po/hu.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:26+0100\n"
|
||||
"Last-Translator: voroskoi <voroskoi@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1449,7 +1449,7 @@ msgstr "%s \"%s\" parancs csak a szobaablakban futtatható\n"
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s név \"%s\" nem található a \"%s\" parancshoz\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s nem sikerült új privát ablakot nyitni \"%s\"\n"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -1331,7 +1331,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr ""
|
||||
|
@ -1593,8 +1593,8 @@ weechat_lua_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1705,25 +1705,7 @@ weechat_lua_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Lua script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/lua/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "lua", argv[1]);
|
||||
weechat_lua_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1401,8 +1401,8 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1513,25 +1513,7 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Perl script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/perl/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "perl", argv[1]);
|
||||
weechat_perl_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1365,8 +1365,8 @@ weechat_python_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1477,25 +1477,7 @@ weechat_python_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Python script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/python/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "python", argv[1]);
|
||||
weechat_python_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1544,8 +1544,8 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1656,25 +1656,7 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Ruby script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/ruby/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "ruby", argv[1]);
|
||||
weechat_ruby_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -84,6 +84,62 @@ weechat_script_search (t_weechat_plugin *plugin,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_search_full_name: search the full path name of a script
|
||||
*/
|
||||
|
||||
char *
|
||||
weechat_script_search_full_name (t_weechat_plugin *plugin,
|
||||
char *language, char *filename)
|
||||
{
|
||||
char *final_name, *dir_home, *dir_system;
|
||||
int length;
|
||||
struct stat st;
|
||||
|
||||
if ((strstr(filename, "/")) || (strstr(filename, "\\")))
|
||||
return strdup(filename);
|
||||
|
||||
/* try WeeChat user's dir */
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
length = strlen (dir_home) + strlen (language) + strlen (filename) + 16;
|
||||
final_name = (char *) malloc (length);
|
||||
if (final_name)
|
||||
{
|
||||
snprintf (final_name, length, "%s/%s/%s", dir_home, language, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
{
|
||||
free (dir_home);
|
||||
return final_name;
|
||||
}
|
||||
free (final_name);
|
||||
}
|
||||
free (dir_home);
|
||||
}
|
||||
|
||||
/* try WeeChat system dir */
|
||||
dir_system = plugin->get_info (plugin, "weechat_sharedir", NULL);
|
||||
if (dir_system)
|
||||
{
|
||||
length = strlen (dir_system) + strlen (dir_system) + strlen (filename) + 16;
|
||||
final_name = (char *) malloc (length);
|
||||
if (final_name)
|
||||
{
|
||||
snprintf (final_name,length, "%s/%s/%s", dir_system, language, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
{
|
||||
free (dir_system);
|
||||
return final_name;
|
||||
}
|
||||
free (final_name);
|
||||
}
|
||||
free (dir_system);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_add: add a script to list of scripts
|
||||
*/
|
||||
|
@ -43,6 +43,8 @@ extern void weechat_script_auto_load (t_weechat_plugin *, char *,
|
||||
int (*)(t_weechat_plugin *, char *));
|
||||
extern t_plugin_script *weechat_script_search (t_weechat_plugin *,
|
||||
t_plugin_script **, char *);
|
||||
extern char *weechat_script_search_full_name (t_weechat_plugin *,
|
||||
char *, char *);
|
||||
extern t_plugin_script *weechat_script_add (t_weechat_plugin *,
|
||||
t_plugin_script **, char *, char *,
|
||||
char *, char *, char *);
|
||||
|
@ -5,6 +5,7 @@ ChangeLog - 2006-02-28
|
||||
|
||||
|
||||
Version 0.1.8 (under dev!):
|
||||
* script plugins now load scripts in WeeChat system share directory
|
||||
* /msg command does not open any buffer any more
|
||||
* fixed crash when using global history (when older entry is removed)
|
||||
* added IRC raw data buffer (new key: alt-J + alt-R)
|
||||
|
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:26+0100\n"
|
||||
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1438,7 +1438,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s přezdívka \"%s\" nebyla nalezena pro příkaz \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s nemohu vytvořít nové soukromý buffer\"%s\"\n"
|
||||
|
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:25+0100\n"
|
||||
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1450,7 +1450,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s usuario \"%s\" no encontrado para el comando \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s no es posible crear una nueva ventana privada \"%s\"\n"
|
||||
|
@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:32+0100\n"
|
||||
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1447,7 +1447,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s pseudo \"%s\" non trouvé pour la commande \"%s\"\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s impossible de créer le tampon privé \"%s\"\n"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.1.8-cvs\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: 2006-02-22 10:26+0100\n"
|
||||
"Last-Translator: voroskoi <voroskoi@gmail.com>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@ -1449,7 +1449,7 @@ msgstr "%s \"%s\" parancs csak a szobaablakban futtatható\n"
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr "%s név \"%s\" nem található a \"%s\" parancshoz\n"
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr "%s nem sikerült új privát ablakot nyitni \"%s\"\n"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2006-02-22 10:32+0100\n"
|
||||
"POT-Creation-Date: 2006-02-28 16:59+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -1331,7 +1331,7 @@ msgstr ""
|
||||
msgid "%s nick \"%s\" not found for \"%s\" command\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-send.c:1231 src/irc/irc-send.c:1603
|
||||
#: src/irc/irc-send.c:1603
|
||||
#, c-format
|
||||
msgid "%s cannot create new private buffer \"%s\"\n"
|
||||
msgstr ""
|
||||
|
@ -1593,8 +1593,8 @@ weechat_lua_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1705,25 +1705,7 @@ weechat_lua_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Lua script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/lua/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "lua", argv[1]);
|
||||
weechat_lua_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1401,8 +1401,8 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1513,25 +1513,7 @@ weechat_perl_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Perl script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/perl/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "perl", argv[1]);
|
||||
weechat_perl_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1365,8 +1365,8 @@ weechat_python_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1477,25 +1477,7 @@ weechat_python_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Python script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/python/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "python", argv[1]);
|
||||
weechat_python_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -1544,8 +1544,8 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
|
||||
char *server, char *command, char *arguments,
|
||||
char *handler_args, void *handler_pointer)
|
||||
{
|
||||
int argc, path_length, handler_found;
|
||||
char **argv, *path_script, *dir_home;
|
||||
int argc, handler_found;
|
||||
char **argv, *path_script;
|
||||
t_plugin_script *ptr_script;
|
||||
t_plugin_handler *ptr_handler;
|
||||
|
||||
@ -1656,25 +1656,7 @@ weechat_ruby_cmd (t_weechat_plugin *plugin,
|
||||
if (plugin->ascii_strcasecmp (plugin, argv[0], "load") == 0)
|
||||
{
|
||||
/* load Ruby script */
|
||||
if ((strstr (argv[1], "/")) || (strstr (argv[1], "\\")))
|
||||
path_script = NULL;
|
||||
else
|
||||
{
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
path_length = strlen (dir_home) + strlen (argv[1]) + 16;
|
||||
path_script = (char *) malloc (path_length * sizeof (char));
|
||||
if (path_script)
|
||||
snprintf (path_script, path_length, "%s/ruby/%s",
|
||||
dir_home, argv[1]);
|
||||
else
|
||||
path_script = NULL;
|
||||
free (dir_home);
|
||||
}
|
||||
else
|
||||
path_script = NULL;
|
||||
}
|
||||
path_script = weechat_script_search_full_name (plugin, "ruby", argv[1]);
|
||||
weechat_ruby_load (plugin, (path_script) ? path_script : argv[1]);
|
||||
if (path_script)
|
||||
free (path_script);
|
||||
|
@ -84,6 +84,62 @@ weechat_script_search (t_weechat_plugin *plugin,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_search_full_name: search the full path name of a script
|
||||
*/
|
||||
|
||||
char *
|
||||
weechat_script_search_full_name (t_weechat_plugin *plugin,
|
||||
char *language, char *filename)
|
||||
{
|
||||
char *final_name, *dir_home, *dir_system;
|
||||
int length;
|
||||
struct stat st;
|
||||
|
||||
if ((strstr(filename, "/")) || (strstr(filename, "\\")))
|
||||
return strdup(filename);
|
||||
|
||||
/* try WeeChat user's dir */
|
||||
dir_home = plugin->get_info (plugin, "weechat_dir", NULL);
|
||||
if (dir_home)
|
||||
{
|
||||
length = strlen (dir_home) + strlen (language) + strlen (filename) + 16;
|
||||
final_name = (char *) malloc (length);
|
||||
if (final_name)
|
||||
{
|
||||
snprintf (final_name, length, "%s/%s/%s", dir_home, language, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
{
|
||||
free (dir_home);
|
||||
return final_name;
|
||||
}
|
||||
free (final_name);
|
||||
}
|
||||
free (dir_home);
|
||||
}
|
||||
|
||||
/* try WeeChat system dir */
|
||||
dir_system = plugin->get_info (plugin, "weechat_sharedir", NULL);
|
||||
if (dir_system)
|
||||
{
|
||||
length = strlen (dir_system) + strlen (dir_system) + strlen (filename) + 16;
|
||||
final_name = (char *) malloc (length);
|
||||
if (final_name)
|
||||
{
|
||||
snprintf (final_name,length, "%s/%s/%s", dir_system, language, filename);
|
||||
if ((stat (final_name, &st) == 0) && (st.st_size > 0))
|
||||
{
|
||||
free (dir_system);
|
||||
return final_name;
|
||||
}
|
||||
free (final_name);
|
||||
}
|
||||
free (dir_system);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_script_add: add a script to list of scripts
|
||||
*/
|
||||
|
@ -43,6 +43,8 @@ extern void weechat_script_auto_load (t_weechat_plugin *, char *,
|
||||
int (*)(t_weechat_plugin *, char *));
|
||||
extern t_plugin_script *weechat_script_search (t_weechat_plugin *,
|
||||
t_plugin_script **, char *);
|
||||
extern char *weechat_script_search_full_name (t_weechat_plugin *,
|
||||
char *, char *);
|
||||
extern t_plugin_script *weechat_script_add (t_weechat_plugin *,
|
||||
t_plugin_script **, char *, char *,
|
||||
char *, char *, char *);
|
||||
|
Loading…
x
Reference in New Issue
Block a user