Allow setup mc home directory using MC_HOME environment variable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Этот коммит содержится в:
родитель
cce7ccf48a
Коммит
13a660d2e0
@ -3664,8 +3664,9 @@ o infrautilizadas).
|
|||||||
.SH "ARCHIVOS AUXILIARES"
|
.SH "ARCHIVOS AUXILIARES"
|
||||||
Los directorios indicados a continuación pueden variar de una
|
Los directorios indicados a continuación pueden variar de una
|
||||||
instalación a otra. También se pueden modificar con la variable de
|
instalación a otra. También se pueden modificar con la variable de
|
||||||
entorno MC_DATADIR, que de estar definida se emplearía en vez de
|
entorno
|
||||||
@prefix@/share/mc.
|
.BR MC_DATADIR ,
|
||||||
|
que de estar definida se emplearía en vez de @prefix@/share/mc.
|
||||||
.PP
|
.PP
|
||||||
.I @prefix@/share/mc.hlp
|
.I @prefix@/share/mc.hlp
|
||||||
.IP
|
.IP
|
||||||
@ -3722,6 +3723,12 @@ La lista de directorios para el árbol de directorios y la vista en árbol.
|
|||||||
Menú local definido por el usuario. Si este archivo
|
Menú local definido por el usuario. Si este archivo
|
||||||
está presente será usado en lugar del menú de aplicaciones
|
está presente será usado en lugar del menú de aplicaciones
|
||||||
personal o de sistema.
|
personal o de 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
|
||||||
|
variable is unset or empty, HOME variable is used. If HOME variable is unset
|
||||||
|
or empty, MC home directory is get from GLib library.
|
||||||
.\"SKIP_SECTION"
|
.\"SKIP_SECTION"
|
||||||
.SH "LICENCIA"
|
.SH "LICENCIA"
|
||||||
Este programa se distribuye en los términos que recoge la Licencia Pública
|
Este programa se distribuye en los términos que recoge la Licencia Pública
|
||||||
|
@ -3172,9 +3172,10 @@ valamelyik gomb nem használható).
|
|||||||
.SH ""
|
.SH ""
|
||||||
.\"NODE "FILES"
|
.\"NODE "FILES"
|
||||||
.SH "Fájlok"
|
.SH "Fájlok"
|
||||||
A progam minden ezzel kapcsolatos infomációt az MCHOME környezeti
|
A progam minden ezzel kapcsolatos infomációt az
|
||||||
változóban tárol. Ha ezt a változót nem állítottuk be, akkor ez vissza
|
.BR MC_DATADIR
|
||||||
fog állítódni a /usr könyvtárra.
|
környezeti változóban tárol. Ha ezt a változót nem állítottuk be, akkor
|
||||||
|
ez vissza fog állítódni a /usr könyvtárra.
|
||||||
.PP
|
.PP
|
||||||
.I @prefix@/share/mc/mc.hlp
|
.I @prefix@/share/mc/mc.hlp
|
||||||
.IP
|
.IP
|
||||||
@ -3237,6 +3238,12 @@ frissíti ezt.
|
|||||||
.IP
|
.IP
|
||||||
Helyi felhasználó által definiált menü. Ha ez a fájl létezik, ezt
|
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.
|
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
|
||||||
|
variable is unset or empty, HOME variable is used. If HOME variable is unset
|
||||||
|
or empty, MC home directory is get from GLib library.
|
||||||
.\"NODE "AVAILABILITY"
|
.\"NODE "AVAILABILITY"
|
||||||
.SH "A Midnight Commander frissítése"
|
.SH "A Midnight Commander frissítése"
|
||||||
A program legutolsó verzióját az ftp.nuclecu.unam.mx címen a
|
A program legutolsó verzióját az ftp.nuclecu.unam.mx címen a
|
||||||
|
@ -3168,8 +3168,9 @@ simpatici tasti dappertutto).
|
|||||||
.\"NODE "FILES"
|
.\"NODE "FILES"
|
||||||
.SH "FILE"
|
.SH "FILE"
|
||||||
Il programma recupera tutte le informazioni relative al proprio funzionamento
|
Il programma recupera tutte le informazioni relative al proprio funzionamento
|
||||||
dalla variabile ambiente MC_DATADIR, e se la variabile non è impostata,
|
dalla variabile ambiente
|
||||||
passerà alla directory @prefix@/share/mc .
|
.BR MC_DATADIR ,
|
||||||
|
e se la variabile non è impostata, passerà alla directory @prefix@/share/mc .
|
||||||
.PP
|
.PP
|
||||||
.I @prefix@/share/mc/mc.hlp
|
.I @prefix@/share/mc/mc.hlp
|
||||||
.IP
|
.IP
|
||||||
@ -3226,6 +3227,12 @@ L'elenco di directory per l'albero directory e per la vista ad albero.
|
|||||||
.IP
|
.IP
|
||||||
Menu locale definito dall'utente. Se questo file è presente viene usato
|
Menu locale definito dall'utente. Se questo file è presente viene usato
|
||||||
al posto del menu delle applicazioni utente o di sistema.
|
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
|
||||||
|
variable is unset or empty, HOME variable is used. If HOME variable is unset
|
||||||
|
or empty, MC home directory is get from GLib library.
|
||||||
.\"SKIP_SECTION"
|
.\"SKIP_SECTION"
|
||||||
.SH "LICENZA"
|
.SH "LICENZA"
|
||||||
Questo programma è distribuito sotto i termini della Licenza Generale
|
Questo programma è distribuito sotto i termini della Licenza Generale
|
||||||
|
@ -4098,8 +4098,10 @@ everywhere).
|
|||||||
.\"NODE "FILES"
|
.\"NODE "FILES"
|
||||||
.SH "FILES"
|
.SH "FILES"
|
||||||
Full paths below may vary between installations. They are also affected
|
Full paths below may vary between installations. They are also affected
|
||||||
by the MC_DATADIR environment variable. If it's set, its value is used
|
by the
|
||||||
instead of @prefix@/share/mc in the paths below.
|
.BR MC_DATADIR
|
||||||
|
environment variable. If it's set, its value is used instead of
|
||||||
|
@prefix@/share/mc in the paths below.
|
||||||
.PP
|
.PP
|
||||||
.I @prefix@/share/mc/mc.hlp
|
.I @prefix@/share/mc/mc.hlp
|
||||||
.IP
|
.IP
|
||||||
@ -4154,6 +4156,12 @@ The directory list for the directory tree and tree view features.
|
|||||||
.IP
|
.IP
|
||||||
Local user\-defined menu. If this file is present, it is used instead of
|
Local user\-defined menu. If this file is present, it is used instead of
|
||||||
the home or system\-wide applications menu.
|
the home or system\-wide applications menu.
|
||||||
|
.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
|
||||||
|
variable is unset or empty, HOME variable is used. If HOME variable is unset
|
||||||
|
or empty, MC home directory is get from GLib library.
|
||||||
.\"SKIP_SECTION"
|
.\"SKIP_SECTION"
|
||||||
.SH "LICENSE"
|
.SH "LICENSE"
|
||||||
This program is distributed under the terms of the GNU General Public
|
This program is distributed under the terms of the GNU General Public
|
||||||
|
@ -2874,7 +2874,8 @@ zupełnie bezużytecznych klawiszy).
|
|||||||
.\"NODE "FILES"
|
.\"NODE "FILES"
|
||||||
.SH PLIKI
|
.SH PLIKI
|
||||||
.PP
|
.PP
|
||||||
Program będzie pobierał wszystkie swoje informacje ze zmiennej MCHOME,
|
Program będzie pobierał wszystkie swoje informacje ze zmiennej
|
||||||
|
.BR MC_DATADIR ,
|
||||||
jeśli jest ona nie ustawiona to znowu przetwarzany jest katalog /usr.
|
jeśli jest ona nie ustawiona to znowu przetwarzany jest katalog /usr.
|
||||||
.PP
|
.PP
|
||||||
@prefix@/share/mc.hlp
|
@prefix@/share/mc.hlp
|
||||||
@ -2933,6 +2934,11 @@ Midnight Commander robi to sam za ciebie.
|
|||||||
Lokalny plik zdefiniowany przez użytkownika. Jeśli ten plik jest dostępny,
|
Lokalny plik zdefiniowany przez użytkownika. Jeśli ten plik jest dostępny,
|
||||||
jest używany zamiast pliku w katalogu domowym i ogólnosystemowego.
|
jest używany zamiast pliku w katalogu domowym i ogólnosystemowego.
|
||||||
.PP
|
.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
|
||||||
|
variable is unset or empty, HOME variable is used. If HOME variable is unset
|
||||||
|
or empty, MC home directory is get from GLib library.
|
||||||
.\"SKIP_SECTION"
|
.\"SKIP_SECTION"
|
||||||
.SH LICENCJA
|
.SH LICENCJA
|
||||||
Program jest dystrybuowany na zasadach licencji GNU General Public License
|
Program jest dystrybuowany na zasadach licencji GNU General Public License
|
||||||
|
@ -4546,6 +4546,13 @@ Commander; используется только в тех случаях, ко
|
|||||||
локальное меню, задаваемое пользователем. Если этот файл существует, он
|
локальное меню, задаваемое пользователем. Если этот файл существует, он
|
||||||
используется вместо файла меню из домашнего каталога пользователя и
|
используется вместо файла меню из домашнего каталога пользователя и
|
||||||
общесистемного меню.
|
общесистемного меню.
|
||||||
|
.PP
|
||||||
|
Для того, чтобы изменить домашний каталог MC, установленный по умолчанию,
|
||||||
|
можно использовать переменную окружения
|
||||||
|
.BR MC_HOME .
|
||||||
|
Значением этой переменный должен быть абсолютный путь. Если переменная MC_HOME
|
||||||
|
не определена или пуста, используется переменная окружения HOME. Если и HOME
|
||||||
|
не определена или пуста, домашний каталог MC определяется средствами библиотеки GLib.
|
||||||
.\"SKIP_SECTION"
|
.\"SKIP_SECTION"
|
||||||
.\" "LICENSE"
|
.\" "LICENSE"
|
||||||
.SH Лицензия
|
.SH Лицензия
|
||||||
|
@ -3180,8 +3180,9 @@ insert=\\e[Op
|
|||||||
.\"NODE "FILES"
|
.\"NODE "FILES"
|
||||||
.SH "ДАТОТЕКЕ"
|
.SH "ДАТОТЕКЕ"
|
||||||
Програм ће добавити све своје податке у односу на променљиву окружења
|
Програм ће добавити све своје податке у односу на променљиву окружења
|
||||||
MC_DATADIR. Ако ова променљива није постављена, биће употребљен
|
.BR MC_DATADIR .
|
||||||
директоријум @prefix@/share/mc.
|
Ако ова променљива није постављена, биће употребљен директоријум
|
||||||
|
@prefix@/share/mc.
|
||||||
.PP
|
.PP
|
||||||
.I @prefix@/share/mc/mc.hlp
|
.I @prefix@/share/mc/mc.hlp
|
||||||
.IP
|
.IP
|
||||||
|
@ -9,6 +9,4 @@ libmcconfig_la_SOURCES = \
|
|||||||
|
|
||||||
libmcconfig_la_CFLAGS = -I$(top_srcdir) \
|
libmcconfig_la_CFLAGS = -I$(top_srcdir) \
|
||||||
$(GLIB_CFLAGS) \
|
$(GLIB_CFLAGS) \
|
||||||
-DDATADIR=\""$(pkgdatadir)/"\" \
|
-DLOCALEDIR=\""$(localedir)"\"
|
||||||
-DLOCALEDIR=\""$(localedir)"\" \
|
|
||||||
-DSYSCONFDIR=\""$(sysconfdir)/@PACKAGE@/"\"
|
|
||||||
|
@ -271,64 +271,43 @@ mc_config_fix_migrated_rules (void)
|
|||||||
void
|
void
|
||||||
mc_config_init_config_paths (GError ** error)
|
mc_config_init_config_paths (GError ** error)
|
||||||
{
|
{
|
||||||
const char *mc_datadir;
|
char *dir;
|
||||||
|
|
||||||
#ifdef MC_HOMEDIR_XDG
|
|
||||||
char *u_config_dir = (char *) g_get_user_config_dir ();
|
|
||||||
char *u_data_dir = (char *) g_get_user_data_dir ();
|
|
||||||
char *u_cache_dir = (char *) g_get_user_cache_dir ();
|
|
||||||
|
|
||||||
if (xdg_vars_initialized)
|
if (xdg_vars_initialized)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
u_config_dir = (u_config_dir == NULL)
|
#ifdef MC_HOMEDIR_XDG
|
||||||
? g_build_filename (mc_config_get_home_dir (), ".config", NULL) : g_strdup (u_config_dir);
|
dir = g_build_filename (mc_config_get_home_dir (), ".config", (char *) NULL);
|
||||||
|
mc_config_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, error);
|
||||||
|
g_free (dir);
|
||||||
|
|
||||||
u_cache_dir = (u_cache_dir == NULL)
|
dir = g_build_filename (mc_config_get_home_dir (), ".cache", (char *) NULL);
|
||||||
? g_build_filename (mc_config_get_home_dir (), ".cache", NULL) : g_strdup (u_cache_dir);
|
mc_cache_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, error);
|
||||||
|
g_free (dir);
|
||||||
|
|
||||||
u_data_dir = (u_data_dir == NULL)
|
dir = g_build_filename (mc_config_get_home_dir (), ".local", "share", (char *) NULL);
|
||||||
? g_build_filename (mc_config_get_home_dir (), ".local", "share", NULL)
|
mc_data_str = mc_config_init_one_config_path (dir, MC_USERCONF_DIR, error);
|
||||||
: g_strdup (u_data_dir);
|
g_free (dir);
|
||||||
|
|
||||||
mc_config_str = mc_config_init_one_config_path (u_config_dir, MC_USERCONF_DIR, error);
|
|
||||||
mc_cache_str = mc_config_init_one_config_path (u_cache_dir, MC_USERCONF_DIR, error);
|
|
||||||
mc_data_str = mc_config_init_one_config_path (u_data_dir, MC_USERCONF_DIR, error);
|
|
||||||
|
|
||||||
g_free (u_data_dir);
|
|
||||||
g_free (u_cache_dir);
|
|
||||||
g_free (u_config_dir);
|
|
||||||
|
|
||||||
mc_config_fix_migrated_rules ();
|
mc_config_fix_migrated_rules ();
|
||||||
#else /* MC_HOMEDIR_XDG */
|
#else /* MC_HOMEDIR_XDG */
|
||||||
char *defined_userconf_dir;
|
char *defined_userconf_dir;
|
||||||
char *u_config_dir;
|
|
||||||
|
|
||||||
defined_userconf_dir = tilde_expand (MC_USERCONF_DIR);
|
defined_userconf_dir = tilde_expand (MC_USERCONF_DIR);
|
||||||
if (!g_path_is_absolute (defined_userconf_dir))
|
if (g_path_is_absolute (defined_userconf_dir))
|
||||||
{
|
dir = defined_userconf_dir;
|
||||||
u_config_dir = g_build_filename (mc_config_get_home_dir (), MC_USERCONF_DIR, NULL);
|
|
||||||
g_free (defined_userconf_dir);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
u_config_dir = defined_userconf_dir;
|
{
|
||||||
|
g_free (defined_userconf_dir);
|
||||||
|
dir = g_build_filename (mc_config_get_home_dir (), MC_USERCONF_DIR, (char *) NULL);
|
||||||
|
}
|
||||||
|
|
||||||
mc_data_str = mc_cache_str = mc_config_str =
|
mc_data_str = mc_cache_str = mc_config_str =
|
||||||
mc_config_init_one_config_path (u_config_dir, "", error);
|
mc_config_init_one_config_path (dir, "", error);
|
||||||
|
|
||||||
g_free (u_config_dir);
|
g_free (dir);
|
||||||
#endif /* MC_HOMEDIR_XDG */
|
#endif /* MC_HOMEDIR_XDG */
|
||||||
|
|
||||||
/* This is the directory, where MC was installed, on Unix this is DATADIR */
|
|
||||||
/* and can be overriden by the MC_DATADIR environment variable */
|
|
||||||
mc_datadir = g_getenv ("MC_DATADIR");
|
|
||||||
if (mc_datadir != NULL)
|
|
||||||
mc_global.sysconfig_dir = g_strdup (mc_datadir);
|
|
||||||
else
|
|
||||||
mc_global.sysconfig_dir = g_strdup (SYSCONFDIR);
|
|
||||||
|
|
||||||
mc_global.share_data_dir = g_strdup (DATADIR);
|
|
||||||
|
|
||||||
xdg_vars_initialized = TRUE;
|
xdg_vars_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,8 +360,10 @@ mc_config_get_home_dir (void)
|
|||||||
{
|
{
|
||||||
if (homedir == NULL)
|
if (homedir == NULL)
|
||||||
{
|
{
|
||||||
homedir = g_getenv ("HOME");
|
homedir = g_getenv ("MC_HOME");
|
||||||
if (homedir == NULL)
|
if (homedir == NULL || *homedir == '\0')
|
||||||
|
homedir = g_getenv ("HOME");
|
||||||
|
if (homedir == NULL || *homedir == '\0')
|
||||||
homedir = g_get_home_dir ();
|
homedir = g_get_home_dir ();
|
||||||
}
|
}
|
||||||
return homedir;
|
return homedir;
|
||||||
|
@ -823,7 +823,7 @@ const char *
|
|||||||
mc_tmpdir (void)
|
mc_tmpdir (void)
|
||||||
{
|
{
|
||||||
static char buffer[64];
|
static char buffer[64];
|
||||||
static const char *tmpdir;
|
static const char *tmpdir = NULL;
|
||||||
const char *sys_tmp;
|
const char *sys_tmp;
|
||||||
struct passwd *pwd;
|
struct passwd *pwd;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
@ -9,8 +9,10 @@ SUBDIRS += diffviewer
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
AM_CPPFLAGS = \
|
||||||
-DLOCALEDIR=\""$(localedir)"\" \
|
-DSYSCONFDIR=\""$(sysconfdir)/@PACKAGE@/"\" \
|
||||||
-DLIBEXECDIR=\""$(libexecdir)/@PACKAGE@/"\"
|
-DLIBEXECDIR=\""$(libexecdir)/@PACKAGE@/"\" \
|
||||||
|
-DDATADIR=\""$(pkgdatadir)/"\" \
|
||||||
|
-DLOCALEDIR=\""$(localedir)"\"
|
||||||
|
|
||||||
if CONS_SAVER
|
if CONS_SAVER
|
||||||
SUBDIRS += consaver
|
SUBDIRS += consaver
|
||||||
|
32
src/main.c
32
src/main.c
@ -161,8 +161,10 @@ check_codeset (void)
|
|||||||
static void
|
static void
|
||||||
OS_Setup (void)
|
OS_Setup (void)
|
||||||
{
|
{
|
||||||
const char *shell_env = getenv ("SHELL");
|
const char *shell_env;
|
||||||
|
const char *datadir_env;
|
||||||
|
|
||||||
|
shell_env = getenv ("SHELL");
|
||||||
if ((shell_env == NULL) || (shell_env[0] == '\0'))
|
if ((shell_env == NULL) || (shell_env[0] == '\0'))
|
||||||
{
|
{
|
||||||
struct passwd *pwd;
|
struct passwd *pwd;
|
||||||
@ -178,6 +180,19 @@ OS_Setup (void)
|
|||||||
g_free (shell);
|
g_free (shell);
|
||||||
shell = g_strdup ("/bin/sh");
|
shell = g_strdup ("/bin/sh");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is the directory, where MC was installed, on Unix this is DATADIR */
|
||||||
|
/* and can be overriden by the MC_DATADIR environment variable */
|
||||||
|
datadir_env = g_getenv ("MC_DATADIR");
|
||||||
|
if (datadir_env != NULL)
|
||||||
|
mc_global.sysconfig_dir = g_strdup (datadir_env);
|
||||||
|
else
|
||||||
|
mc_global.sysconfig_dir = g_strdup (SYSCONFDIR);
|
||||||
|
|
||||||
|
mc_global.share_data_dir = g_strdup (DATADIR);
|
||||||
|
|
||||||
|
/* Set up temporary directory */
|
||||||
|
mc_tmpdir ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
@ -419,6 +434,17 @@ main (int argc, char *argv[])
|
|||||||
return exit_code;
|
return exit_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* do this before mc_args_show_info () to view paths in the --datadir-info output */
|
||||||
|
OS_Setup ();
|
||||||
|
|
||||||
|
if (!g_path_is_absolute (mc_config_get_home_dir ()))
|
||||||
|
{
|
||||||
|
error = g_error_new (MC_ERROR, 0, "%s: %s", _("Home directory path is not absolute"),
|
||||||
|
mc_config_get_home_dir ());
|
||||||
|
mc_event_deinit (NULL);
|
||||||
|
goto startup_exit_falure;
|
||||||
|
}
|
||||||
|
|
||||||
if (!mc_args_show_info ())
|
if (!mc_args_show_info ())
|
||||||
{
|
{
|
||||||
exit_code = EXIT_SUCCESS;
|
exit_code = EXIT_SUCCESS;
|
||||||
@ -428,10 +454,6 @@ main (int argc, char *argv[])
|
|||||||
if (!events_init (&error))
|
if (!events_init (&error))
|
||||||
goto startup_exit_falure;
|
goto startup_exit_falure;
|
||||||
|
|
||||||
/* Set up temporary directory */
|
|
||||||
(void) mc_tmpdir ();
|
|
||||||
OS_Setup ();
|
|
||||||
/* Initialize and create home directories */
|
|
||||||
mc_config_init_config_paths (&error);
|
mc_config_init_config_paths (&error);
|
||||||
if (error == NULL && mc_config_deprecated_dir_present ())
|
if (error == NULL && mc_config_deprecated_dir_present ())
|
||||||
mc_config_migrate_from_old_place (&error);
|
mc_config_migrate_from_old_place (&error);
|
||||||
|
@ -177,6 +177,9 @@ show_version (void)
|
|||||||
void
|
void
|
||||||
show_datadirs_extended (void)
|
show_datadirs_extended (void)
|
||||||
{
|
{
|
||||||
|
(void) printf ("%s %s\n", _("Home directory:"), mc_config_get_home_dir ());
|
||||||
|
(void) puts ("");
|
||||||
|
|
||||||
PRINTF_GROUP (_("System data"));
|
PRINTF_GROUP (_("System data"));
|
||||||
|
|
||||||
PRINTF_SECTION (_("Config directory:"), mc_global.sysconfig_dir);
|
PRINTF_SECTION (_("Config directory:"), mc_global.sysconfig_dir);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user