diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-09-25 14:50:56 +0100 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2020-11-02 17:42:11 +0000 |
commit | 64aaad6349d2b2c45063a5383f877ce9a3a0c354 (patch) | |
tree | 80261e6099c2421820a8e8a8f025a13cd9995c27 /gdbsupport/pathstuff.cc | |
parent | 8768c3e3629657d9728487c680b173868baeee7f (diff) | |
download | binutils-64aaad6349d2b2c45063a5383f877ce9a3a0c354.zip binutils-64aaad6349d2b2c45063a5383f877ce9a3a0c354.tar.gz binutils-64aaad6349d2b2c45063a5383f877ce9a3a0c354.tar.bz2 |
gdb: use get_standard_config_dir when looking for .gdbinit
This commit effectively changes the default location of the .gdbinit
file, while maintaining backward compatibility.
For non Apple hosts the .gdbinit file will now be looked for in the
following locations:
$XDG_CONFIG_HOME/gdb/gdbinit
$HOME/.config/gdb/gdbinit
$HOME/.gdbinit
On Apple hosts the search order is instead:
$HOME/Library/Preferences/gdb/gdbinit
$HOME/.gdbinit
I've performed an extensive rewrite of the documentation, moving all
information about initialization files and where to find them into a
new @node, text from other areas has been moved into this one
location, and other areas cross-reference to this new @node as much as
possible.
gdb/ChangeLog:
* NEWS: Mention changes to config file search path.
* main.c
gdb/doc/ChangeLog:
* gdb.texinfo (Mode Options): Descriptions of initialization files
has been moved to 'Initialization Files'.
(Startup): Likewise.
(Initialization Files): New node.
(gdb man): Update to mention alternative file paths.
(gdbinit man): Likewise.
Diffstat (limited to 'gdbsupport/pathstuff.cc')
-rw-r--r-- | gdbsupport/pathstuff.cc | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gdbsupport/pathstuff.cc b/gdbsupport/pathstuff.cc index 9fb5e5c..a52e53b 100644 --- a/gdbsupport/pathstuff.cc +++ b/gdbsupport/pathstuff.cc @@ -23,6 +23,10 @@ #include "filenames.h" #include "gdb_tilde_expand.h" +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + #ifdef USE_WIN32API #include <windows.h> #endif @@ -298,6 +302,51 @@ get_standard_config_dir () return {}; } +/* See pathstuff.h. */ + +std::string +get_standard_config_filename (const char *filename) +{ + std::string config_dir = get_standard_config_dir (); + if (config_dir != "") + { + const char *tmp = (*filename == '.') ? (filename + 1) : filename; + std::string path = config_dir + SLASH_STRING + std::string (tmp); + return path; + } + + return {}; +} + +/* See pathstuff.h. */ + +std::string +find_gdb_home_config_file (const char *name, struct stat *buf) +{ + gdb_assert (name != nullptr); + gdb_assert (*name != '\0'); + + std::string config_dir_file = get_standard_config_filename (name); + if (!config_dir_file.empty ()) + { + if (stat (config_dir_file.c_str (), buf) == 0) + return config_dir_file; + } + + const char *homedir = getenv ("HOME"); + if (homedir != nullptr) + { + /* Make sure the path is absolute and tilde-expanded. */ + gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (homedir)); + std::string path = (std::string (abs.get ()) + SLASH_STRING + + std::string (name)); + if (stat (path.c_str (), buf) == 0) + return path; + } + + return {}; +} + /* See gdbsupport/pathstuff.h. */ const char * |