Use <configdir>/scripts to (auto)load Lua/Perl/Python/Tcl scripts

This commit is contained in:
Berke Viktor
2012-07-21 19:16:31 +02:00
parent 9ea3ac9ddd
commit 2b3e1f46e3
5 changed files with 45 additions and 26 deletions

View File

@ -518,13 +518,15 @@ static int lxc_cb_load(char *word[], char *word_eol[], void *userdata)
strncpy(file, word[2], PATH_MAX);
else {
if (stat(word[2], st) == 0)
xdir = getcwd(buf, PATH_MAX);
else {
xdir = xchat_get_info(ph, "xchatdirfs");
if (!xdir) /* xchatdirfs is new for 2.0.9, will fail on older */
xdir = xchat_get_info (ph, "xchatdir");
{
xdir = getcwd (buf, PATH_MAX);
snprintf (file, PATH_MAX, "%s/%s", xdir, word[2]);
}
else
{
xdir = xchat_get_info (ph, "xchatdirfs");
snprintf (file, PATH_MAX, "%s/scripts/%s", xdir, word[2]);
}
snprintf(file, PATH_MAX, "%s/%s", xdir, word[2]);
}
if (lxc_load_file((const char *)file) == 0) {
@ -663,6 +665,7 @@ int xchat_plugin_init(xchat_plugin *plugin_handle,
lua_State *L;
const char *xdir;
const char *name, *desc, *vers;
char *xsubdir;
/* we need to save this for use with any xchat_* functions */
ph = plugin_handle;
@ -675,11 +678,13 @@ int xchat_plugin_init(xchat_plugin *plugin_handle,
xchat_hook_command(ph, "UNLOAD", XCHAT_PRI_NORM, lxc_cb_unload, NULL, NULL);
xchat_hook_command(ph, "LUA", XCHAT_PRI_NORM, lxc_cb_lua, "Usage: LUA <code>, executes <code> in a new lua state", NULL);
xdir = xchat_get_info(ph, "xchatdirfs");
if (!xdir) /* xchatdirfs is new for 2.0.9, will fail on older */
xdir = xchat_get_info (ph, "xchatdir");
lxc_autoload_from_path(xdir);
xdir = xchat_get_info (ph, "xchatdirfs");
xsubdir = g_build_filename (xdir, "scripts", NULL);
lxc_autoload_from_path (xsubdir);
g_free (xsubdir);
/* put this here, otherwise it's only displayed when a script is autoloaded upon start */
xchat_printf(ph, "Lua interface loaded");
if (!lxc_states) /* no scripts loaded */
return 1;
@ -716,7 +721,6 @@ int xchat_plugin_init(xchat_plugin *plugin_handle,
}
state = state->next;
}
xchat_printf(ph, "Lua interface (v%s) loaded", LXC_VERSION);
return 1;
}
@ -732,7 +736,7 @@ int xchat_plugin_deinit(xchat_plugin *plug_handle)
state = state->next;
free(st);
}
xchat_printf(plug_handle, "Lua plugin v%s removed", LXC_VERSION);
xchat_printf(plug_handle, "Lua interface unloaded");
return 1;
}