Auto-load user plugins and scripts from <config>/addons
On Unix leave $(libdir)/hexchat/plugins for plugin packagers, on Windows prevent users from modifying Program Files by ignoring everything except bundled plugins
This commit is contained in:
@@ -525,7 +525,7 @@ static int lxc_cb_load(char *word[], char *word_eol[], void *userdata)
|
||||
else
|
||||
{
|
||||
xdir = xchat_get_info (ph, "xchatdirfs");
|
||||
snprintf (file, PATH_MAX, "%s/scripts/%s", xdir, word[2]);
|
||||
snprintf (file, PATH_MAX, "%s/addons/%s", xdir, word[2]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -679,7 +679,7 @@ int xchat_plugin_init(xchat_plugin *plugin_handle,
|
||||
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");
|
||||
xsubdir = g_build_filename (xdir, "scripts", NULL);
|
||||
xsubdir = g_build_filename (xdir, "addons", NULL);
|
||||
lxc_autoload_from_path (xsubdir);
|
||||
g_free (xsubdir);
|
||||
|
||||
|
||||
@@ -145,15 +145,15 @@ perl_auto_load (void *unused)
|
||||
xdir = xchat_get_info (ph, "xchatdir");
|
||||
|
||||
/* don't pollute the filesystem with script files, this only causes misuse of the folders
|
||||
* only use ~/.config/hexchat/scripts/ and %APPDATA%\HexChat\scripts */
|
||||
* only use ~/.config/hexchat/addons/ and %APPDATA%\HexChat\addons */
|
||||
#if 0
|
||||
/* autoload from ~/.config/hexchat/ or %APPDATA%\HexChat\ on win32 */
|
||||
perl_auto_load_from_path (xdir);
|
||||
#endif
|
||||
|
||||
sub_dir = malloc (strlen (xdir) + 9);
|
||||
sub_dir = malloc (strlen (xdir) + 8);
|
||||
strcpy (sub_dir, xdir);
|
||||
strcat (sub_dir, "/scripts");
|
||||
strcat (sub_dir, "/addons");
|
||||
perl_auto_load_from_path (sub_dir);
|
||||
free (sub_dir);
|
||||
|
||||
|
||||
@@ -392,16 +392,16 @@ Util_Autoload()
|
||||
xdir = xchat_get_info(ph, "xchatdirfs");
|
||||
|
||||
/* don't pollute the filesystem with script files, this only causes misuse of the folders
|
||||
* only use ~/.config/hexchat/scripts/ and %APPDATA%\HexChat\scripts */
|
||||
* only use ~/.config/hexchat/addons/ and %APPDATA%\HexChat\addons */
|
||||
#if 0
|
||||
/* auto-load from ~/.config/hexchat/ or %APPDATA%\HexChat\ */
|
||||
Util_Autoload_from(xchat_get_info(ph, "xchatdirfs"));
|
||||
#endif
|
||||
|
||||
/* auto-load from subdirectory scripts */
|
||||
sub_dir = malloc (strlen (xdir) + 9);
|
||||
/* auto-load from subdirectory addons */
|
||||
sub_dir = malloc (strlen (xdir) + 8);
|
||||
strcpy (sub_dir, xdir);
|
||||
strcat (sub_dir, "/scripts");
|
||||
strcat (sub_dir, "/addons");
|
||||
Util_Autoload_from(sub_dir);
|
||||
free (sub_dir);
|
||||
|
||||
@@ -444,9 +444,9 @@ Util_Expand(char *filename)
|
||||
return expanded;
|
||||
g_free(expanded);
|
||||
|
||||
/* Check if ~/.config/hexchat/scripts/<filename> exists. */
|
||||
/* Check if ~/.config/hexchat/addons/<filename> exists. */
|
||||
expanded = g_build_filename(xchat_get_info(ph, "xchatdir"),
|
||||
"scripts", filename, NULL);
|
||||
"addons", filename, NULL);
|
||||
if (g_file_test(expanded, G_FILE_TEST_EXISTS))
|
||||
return expanded;
|
||||
g_free(expanded);
|
||||
|
||||
@@ -90,9 +90,9 @@ static char unknown[] = {
|
||||
};
|
||||
|
||||
/* don't pollute the filesystem with script files, this only causes misuse of the folders
|
||||
* only use ~/.config/hexchat/scripts/ and %APPDATA%\HexChat\scripts */
|
||||
* only use ~/.config/hexchat/addons/ and %APPDATA%\HexChat\addons */
|
||||
static char sourcedirs[] = {
|
||||
"set files [lsort [glob -nocomplain -directory [xchatdir] \"/scripts/*.tcl\"]]\n"
|
||||
"set files [lsort [glob -nocomplain -directory [xchatdir] \"/addons/*.tcl\"]]\n"
|
||||
"set init [lsearch -glob $files \"*/init.tcl\"]\n"
|
||||
"if { $init > 0 } {\n"
|
||||
"set initfile [lindex $files $init]\n"
|
||||
@@ -2039,7 +2039,7 @@ static int Command_Source(char *word[], char *word_eol[], void *userdata)
|
||||
} else {
|
||||
if (!strchr(word_eol[2], '/')) {
|
||||
Tcl_DStringAppend(&ds, xchatdir, strlen(xchatdir));
|
||||
Tcl_DStringAppend(&ds, "/scripts/", 9);
|
||||
Tcl_DStringAppend(&ds, "/addons/", 8);
|
||||
Tcl_DStringAppend(&ds, word_eol[2], strlen(word_eol[2]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user