Add get_standard_config_dir function

This adds a new get_standard_config_dir, which returns the name of the
configuration directory.  In XDG, this is ~/.config/gdb/.  Future
patches will make use of this.

2020-07-05  Tom Tromey  <tom@tromey.com>

	* pathstuff.h (get_standard_config_dir): Declare.
	* pathstuff.cc (get_standard_config_dir): New function.
This commit is contained in:
Tom Tromey
2020-07-05 13:02:40 -06:00
committed by Andrew Burgess
parent 5b3d3560e9
commit 8768c3e362
3 changed files with 51 additions and 0 deletions

View File

@ -266,6 +266,38 @@ get_standard_temp_dir ()
#endif
}
/* See pathstuff.h. */
std::string
get_standard_config_dir ()
{
#ifdef __APPLE__
#define HOME_CONFIG_DIR "Library/Preferences"
#else
#define HOME_CONFIG_DIR ".config"
#endif
#ifndef __APPLE__
const char *xdg_config_home = getenv ("XDG_CONFIG_HOME");
if (xdg_config_home != NULL)
{
/* Make sure the path is absolute and tilde-expanded. */
gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (xdg_config_home));
return string_printf ("%s/gdb", abs.get ());
}
#endif
const char *home = getenv ("HOME");
if (home != NULL)
{
/* Make sure the path is absolute and tilde-expanded. */
gdb::unique_xmalloc_ptr<char> abs (gdb_abspath (home));
return string_printf ("%s/" HOME_CONFIG_DIR "/gdb", abs.get ());
}
return {};
}
/* See gdbsupport/pathstuff.h. */
const char *