mirror of
https://github.com/MidnightCommander/mc
synced 2025-01-03 10:04:32 +03:00
Merge branch '3684_mc_profile_root'
* 3684_mc_profile_root: (mc_config_init_config_paths): minor optimization. Rename mc_config_get_profile_root() to mc_get_profile_root() Fix manual pages. Ticket #3684: replace $MC_HOME with $MC_PROFILE_ROOT, a better "profile" mechanism.
This commit is contained in:
commit
61c681de94
@ -4258,10 +4258,10 @@ personal o de sistema.
|
||||
.PP
|
||||
Para cambiar el directorio de incio de MC se puede utilizar la variable de
|
||||
entorno
|
||||
.BR MC_HOME .
|
||||
El valor de MC_HOME tiene que ser una ruta absoluta. Si MC_HOME no existe o
|
||||
está vacía se usa la variable HOME. Si HOME no existe o está vacía se recurre
|
||||
a la biblioteca GLib para obtener los directorios de MC.
|
||||
.BR MC_PROFILE_ROOT .
|
||||
El valor de MC_PROFILE_ROOT tiene que ser una ruta absoluta. Si MC_PROFILE_ROOT
|
||||
no existe o está vacía se usa la variable HOME. Si HOME no existe o está vacía
|
||||
se recurre a la biblioteca GLib para obtener los directorios de MC.
|
||||
.\"SKIP_SECTION"
|
||||
.SH "LICENCIA"
|
||||
Este programa se distribuye en los términos que recoge la Licencia Pública
|
||||
|
@ -3242,10 +3242,10 @@ Helyi felhasználó által definiált menü. Ha ez a fájl létezik, ezt
|
||||
használja a home, vagy rendszerszintű alkalmazás menü helyett.
|
||||
.PP
|
||||
To change default home directory of MC, you can use
|
||||
.BR MC_HOME
|
||||
environment variable. The value of MC_HOME must be an absolute path. If MC_HOME
|
||||
is unset or empty, HOME variable is used. If HOME is unset or empty, MC
|
||||
directories are get from GLib library.
|
||||
.BR MC_PROFILE_ROOT
|
||||
environment variable. The value of MC_PROFILE_ROOT must be an absolute path.
|
||||
If MC_PROFILE_ROOT is unset or empty, HOME variable is used. If HOME is unset
|
||||
or empty, MC directories are get from GLib library.
|
||||
.\"NODE "AVAILABILITY"
|
||||
.SH "A Midnight Commander frissítése"
|
||||
A program legutolsó verzióját az ftp.nuclecu.unam.mx címen a
|
||||
|
@ -3231,10 +3231,10 @@ Menu locale definito dall'utente. Se questo file è presente viene usato
|
||||
al posto del menu delle applicazioni utente o di sistema.
|
||||
.PP
|
||||
To change default home directory of MC, you can use
|
||||
.BR MC_HOME
|
||||
environment variable. The value of MC_HOME must be an absolute path. If MC_HOME
|
||||
is unset or empty, HOME variable is used. If HOME is unset or empty, MC
|
||||
directories are get from GLib library.
|
||||
.BR MC_PROFILE_ROOT
|
||||
environment variable. The value of MC_PROFILE_ROOT must be an absolute path.
|
||||
If MC_PROFILE_ROOT is unset or empty, HOME variable is used. If HOME is unset
|
||||
or empty, MC directories are get from GLib library.
|
||||
.\"SKIP_SECTION"
|
||||
.SH "LICENZA"
|
||||
Questo programma è distribuito sotto i termini della Licenza Generale
|
||||
|
@ -4341,10 +4341,10 @@ Local user\-defined menu. If this file is present, it is used instead of
|
||||
the home or system\-wide applications menu.
|
||||
.PP
|
||||
To change default root directory of MC, you can use
|
||||
.BR MC_HOME
|
||||
environment variable. The value of MC_HOME must be an absolute path. If MC_HOME
|
||||
is unset or empty, HOME variable is used. If HOME is unset or empty, MC
|
||||
directories are get from GLib library.
|
||||
.BR MC_PROFILE_ROOT
|
||||
environment variable. The value of MC_PROFILE_ROOT must be an absolute path.
|
||||
If MC_PROFILE_ROOT is unset or empty, HOME variable is used. If HOME is unset
|
||||
or empty, MC directories are get from GLib library.
|
||||
.\"SKIP_SECTION"
|
||||
.SH "LICENSE"
|
||||
This program is distributed under the terms of the GNU General Public
|
||||
|
@ -2939,10 +2939,10 @@ Lokalny plik zdefiniowany przez użytkownika. Jeśli ten plik jest dostępny,
|
||||
jest używany zamiast pliku w katalogu domowym i ogólnosystemowego.
|
||||
.PP
|
||||
To change default home directory of MC, you can use
|
||||
.BR MC_HOME
|
||||
environment variable. The value of MC_HOME must be an absolute path. If MC_HOME
|
||||
is unset or empty, HOME variable is used. If HOME is unset or empty, MC
|
||||
directories are get from GLib library.
|
||||
.BR MC_PROFILE_ROOT
|
||||
environment variable. The value of MC_PROFILE_ROOT must be an absolute path.
|
||||
If MC_PROFILE_ROOT is unset or empty, HOME variable is used. If HOME is unset
|
||||
or empty, MC directories are get from GLib library.
|
||||
.\"SKIP_SECTION"
|
||||
.SH LICENCJA
|
||||
Program jest dystrybuowany na zasadach licencji GNU General Public License
|
||||
|
@ -4727,8 +4727,8 @@ Commander; используется только в тех случаях, ко
|
||||
.PP
|
||||
Для того, чтобы изменить корневой каталог MC, установленный по умолчанию,
|
||||
можно использовать переменную окружения
|
||||
.BR MC_HOME .
|
||||
Значением этой переменный должен быть абсолютный путь. Если переменная MC_HOME
|
||||
.BR MC_PROFILE_ROOT .
|
||||
Значением этой переменный должен быть абсолютный путь. Если переменная MC_PROFILE_ROOT
|
||||
не определена или пуста, используется переменная окружения HOME. Если и HOME
|
||||
не определена или пуста, каталоги MC определяются средствами библиотеки GLib.
|
||||
.\"SKIP_SECTION"
|
||||
|
@ -51,9 +51,6 @@ static char *mc_config_str = NULL;
|
||||
static char *mc_cache_str = NULL;
|
||||
static char *mc_data_str = NULL;
|
||||
|
||||
/* value of $MC_HOME */
|
||||
static const char *mc_home = NULL;
|
||||
|
||||
static gboolean config_dir_present = FALSE;
|
||||
|
||||
static const struct
|
||||
@ -285,6 +282,7 @@ mc_config_deprecated_dir_present (void)
|
||||
void
|
||||
mc_config_init_config_paths (GError ** mcerror)
|
||||
{
|
||||
const char *profile_root;
|
||||
char *dir;
|
||||
#if MC_HOMEDIR_XDG == 0
|
||||
char *defined_userconf_dir;
|
||||
@ -295,21 +293,27 @@ mc_config_init_config_paths (GError ** mcerror)
|
||||
if (xdg_vars_initialized)
|
||||
return;
|
||||
|
||||
/* init mc_home if not yet */
|
||||
(void) mc_config_get_home_dir ();
|
||||
profile_root = mc_get_profile_root ();
|
||||
|
||||
#if MC_HOMEDIR_XDG
|
||||
if (mc_home != NULL)
|
||||
if (strcmp (profile_root, mc_config_get_home_dir ()) != 0)
|
||||
{
|
||||
dir = g_build_filename (mc_home, ".config", (char *) NULL);
|
||||
/*
|
||||
* The user overrode the default profile root.
|
||||
*
|
||||
* In this case we can't use GLib's g_get_user_{config,cache,data}_dir()
|
||||
* as these functions use the user's home dir as the root.
|
||||
*/
|
||||
|
||||
dir = g_build_filename (profile_root, ".config", (char *) NULL);
|
||||
mc_config_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, mcerror);
|
||||
g_free (dir);
|
||||
|
||||
dir = g_build_filename (mc_home, ".cache", (char *) NULL);
|
||||
dir = g_build_filename (profile_root, ".cache", (char *) NULL);
|
||||
mc_cache_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, mcerror);
|
||||
g_free (dir);
|
||||
|
||||
dir = g_build_filename (mc_home, ".local", "share", (char *) NULL);
|
||||
dir = g_build_filename (profile_root, ".local", "share", (char *) NULL);
|
||||
mc_data_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, mcerror);
|
||||
g_free (dir);
|
||||
}
|
||||
@ -331,7 +335,7 @@ mc_config_init_config_paths (GError ** mcerror)
|
||||
else
|
||||
{
|
||||
g_free (defined_userconf_dir);
|
||||
dir = g_build_filename (mc_config_get_home_dir (), MC_USERCONF_DIR, (char *) NULL);
|
||||
dir = g_build_filename (profile_root, MC_USERCONF_DIR, (char *) NULL);
|
||||
}
|
||||
|
||||
mc_data_str = mc_cache_str = mc_config_str = mc_config_init_one_config_path (dir, "", mcerror);
|
||||
@ -393,15 +397,11 @@ mc_config_get_home_dir (void)
|
||||
|
||||
if (homedir == NULL)
|
||||
{
|
||||
homedir = g_getenv ("MC_HOME");
|
||||
/* Prior to GLib 2.36, g_get_home_dir() ignores $HOME, which is why
|
||||
* we read it ourselves. As that function's documentation explains,
|
||||
* using $HOME is good for compatibility with other programs and
|
||||
* for running from test frameworks. */
|
||||
if (homedir == NULL || *homedir == '\0')
|
||||
homedir = g_getenv ("HOME");
|
||||
else
|
||||
mc_home = homedir;
|
||||
homedir = g_getenv ("HOME");
|
||||
if (homedir == NULL || *homedir == '\0')
|
||||
homedir = g_get_home_dir ();
|
||||
}
|
||||
|
24
lib/util.c
24
lib/util.c
@ -1418,6 +1418,30 @@ guess_message_value (void)
|
||||
return g_strdup (locale);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* The "profile root" is the tree under which all of MC's user data &
|
||||
* settings are stored.
|
||||
*
|
||||
* It defaults to the user's home dir. The user may override this default
|
||||
* with the environment variable $MC_PROFILE_ROOT.
|
||||
*/
|
||||
const char *
|
||||
mc_get_profile_root (void)
|
||||
{
|
||||
static const char *profile_root = NULL;
|
||||
|
||||
if (profile_root == NULL)
|
||||
{
|
||||
profile_root = g_getenv ("MC_PROFILE_ROOT");
|
||||
if (profile_root == NULL || *profile_root == '\0')
|
||||
profile_root = mc_config_get_home_dir ();
|
||||
}
|
||||
|
||||
return profile_root;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
/**
|
||||
* Propagate error in simple way.
|
||||
|
@ -249,6 +249,8 @@ char *guess_message_value (void);
|
||||
char *mc_build_filename (const char *first_element, ...);
|
||||
char *mc_build_filenamev (const char *first_element, va_list args);
|
||||
|
||||
const char *mc_get_profile_root (void);
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
void mc_propagate_error (GError ** dest, int code, const char *format, ...) G_GNUC_PRINTF (3, 4);
|
||||
void mc_replace_error (GError ** dest, int code, const char *format, ...) G_GNUC_PRINTF (3, 4);
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "lib/global.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/util.h" /* mc_get_profile_root() */
|
||||
|
||||
#include "src/textconf.h"
|
||||
|
||||
@ -180,7 +181,8 @@ show_version (void)
|
||||
void
|
||||
show_datadirs_extended (void)
|
||||
{
|
||||
(void) printf ("%s %s\n", _("Root directory:"), mc_config_get_home_dir ());
|
||||
(void) printf ("%s %s\n", _("Home directory:"), mc_config_get_home_dir ());
|
||||
(void) printf ("%s %s\n", _("Profile root directory:"), mc_get_profile_root ());
|
||||
(void) puts ("");
|
||||
|
||||
PRINTF_GROUP (_("System data"));
|
||||
|
Loading…
Reference in New Issue
Block a user