mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
[.config] Read/write configuration from ~/.config/elinks . Refs #199
Note, configs and other files from ~/.elinks/ are not moved to ~/.config/elinks/ automatically. You must do it yourself. ELINKS_CONFDIR and HOME_ETC also are no longer supported.
This commit is contained in:
parent
86a54ca33d
commit
7ea7cacade
@ -56,10 +56,11 @@ EDITOR::
|
||||
|
||||
The program to use for external editor (when editing textareas).
|
||||
|
||||
ELINKS_CONFDIR::
|
||||
XDG_CONFIG_HOME::
|
||||
|
||||
The location of the directory containing configuration files. If not
|
||||
set the default is `~/.elinks/`.
|
||||
The location of the directory containing configuration files. If set
|
||||
configuration files are located in `$XDG_CONFIG_HOME/elinks/`.
|
||||
Otherwise in `~/.config/elinks/`.
|
||||
|
||||
ELINKS_TWTERM, LINKS_TWTERM::
|
||||
|
||||
@ -83,10 +84,6 @@ HOME::
|
||||
|
||||
The path to the users home directory. Used when expanding `~/`.
|
||||
|
||||
HOME_ETC::
|
||||
|
||||
If set the location of the directory containing configuration files
|
||||
is `$HOME_ETC/.elinks/` instead of `~/.elinks/`.
|
||||
|
||||
WWW_HOME::
|
||||
|
||||
@ -96,41 +93,41 @@ FILES
|
||||
-----
|
||||
|
||||
Configuration files controlled by ELinks are located in the user
|
||||
configuration directory, defaulting to '~/.elinks/'. In addition to the
|
||||
configuration directory, defaulting to '~/.config/elinks/'. In addition to the
|
||||
files listed below, a user defined CSS stylesheet can be defined using
|
||||
the 'document.css.stylesheet' option.
|
||||
|
||||
@sysconfdir@/elinks.conf::
|
||||
Site-wide configuration file.
|
||||
|
||||
~/.elinks/elinks.conf::
|
||||
~/.config/elinks/elinks.conf::
|
||||
Per-user config file, loaded after site-wide configuration.
|
||||
|
||||
~/.elinks/bookmarks::
|
||||
~/.config/elinks/bookmarks::
|
||||
Bookmarks file.
|
||||
|
||||
~/.elinks/cookies::
|
||||
~/.config/elinks/cookies::
|
||||
Cookies file.
|
||||
|
||||
~/.elinks/exmodehist::
|
||||
~/.config/elinks/exmodehist::
|
||||
Exmode history file.
|
||||
|
||||
~/.elinks/formhist::
|
||||
~/.config/elinks/formhist::
|
||||
Form history file.
|
||||
|
||||
~/.elinks/globhist::
|
||||
~/.config/elinks/globhist::
|
||||
History file containing most recently visited URLs.
|
||||
|
||||
~/.elinks/gotohist::
|
||||
~/.config/elinks/gotohist::
|
||||
GoTo URL dialog history file.
|
||||
|
||||
~/.elinks/hooks.{js,lua,pl,py,rb,scm}::
|
||||
~/.config/elinks/hooks.{js,lua,pl,py,rb,scm}::
|
||||
Browser scripting hooks.
|
||||
|
||||
~/.elinks/searchhist::
|
||||
~/.config/elinks/searchhist::
|
||||
Search history file.
|
||||
|
||||
~/.elinks/socket::
|
||||
~/.config/elinks/socket::
|
||||
Internal 'ELinks' socket for communication between its instances.
|
||||
|
||||
~/.mailcap, /etc/mailcap::
|
||||
|
@ -14,7 +14,7 @@ keybindings.
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
Key binding for elinks should be placed in the file `~/.elinks/elinks.conf`.
|
||||
Key binding for elinks should be placed in the file `~/.config/elinks/elinks.conf`.
|
||||
Note that any information regarding their format/structure may not be
|
||||
up-to-date. If you will discover that, please feed us with a patch.
|
||||
|
||||
@ -98,7 +98,7 @@ include::{builddir}keymap-actions.txt[]
|
||||
DEFAULT BINDINGS
|
||||
----------------
|
||||
|
||||
The default bindings are shown below. Any bindings in `~/.elinks/elinks.conf`
|
||||
The default bindings are shown below. Any bindings in `~/.config/elinks/elinks.conf`
|
||||
will override these.
|
||||
|
||||
include::{builddir}keymap-defaults.txt[]
|
||||
|
@ -206,7 +206,7 @@ Arguments:
|
||||
|
||||
Description:
|
||||
|
||||
Makes it possible to periodically save files in ~/.elinks to disk.
|
||||
Makes it possible to periodically save files in ~/.config/elinks to disk.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Name: pre-format-html
|
||||
|
@ -128,7 +128,7 @@ Config file
|
||||
|
||||
On startup, ELinks reads in two Lua scripts. Firstly, a system-wide
|
||||
configuration file called `/etc/elinks/hooks.lua`, then a file in your home
|
||||
directory called `~/.elinks/hooks.lua`. From these files, you can include
|
||||
directory called `~/.config/elinks/hooks.lua`. From these files, you can include
|
||||
other Lua files with `dofile`, if necessary.
|
||||
|
||||
To see what kind of things you should put in here, look at
|
||||
@ -243,7 +243,7 @@ WARNING: The `tmpname` function creates the file but does not
|
||||
bind_key (keymap, keystroke, function)::
|
||||
Currently, `keymap` must be the string `"main"`. Keystroke is a
|
||||
keystroke as you would write it in the ELinks config file
|
||||
`~/.elinks/elinks.conf`. The function `function` should take no
|
||||
`~/.config/elinks/elinks.conf`. The function `function` should take no
|
||||
arguments, and should return the same values as `lua_console_hook`.
|
||||
|
||||
edit_bookmark_dialog (cat, name, url, function)::
|
||||
|
@ -15,7 +15,7 @@ DESCRIPTION
|
||||
If ELinks is compiled with an embedded Python interpreter, it will try
|
||||
to import a Python module called hooks when the browser starts up. To
|
||||
use Python code from within ELinks, create a file called hooks.py in
|
||||
the ~/.elinks directory, or in the system-wide configuration directory
|
||||
the ~/.config/elinks directory, or in the system-wide configuration directory
|
||||
(defined when ELinks was compiled), or in the standard Python search path.
|
||||
An example hooks.py file can be found in the contrib/python directory of
|
||||
the ELinks source distribution.
|
||||
@ -112,7 +112,7 @@ DESCRIPTION
|
||||
|
||||
Other public objects:
|
||||
|
||||
home -- A string containing the pathname of the ~/.elinks directory, or
|
||||
home -- A string containing the pathname of the ~/.config/elinks directory, or
|
||||
None if ELinks has no configuration directory.
|
||||
|
||||
FUNCTIONS
|
||||
|
@ -31,7 +31,7 @@ Limitations and outstanding issues
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Remote control is implemented using the intercommunication socket created in
|
||||
~/.elinks/, so the command has to be run on the same machine as the instance
|
||||
~/.config/elinks/, so the command has to be run on the same machine as the instance
|
||||
you want to control; or put differently: the two ELinkses need to share a file
|
||||
system that supports socket files, which rules out usage of -remote over NFS.
|
||||
This also implies that the ELinks instance you want to control should be
|
||||
|
@ -20,7 +20,7 @@ you don't have a `hooks.js` file, there is not much risk in enabling the
|
||||
feature at compile time.
|
||||
|
||||
When ELinks starts up, it evaluates the ECMAScript file `hooks.js` in
|
||||
your ELinks configuration directory (thus normally `~/.elinks/hooks.js`
|
||||
your ELinks configuration directory (thus normally `~/.config/elinks/hooks.js`
|
||||
on Unix-like systems), or if the file does not exist there, then in
|
||||
the system-wide ELinks configuration directory (the location depends
|
||||
on how ELinks was built, but `/etc/elinks/hooks.js` is typical).
|
||||
@ -47,7 +47,7 @@ Global Object Methods
|
||||
+
|
||||
--
|
||||
----------------------------------------------------------------------
|
||||
do_file("/home/me/.elinks/hooks.js");
|
||||
do_file("/home/me/.config/elinks/hooks.js");
|
||||
----------------------------------------------------------------------
|
||||
|
||||
will reload your hooks file.
|
||||
|
@ -286,19 +286,20 @@ add_to_input_history(struct input_history *history, char *data,
|
||||
int
|
||||
load_input_history(struct input_history *history, const char *filename)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char *history_file = (char *)filename;
|
||||
char line[MAX_STR_LEN];
|
||||
FILE *file;
|
||||
|
||||
if (get_cmd_opt_bool("anonymous")) return 0;
|
||||
if (elinks_home) {
|
||||
history_file = straconcat(elinks_home, filename,
|
||||
if (xdg_config_home) {
|
||||
history_file = straconcat(xdg_config_home, filename,
|
||||
(char *) NULL);
|
||||
if (!history_file) return 0;
|
||||
}
|
||||
|
||||
file = fopen(history_file, "rb");
|
||||
if (elinks_home) mem_free(history_file);
|
||||
if (xdg_config_home) mem_free(history_file);
|
||||
if (!file) return 0;
|
||||
|
||||
history->nosave = 1;
|
||||
@ -329,17 +330,18 @@ load_input_history(struct input_history *history, const char *filename)
|
||||
int
|
||||
save_input_history(struct input_history *history, const char *filename)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
struct input_history_entry *entry;
|
||||
struct secure_save_info *ssi;
|
||||
char *history_file;
|
||||
int i = 0;
|
||||
|
||||
if (!history->dirty
|
||||
|| !elinks_home
|
||||
|| !xdg_config_home
|
||||
|| get_cmd_opt_bool("anonymous"))
|
||||
return 0;
|
||||
|
||||
history_file = straconcat(elinks_home, filename,
|
||||
history_file = straconcat(xdg_config_home, filename,
|
||||
(char *) NULL);
|
||||
if (!history_file) return -1;
|
||||
|
||||
|
@ -45,6 +45,7 @@ static int loaded_backend_num = -1;
|
||||
void
|
||||
bookmarks_read(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
int backend_num = get_opt_int("bookmarks.file_format", NULL);
|
||||
struct bookmarks_backend *backend = bookmarks_backends[backend_num];
|
||||
char *file_name;
|
||||
@ -57,8 +58,8 @@ bookmarks_read(void)
|
||||
|
||||
file_name_orig = backend->filename(0);
|
||||
if (!file_name_orig) return;
|
||||
if (elinks_home) {
|
||||
file_name = straconcat(elinks_home, file_name_orig,
|
||||
if (xdg_config_home) {
|
||||
file_name = straconcat(xdg_config_home, file_name_orig,
|
||||
(char *) NULL);
|
||||
if (!file_name) return;
|
||||
f = fopen(file_name, "rb");
|
||||
@ -84,11 +85,12 @@ bookmarks_write(LIST_OF(struct bookmark) *bookmarks_list)
|
||||
struct secure_save_info *ssi;
|
||||
char *file_name;
|
||||
const char *file_name_orig;
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
if (!bookmarks_are_dirty() && backend_num == loaded_backend_num) return;
|
||||
if (!backend
|
||||
|| !backend->write
|
||||
|| !elinks_home
|
||||
|| !xdg_config_home
|
||||
|| !backend->filename) return;
|
||||
|
||||
/* We do this two-passes because we want backend to possibly decide to
|
||||
@ -96,7 +98,7 @@ bookmarks_write(LIST_OF(struct bookmark) *bookmarks_list)
|
||||
* they would be just truncated to zero by secure_open()). */
|
||||
file_name_orig = backend->filename(1);
|
||||
if (!file_name_orig) return;
|
||||
file_name = straconcat(elinks_home, file_name_orig, (char *) NULL);
|
||||
file_name = straconcat(xdg_config_home, file_name_orig, (char *) NULL);
|
||||
if (!file_name) return;
|
||||
|
||||
ssi = secure_open(file_name);
|
||||
|
@ -578,6 +578,7 @@ static enum parse_error
|
||||
parse_include(struct option *opt_tree, struct conf_parsing_state *state,
|
||||
struct string *mirror, int is_system_conf)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char *fname;
|
||||
struct string dumbstring;
|
||||
struct conf_parsing_pos before_error;
|
||||
@ -609,7 +610,7 @@ parse_include(struct option *opt_tree, struct conf_parsing_state *state,
|
||||
/* XXX: We should try CONFDIR/<file> when proceeding
|
||||
* CONFDIR/<otherfile> ;). --pasky */
|
||||
if (load_config_file(fname[0] == '/' ? (char *) ""
|
||||
: elinks_home,
|
||||
: xdg_config_home,
|
||||
fname, opt_tree,
|
||||
mirror ? &dumbstring : NULL, 1)) {
|
||||
done_string(&dumbstring);
|
||||
@ -837,7 +838,7 @@ static void
|
||||
load_config_from(char *file, struct option *tree)
|
||||
{
|
||||
load_config_file(CONFDIR, file, tree, NULL, 1);
|
||||
load_config_file(empty_string_or_(elinks_home), file, tree, NULL, 0);
|
||||
load_config_file(empty_string_or_(get_xdg_config_home()), file, tree, NULL, 0);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1306,7 +1307,9 @@ free_cfg_str:
|
||||
int
|
||||
write_config(struct terminal *term)
|
||||
{
|
||||
if (!elinks_home) {
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
if (!xdg_config_home) {
|
||||
if (term) {
|
||||
write_config_dialog(term, get_cmd_opt_str("config-file"),
|
||||
SS_ERR_DISABLED, 0);
|
||||
@ -1314,7 +1317,7 @@ write_config(struct terminal *term)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return write_config_file(elinks_home, get_cmd_opt_str("config-file"),
|
||||
return write_config_file(xdg_config_home, get_cmd_opt_str("config-file"),
|
||||
term);
|
||||
}
|
||||
|
||||
|
@ -24,8 +24,8 @@
|
||||
#include "util/string.h"
|
||||
|
||||
|
||||
char *elinks_home = NULL;
|
||||
int first_use = 0;
|
||||
static char *xdg_config_home = NULL;
|
||||
|
||||
static inline void
|
||||
strip_trailing_dir_sep(char *path)
|
||||
@ -106,6 +106,58 @@ elinks_dirname(char *path)
|
||||
return dir;
|
||||
}
|
||||
|
||||
char *
|
||||
get_xdg_config_home(void)
|
||||
{
|
||||
if (xdg_config_home) {
|
||||
return xdg_config_home;
|
||||
}
|
||||
char *g_xdg_config_home = getenv("XDG_CONFIG_HOME");
|
||||
|
||||
if (g_xdg_config_home && *g_xdg_config_home) {
|
||||
xdg_config_home = test_confdir(g_xdg_config_home,
|
||||
get_cmd_opt_str("config-dir"),
|
||||
N_("Commandline options -config-dir set to %s, "
|
||||
"but could not create directory %s."));
|
||||
if (xdg_config_home) {
|
||||
return xdg_config_home;
|
||||
}
|
||||
xdg_config_home = test_confdir(g_xdg_config_home, "elinks", NULL);
|
||||
|
||||
if (xdg_config_home) {
|
||||
return xdg_config_home;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
char *home = getenv("HOME");
|
||||
|
||||
if (!home || !*home) {
|
||||
return NULL;
|
||||
}
|
||||
char *config_dir = straconcat(home, STRING_DIR_SEP, ".config", NULL);
|
||||
|
||||
if (!config_dir) {
|
||||
return NULL;
|
||||
}
|
||||
xdg_config_home = test_confdir(config_dir,
|
||||
get_cmd_opt_str("config-dir"),
|
||||
N_("Commandline options -config-dir set to %s, "
|
||||
"but could not create directory %s."));
|
||||
if (xdg_config_home) {
|
||||
mem_free(config_dir);
|
||||
return xdg_config_home;
|
||||
}
|
||||
xdg_config_home = test_confdir(config_dir, "elinks", NULL);
|
||||
|
||||
if (xdg_config_home) {
|
||||
mem_free(config_dir);
|
||||
return xdg_config_home;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *
|
||||
get_home(void)
|
||||
{
|
||||
@ -151,8 +203,8 @@ void
|
||||
init_home(void)
|
||||
{
|
||||
first_use = 1;
|
||||
elinks_home = get_home();
|
||||
if (!elinks_home) {
|
||||
xdg_config_home = get_xdg_config_home();
|
||||
if (!xdg_config_home) {
|
||||
ERROR(gettext("Unable to find or create ELinks config "
|
||||
"directory. Please check if you have $HOME "
|
||||
"variable set correctly and if you have "
|
||||
@ -165,5 +217,5 @@ init_home(void)
|
||||
void
|
||||
done_home(void)
|
||||
{
|
||||
mem_free_if(elinks_home);
|
||||
mem_free_set(&xdg_config_home, NULL);
|
||||
}
|
||||
|
@ -5,11 +5,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char *elinks_home;
|
||||
extern int first_use;
|
||||
|
||||
void init_home(void);
|
||||
void done_home(void);
|
||||
char *get_xdg_config_home(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -886,7 +886,8 @@ change_hook_ui_double_esc(struct session *ses, struct option *current, struct op
|
||||
static int
|
||||
change_hook_ui_mouse_disable(struct session *ses, struct option *current, struct option *changed)
|
||||
{
|
||||
char *lock_filename = straconcat(empty_string_or_(elinks_home), "mouse.lock", (char *)NULL);
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char *lock_filename = straconcat(empty_string_or_(xdg_config_home), "mouse.lock", (char *)NULL);
|
||||
|
||||
if (lock_filename) {
|
||||
if (changed->value.number) {
|
||||
|
@ -691,6 +691,7 @@ static void done_cookies(struct module *module);
|
||||
|
||||
void
|
||||
load_cookies(void) {
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
/* Buffer size is set to be enough to read long lines that
|
||||
* save_cookies may write. 6 is choosen after the fprintf(..) call
|
||||
* in save_cookies(). --Zas */
|
||||
@ -700,8 +701,8 @@ load_cookies(void) {
|
||||
FILE *fp;
|
||||
time_t now;
|
||||
|
||||
if (elinks_home) {
|
||||
cookfile = straconcat(elinks_home, cookfile_orig,
|
||||
if (xdg_config_home) {
|
||||
cookfile = straconcat(xdg_config_home, cookfile_orig,
|
||||
(char *) NULL);
|
||||
if (!cookfile) return;
|
||||
}
|
||||
@ -712,7 +713,7 @@ load_cookies(void) {
|
||||
done_cookies(&cookies_module);
|
||||
cookies_nosave = 0;
|
||||
|
||||
if (elinks_home) {
|
||||
if (xdg_config_home) {
|
||||
fp = fopen(cookfile, "rb");
|
||||
mem_free(cookfile);
|
||||
} else {
|
||||
@ -821,6 +822,7 @@ save_cookies(struct terminal *term) {
|
||||
char *cookfile;
|
||||
struct secure_save_info *ssi;
|
||||
time_t now;
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
#ifdef CONFIG_SMALL
|
||||
# define CANNOT_SAVE_COOKIES(flags, message)
|
||||
@ -838,7 +840,7 @@ save_cookies(struct terminal *term) {
|
||||
if_assert_failed {}
|
||||
return;
|
||||
}
|
||||
if (!elinks_home) {
|
||||
if (!xdg_config_home) {
|
||||
CANNOT_SAVE_COOKIES(0, N_("ELinks was started without a home directory."));
|
||||
return;
|
||||
}
|
||||
@ -849,7 +851,7 @@ save_cookies(struct terminal *term) {
|
||||
return;
|
||||
}
|
||||
|
||||
cookfile = straconcat(elinks_home, COOKIES_FILENAME,
|
||||
cookfile = straconcat(xdg_config_home, COOKIES_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!cookfile) {
|
||||
CANNOT_SAVE_COOKIES(0, N_("Out of memory"));
|
||||
|
@ -155,6 +155,7 @@ static void
|
||||
import_css_file(struct css_stylesheet *css, struct uri *base_uri,
|
||||
const char *url, int urllen)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
struct string string, filename;
|
||||
|
||||
if (!*url
|
||||
@ -162,8 +163,8 @@ import_css_file(struct css_stylesheet *css, struct uri *base_uri,
|
||||
|| !init_string(&filename))
|
||||
return;
|
||||
|
||||
if (*url != '/' && elinks_home) {
|
||||
add_to_string(&filename, elinks_home);
|
||||
if (*url != '/' && xdg_config_home) {
|
||||
add_to_string(&filename, xdg_config_home);
|
||||
}
|
||||
|
||||
add_bytes_to_string(&filename, url, urllen);
|
||||
|
@ -163,15 +163,16 @@ is_prefix(char *prefix, char *url, int dl)
|
||||
static void
|
||||
read_url_list(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char line[4096];
|
||||
char *filename;
|
||||
FILE *f;
|
||||
|
||||
if (!elinks_home) {
|
||||
if (!xdg_config_home) {
|
||||
return;
|
||||
}
|
||||
|
||||
filename = straconcat(elinks_home, STRING_DIR_SEP, ALLOWED_ECMASCRIPT_URL_PREFIXES, NULL);
|
||||
filename = straconcat(xdg_config_home, STRING_DIR_SEP, ALLOWED_ECMASCRIPT_URL_PREFIXES, NULL);
|
||||
|
||||
if (filename) {
|
||||
|
||||
@ -186,7 +187,7 @@ read_url_list(void)
|
||||
mem_free(filename);
|
||||
}
|
||||
|
||||
filename = straconcat(elinks_home, STRING_DIR_SEP, DISALLOWED_ECMASCRIPT_URL_PREFIXES, NULL);
|
||||
filename = straconcat(xdg_config_home, STRING_DIR_SEP, DISALLOWED_ECMASCRIPT_URL_PREFIXES, NULL);
|
||||
|
||||
if (filename) {
|
||||
|
||||
@ -829,17 +830,18 @@ ecmascript_set_timeout2m(js_State *J, const char *handle, int timeout)
|
||||
static void
|
||||
init_ecmascript_module(struct module *module)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
read_url_list();
|
||||
|
||||
if (elinks_home) {
|
||||
if (xdg_config_home) {
|
||||
/* ecmascript console log */
|
||||
console_log_filename = straconcat(elinks_home, "/console.log", NULL);
|
||||
console_error_filename = straconcat(elinks_home, "/console.err", NULL);
|
||||
console_log_filename = straconcat(xdg_config_home, "/console.log", NULL);
|
||||
console_error_filename = straconcat(xdg_config_home, "/console.err", NULL);
|
||||
/* ecmascript local storage db location */
|
||||
#ifdef CONFIG_OS_DOS
|
||||
local_storage_filename = stracpy("elinks_ls.db");
|
||||
#else
|
||||
local_storage_filename = straconcat(elinks_home, "/elinks_ls.db", NULL);
|
||||
local_storage_filename = straconcat(xdg_config_home, "/elinks_ls.db", NULL);
|
||||
#endif
|
||||
}
|
||||
ecmascript_enabled = get_opt_bool("ecmascript.enable", NULL);
|
||||
|
@ -90,6 +90,7 @@ static int loaded = 0;
|
||||
int
|
||||
load_formhist_from_file(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
struct formhist_data *form;
|
||||
char tmp[MAX_STR_LEN];
|
||||
char *file;
|
||||
@ -97,9 +98,9 @@ load_formhist_from_file(void)
|
||||
|
||||
if (loaded) return 1;
|
||||
|
||||
if (!elinks_home) return 0;
|
||||
if (!xdg_config_home) return 0;
|
||||
|
||||
file = straconcat(elinks_home, FORMS_HISTORY_FILENAME,
|
||||
file = straconcat(xdg_config_home, FORMS_HISTORY_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!file) return 0;
|
||||
|
||||
@ -215,15 +216,16 @@ fail:
|
||||
int
|
||||
save_formhist_to_file(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
struct secure_save_info *ssi;
|
||||
char *file;
|
||||
struct formhist_data *form;
|
||||
int r;
|
||||
|
||||
if (!elinks_home || get_cmd_opt_bool("anonymous"))
|
||||
if (!xdg_config_home || get_cmd_opt_bool("anonymous"))
|
||||
return 0;
|
||||
|
||||
file = straconcat(elinks_home, FORMS_HISTORY_FILENAME,
|
||||
file = straconcat(xdg_config_home, FORMS_HISTORY_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!file) return 0;
|
||||
|
||||
|
@ -327,6 +327,7 @@ globhist_simple_search(char *search_url, char *search_title)
|
||||
static void
|
||||
read_global_history(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char in_buffer[MAX_STR_LEN * 3];
|
||||
char *title;
|
||||
FILE *f;
|
||||
@ -335,8 +336,8 @@ read_global_history(void)
|
||||
|| get_cmd_opt_bool("anonymous"))
|
||||
return;
|
||||
|
||||
if (elinks_home) {
|
||||
char *file_name = straconcat(elinks_home, GLOBAL_HISTORY_FILENAME,
|
||||
if (xdg_config_home) {
|
||||
char *file_name = straconcat(xdg_config_home, GLOBAL_HISTORY_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!file_name) return;
|
||||
|
||||
@ -375,16 +376,17 @@ read_global_history(void)
|
||||
static void
|
||||
write_global_history(void)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
struct global_history_item *history_item;
|
||||
char *file_name;
|
||||
struct secure_save_info *ssi;
|
||||
|
||||
if (!global_history.dirty || !elinks_home
|
||||
if (!global_history.dirty || !xdg_config_home
|
||||
|| !get_globhist_enable()
|
||||
|| get_cmd_opt_bool("anonymous"))
|
||||
return;
|
||||
|
||||
file_name = straconcat(elinks_home, GLOBAL_HISTORY_FILENAME,
|
||||
file_name = straconcat(xdg_config_home, GLOBAL_HISTORY_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!file_name) return;
|
||||
|
||||
|
@ -114,14 +114,16 @@ enum addr_type {
|
||||
static int
|
||||
get_sun_path(struct string *sun_path)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
assert(sun_path);
|
||||
if_assert_failed return 0;
|
||||
|
||||
if (!elinks_home) return 0;
|
||||
if (!xdg_config_home) return 0;
|
||||
|
||||
if (!init_string(sun_path)) return 0;
|
||||
|
||||
add_to_string(sun_path, elinks_home);
|
||||
add_to_string(sun_path, xdg_config_home);
|
||||
add_to_string(sun_path, ELINKS_SOCK_NAME);
|
||||
add_long_to_string(sun_path,
|
||||
get_cmd_opt_int("session-ring"));
|
||||
|
@ -334,7 +334,7 @@ static union option_info gnutls_options[] = {
|
||||
* change the file name via the option manager. Distributors
|
||||
* of binary packages should of course change the default to
|
||||
* suit their systems.
|
||||
* TODO: If the file name is relative, look in elinks_home? */
|
||||
* TODO: If the file name is relative, look in xdg_config_home? */
|
||||
INIT_OPT_STRING("connection.ssl", N_("Trusted CA file"),
|
||||
"trusted_ca_file", OPT_ZERO,
|
||||
#ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_SYSTEM_TRUST
|
||||
|
@ -45,6 +45,7 @@ static char elguileversion[32];
|
||||
void
|
||||
init_guile(struct module *module)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
SCM user_module;
|
||||
char *path;
|
||||
|
||||
@ -53,12 +54,12 @@ init_guile(struct module *module)
|
||||
snprintf(elguileversion, 31, "Guile %s", scm_to_locale_string(scm_version()));
|
||||
module->name = elguileversion;
|
||||
|
||||
if (!elinks_home) return;
|
||||
if (!xdg_config_home) return;
|
||||
|
||||
/* Remember the current module. */
|
||||
user_module = scm_current_module();
|
||||
|
||||
path = straconcat(elinks_home, GUILE_HOOKS_FILENAME,
|
||||
path = straconcat(xdg_config_home, GUILE_HOOKS_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!path) return;
|
||||
|
||||
@ -81,7 +82,7 @@ init_guile(struct module *module)
|
||||
|
||||
mem_free(path);
|
||||
|
||||
path = straconcat(elinks_home, GUILE_USERHOOKS_FILENAME,
|
||||
path = straconcat(xdg_config_home, GUILE_USERHOOKS_FILENAME,
|
||||
(char *) NULL);
|
||||
if (!path) return;
|
||||
if (file_can_read(path))
|
||||
|
@ -720,6 +720,8 @@ static char elluaversion[32];
|
||||
void
|
||||
init_lua(struct module *module)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
L = luaL_newstate();
|
||||
|
||||
luaL_openlibs(L);
|
||||
@ -741,12 +743,12 @@ init_lua(struct module *module)
|
||||
lua_register(L, "reload", l_reload);
|
||||
lua_register(L, "goto_url", l_goto_url);
|
||||
|
||||
lua_pushstring(L, elinks_home ? elinks_home
|
||||
lua_pushstring(L, xdg_config_home ? xdg_config_home
|
||||
: (char *) CONFDIR);
|
||||
lua_setglobal(L, "elinks_home");
|
||||
|
||||
do_hooks_file(L, CONFDIR, LUA_HOOKS_FILENAME);
|
||||
if (elinks_home) do_hooks_file(L, elinks_home, LUA_HOOKS_FILENAME);
|
||||
if (xdg_config_home) do_hooks_file(L, xdg_config_home, LUA_HOOKS_FILENAME);
|
||||
strncpy(elluaversion, LUA_RELEASE, 31);
|
||||
|
||||
module->name = elluaversion;
|
||||
|
@ -45,14 +45,14 @@ static char *
|
||||
get_local_hook_file(void)
|
||||
{
|
||||
static char buf[1024]; /* TODO: MAX_PATH ??? --Zas */
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
if (!elinks_home) return NULL;
|
||||
snprintf(buf, sizeof(buf), "%s%s", elinks_home, PERL_HOOKS_FILENAME);
|
||||
if (!xdg_config_home) return NULL;
|
||||
snprintf(buf, sizeof(buf), "%s%s", xdg_config_home, PERL_HOOKS_FILENAME);
|
||||
if (file_exists(buf)) return buf;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
precleanup_perl(struct module *module)
|
||||
{
|
||||
|
@ -101,11 +101,12 @@ set_python_search_path(void)
|
||||
struct string new_python_path;
|
||||
char *old_python_path;
|
||||
int result = -1;
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
if (!init_string(&new_python_path)) return result;
|
||||
|
||||
if (elinks_home && !add_format_to_string(&new_python_path, "%s%c",
|
||||
elinks_home, DELIM))
|
||||
if (xdg_config_home && !add_format_to_string(&new_python_path, "%s%c",
|
||||
xdg_config_home, DELIM))
|
||||
goto end;
|
||||
|
||||
if (!add_to_string(&new_python_path, CONFDIR))
|
||||
@ -329,6 +330,7 @@ PyMODINIT_FUNC
|
||||
PyInit_elinks(void)
|
||||
{
|
||||
PyObject *elinks_module, *module_dict, *module_name;
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
if (replace_showwarning() != 0) {
|
||||
goto python_error;
|
||||
@ -344,9 +346,9 @@ PyInit_elinks(void)
|
||||
goto python_error;
|
||||
}
|
||||
|
||||
/* If @elinks_home is NULL, Py_BuildValue() returns a None reference. */
|
||||
/* If @xdg_config_home is NULL, Py_BuildValue() returns a None reference. */
|
||||
if (PyModule_AddObject(elinks_module, "home",
|
||||
Py_BuildValue("s", elinks_home)) != 0) {
|
||||
Py_BuildValue("s", xdg_config_home)) != 0) {
|
||||
goto python_error;
|
||||
}
|
||||
|
||||
|
@ -206,12 +206,12 @@ erb_module_method_missing(int argc, VALUE *argv, VALUE self)
|
||||
static void
|
||||
init_erb_module(void)
|
||||
{
|
||||
char *home;
|
||||
char *home = get_xdg_config_home();
|
||||
|
||||
erb_module = rb_define_module("ELinks");
|
||||
rb_define_const(erb_module, "VERSION", rb_str_new2(VERSION_STRING));
|
||||
|
||||
home = elinks_home ? elinks_home : (char *) CONFDIR;
|
||||
home = home ?: (char *) CONFDIR;
|
||||
rb_define_const(erb_module, "HOME", rb_str_new2(home));
|
||||
|
||||
rb_define_module_function(erb_module, "message", (VALUE (*)(ANYARGS))erb_module_message, 1);
|
||||
@ -225,6 +225,7 @@ static char elrubyversion[32];
|
||||
void
|
||||
init_ruby(struct module *module)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
char *path;
|
||||
|
||||
/* Set up and initialize the interpreter. This function should be called
|
||||
@ -243,8 +244,8 @@ init_ruby(struct module *module)
|
||||
snprintf(elrubyversion, 31, "Ruby %s", ruby_version);
|
||||
module->name = elrubyversion;
|
||||
|
||||
if (elinks_home) {
|
||||
path = straconcat(elinks_home, RUBY_HOOKS_FILENAME,
|
||||
if (xdg_config_home) {
|
||||
path = straconcat(xdg_config_home, RUBY_HOOKS_FILENAME,
|
||||
(char *) NULL);
|
||||
|
||||
} else {
|
||||
|
@ -121,11 +121,12 @@ static void
|
||||
smjs_load_hooks(void)
|
||||
{
|
||||
char *path;
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
|
||||
assert(smjs_ctx);
|
||||
|
||||
if (elinks_home) {
|
||||
path = straconcat(elinks_home, SMJS_HOOKS_FILENAME,
|
||||
if (xdg_config_home) {
|
||||
path = straconcat(xdg_config_home, SMJS_HOOKS_FILENAME,
|
||||
(char *) NULL);
|
||||
} else {
|
||||
path = stracpy(CONFDIR STRING_DIR_SEP SMJS_HOOKS_FILENAME);
|
||||
|
@ -183,6 +183,7 @@ smjs_invoke_elinks_object_method(const char *method, int argc, JS::Value *argv,
|
||||
static bool
|
||||
elinks_get_property_home(JSContext *ctx, unsigned int argc, JS::Value *vp)
|
||||
{
|
||||
char *xdg_config_home = get_xdg_config_home();
|
||||
JS::CallArgs args = CallArgsFromVp(argc, vp);
|
||||
JS::RootedObject hobj(ctx, &args.thisv().toObject());
|
||||
|
||||
@ -192,7 +193,7 @@ elinks_get_property_home(JSContext *ctx, unsigned int argc, JS::Value *vp)
|
||||
if (!JS_InstanceOf(ctx, hobj, (JSClass *) &elinks_class, NULL))
|
||||
return false;
|
||||
|
||||
args.rval().setString(JS_NewStringCopyZ(smjs_ctx, elinks_home));
|
||||
args.rval().setString(JS_NewStringCopyZ(smjs_ctx, xdg_config_home));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -964,7 +964,9 @@ setup_first_session(struct session *ses, struct uri *uri)
|
||||
N_("Welcome"), ALIGN_CENTER,
|
||||
N_("Welcome to ELinks!\n\n"
|
||||
"Press ESC for menu. Documentation is available in "
|
||||
"Help menu."),
|
||||
"Help menu.\n"
|
||||
"ATTENTION. Since 0.17.GIT configuration is read from and written to $XDG_CONFIG_HOME/elinks or ~/.config/elinks.\n"
|
||||
"So if you did not copy it yet from ~/.elinks, do it now and start again."),
|
||||
ses, 1,
|
||||
MSG_BOX_BUTTON(N_("~OK"), (void (*)(void *))handler, B_ENTER | B_ESC));
|
||||
|
||||
|
@ -88,7 +88,7 @@ disable_mouse(void)
|
||||
static int
|
||||
mouse_lock_exists(void)
|
||||
{
|
||||
char *lock_filename = straconcat(empty_string_or_(elinks_home), "mouse.lock", (char *) NULL);
|
||||
char *lock_filename = straconcat(empty_string_or_(get_xdg_config_home()), "mouse.lock", (char *) NULL);
|
||||
int res = 0;
|
||||
|
||||
if (lock_filename) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user