summaryrefslogtreecommitdiff
path: root/src/plugins/script
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/script')
-rw-r--r--src/plugins/script/script-action.c2
-rw-r--r--src/plugins/script/script-completion.c18
-rw-r--r--src/plugins/script/script-config.c34
-rw-r--r--src/plugins/script/script-repo.c32
-rw-r--r--src/plugins/script/script.c2
5 files changed, 52 insertions, 36 deletions
diff --git a/src/plugins/script/script-action.c b/src/plugins/script/script-action.c
index 6f4f4b8e9..2113de911 100644
--- a/src/plugins/script/script-action.c
+++ b/src/plugins/script/script-action.c
@@ -1523,7 +1523,7 @@ script_action_schedule (const char *action,
int quiet)
{
/* create again "script" directory, just in case it has been removed */
- if (!weechat_mkdir_home (SCRIPT_PLUGIN_NAME, 0755))
+ if (!weechat_mkdir_home ("${weechat_cache_dir}/" SCRIPT_PLUGIN_NAME, 0755))
return;
script_action_add (action);
diff --git a/src/plugins/script/script-completion.c b/src/plugins/script/script-completion.c
index 5ec3199e9..f0653ea3a 100644
--- a/src/plugins/script/script-completion.c
+++ b/src/plugins/script/script-completion.c
@@ -189,7 +189,7 @@ script_completion_scripts_files_cb (const void *pointer, void *data,
struct t_gui_buffer *buffer,
struct t_gui_completion *completion)
{
- char *weechat_home, *directory;
+ char *weechat_data_dir, *directory;
int length, i;
void *pointers[2];
@@ -199,9 +199,9 @@ script_completion_scripts_files_cb (const void *pointer, void *data,
(void) completion_item;
(void) buffer;
- weechat_home = weechat_info_get ("weechat_dir", NULL);
+ weechat_data_dir = weechat_info_get ("weechat_data_dir", NULL);
- length = strlen (weechat_home) + 128 + 1;
+ length = strlen (weechat_data_dir) + 128 + 1;
directory = malloc (length);
if (directory)
{
@@ -210,16 +210,16 @@ script_completion_scripts_files_cb (const void *pointer, void *data,
pointers[0] = completion;
pointers[1] = script_extension[i];
- /* look for files in "~/.weechat/<language>/" */
+ /* look for files in <weechat_data_dir>/<language> */
snprintf (directory, length,
- "%s/%s", weechat_home, script_language[i]);
+ "%s/%s", weechat_data_dir, script_language[i]);
weechat_exec_on_files (directory, 0, 0,
&script_completion_exec_file_cb,
pointers);
- /* look for files in "~/.weechat/<language>/autoload/" */
+ /* look for files in <weechat_data_dir>/<language>/autoload */
snprintf (directory, length,
- "%s/%s/autoload", weechat_home, script_language[i]);
+ "%s/%s/autoload", weechat_data_dir, script_language[i]);
weechat_exec_on_files (directory, 0, 0,
&script_completion_exec_file_cb,
pointers);
@@ -227,8 +227,8 @@ script_completion_scripts_files_cb (const void *pointer, void *data,
free (directory);
}
- if (weechat_home)
- free (weechat_home);
+ if (weechat_data_dir)
+ free (weechat_data_dir);
return WEECHAT_RC_OK;
}
diff --git a/src/plugins/script/script-config.c b/src/plugins/script/script-config.c
index 79a30ef7a..303857c07 100644
--- a/src/plugins/script/script-config.c
+++ b/src/plugins/script/script-config.c
@@ -148,8 +148,7 @@ script_config_get_diff_command ()
}
/*
- * Gets filename with script
- * (by default "/home/xxx/.weechat/script/plugins.xml.gz").
+ * Gets filename with list of scripts.
*
* Note: result must be freed after use.
*/
@@ -159,9 +158,19 @@ script_config_get_xml_filename ()
{
char *path, *filename;
int length;
-
+ struct t_hashtable *options;
+
+ options = weechat_hashtable_new (
+ 32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL, NULL);
+ if (options)
+ weechat_hashtable_set (options, "directory", "cache");
path = weechat_string_eval_path_home (
- weechat_config_string (script_config_scripts_path), NULL, NULL, NULL);
+ weechat_config_string (script_config_scripts_path), NULL, NULL, options);
+ if (options)
+ weechat_hashtable_free (options);
length = strlen (path) + 64;
filename = malloc (length);
if (filename)
@@ -172,11 +181,8 @@ script_config_get_xml_filename ()
/*
* Gets filename for a script to download.
- *
* If suffix is not NULL, it is added to filename.
*
- * Example: "/home/xxx/.weechat/script/go.py"
- *
* Note: result must be freed after use.
*/
@@ -186,9 +192,19 @@ script_config_get_script_download_filename (struct t_script_repo *script,
{
char *path, *filename;
int length;
-
+ struct t_hashtable *options;
+
+ options = weechat_hashtable_new (
+ 32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL, NULL);
+ if (options)
+ weechat_hashtable_set (options, "directory", "cache");
path = weechat_string_eval_path_home (
- weechat_config_string (script_config_scripts_path), NULL, NULL, NULL);
+ weechat_config_string (script_config_scripts_path), NULL, NULL, options);
+ if (options)
+ weechat_hashtable_free (options);
length = strlen (path) + 1 + strlen (script->name_with_extension)
+ ((suffix) ? strlen (suffix) : 0) + 1;
filename = malloc (length);
diff --git a/src/plugins/script/script-repo.c b/src/plugins/script/script-repo.c
index 3627ad2b9..0d4bdd1c0 100644
--- a/src/plugins/script/script-repo.c
+++ b/src/plugins/script/script-repo.c
@@ -165,28 +165,28 @@ script_repo_search_by_name_ext (const char *name_with_extension)
char *
script_repo_get_filename_loaded (struct t_script_repo *script)
{
- char *weechat_home, *filename, resolved_path[PATH_MAX];
+ char *weechat_data_dir, *filename, resolved_path[PATH_MAX];
int length;
struct stat st;
- weechat_home = weechat_info_get ("weechat_dir", NULL);
- length = strlen (weechat_home) + strlen (script->name_with_extension) + 64;
+ weechat_data_dir = weechat_info_get ("weechat_data_dir", NULL);
+ length = strlen (weechat_data_dir) + strlen (script->name_with_extension) + 64;
filename = malloc (length);
if (!filename)
{
- if (weechat_home)
- free (weechat_home);
+ if (weechat_data_dir)
+ free (weechat_data_dir);
return NULL;
}
snprintf (filename, length, "%s/%s/autoload/%s",
- weechat_home,
+ weechat_data_dir,
script_language[script->language],
script->name_with_extension);
if (stat (filename, &st) != 0)
{
snprintf (filename, length, "%s/%s/%s",
- weechat_home,
+ weechat_data_dir,
script_language[script->language],
script->name_with_extension);
if (stat (filename, &st) != 0)
@@ -195,8 +195,8 @@ script_repo_get_filename_loaded (struct t_script_repo *script)
}
}
- if (weechat_home)
- free (weechat_home);
+ if (weechat_data_dir)
+ free (weechat_data_dir);
if (!filename[0])
{
@@ -798,7 +798,7 @@ void
script_repo_update_status (struct t_script_repo *script)
{
const char *version;
- char *weechat_home, *filename, *sha512sum;
+ char *weechat_data_dir, *filename, *sha512sum;
struct stat st;
int length;
struct t_script_repo *ptr_script;
@@ -807,13 +807,13 @@ script_repo_update_status (struct t_script_repo *script)
sha512sum = NULL;
/* check if script is installed (file found on disk) */
- weechat_home = weechat_info_get ("weechat_dir", NULL);
- length = strlen (weechat_home) + strlen (script->name_with_extension) + 64;
+ weechat_data_dir = weechat_info_get ("weechat_data_dir", NULL);
+ length = strlen (weechat_data_dir) + strlen (script->name_with_extension) + 64;
filename = malloc (length);
if (filename)
{
snprintf (filename, length, "%s/%s/autoload/%s",
- weechat_home,
+ weechat_data_dir,
script_language[script->language],
script->name_with_extension);
if (stat (filename, &st) == 0)
@@ -825,7 +825,7 @@ script_repo_update_status (struct t_script_repo *script)
else
{
snprintf (filename, length, "%s/%s/%s",
- weechat_home,
+ weechat_data_dir,
script_language[script->language],
script->name_with_extension);
if (stat (filename, &st) == 0)
@@ -837,8 +837,8 @@ script_repo_update_status (struct t_script_repo *script)
free (filename);
}
- if (weechat_home)
- free (weechat_home);
+ if (weechat_data_dir)
+ free (weechat_data_dir);
/* check if script is held */
if (script_repo_script_is_held (script))
diff --git a/src/plugins/script/script.c b/src/plugins/script/script.c
index b8fe7319d..4cb9189ba 100644
--- a/src/plugins/script/script.c
+++ b/src/plugins/script/script.c
@@ -371,7 +371,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
script_config_read ();
- weechat_mkdir_home (SCRIPT_PLUGIN_NAME, 0755);
+ weechat_mkdir_home ("${weechat_cache_dir}/" SCRIPT_PLUGIN_NAME, 0755);
script_command_init ();
script_completion_init ();