mc/src/textconf.c
Andrew Borodin 42e7e39bd8 Add IS_PATH_SEP macro and use it.
Also massive use of PATH_SEP and PATH_SEP_STR macros.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2015-02-26 09:13:02 +03:00

236 lines
6.6 KiB
C

/*
Print features specific for this build
Copyright (C) 2000-2015
Free Software Foundation, Inc.
This file is part of the Midnight Commander.
The Midnight Commander is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.
The Midnight Commander is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/** \file textconf.c
* \brief Source: prints features specific for this build
*/
#include <config.h>
#include <limits.h>
#include <stdio.h>
#include <sys/types.h>
#include "lib/global.h"
#include "lib/fileloc.h"
#include "lib/mcconfig.h"
#include "src/textconf.h"
/*** global variables ****************************************************************************/
/*** file scope macro definitions ****************************************************************/
/*** file scope type declarations ****************************************************************/
/*** file scope variables ************************************************************************/
#ifdef ENABLE_VFS
static const char *const vfs_supported[] = {
#ifdef ENABLE_VFS_CPIO
"cpiofs",
#endif
#ifdef ENABLE_VFS_TAR
"tarfs",
#endif
#ifdef ENABLE_VFS_SFS
"sfs",
#endif
#ifdef ENABLE_VFS_EXTFS
"extfs",
#endif
#ifdef ENABLE_VFS_UNDELFS
"ext2undelfs",
#endif
#ifdef ENABLE_VFS_FTP
"ftpfs",
#endif
#ifdef ENABLE_VFS_SFTP
"sftpfs",
#endif
#ifdef ENABLE_VFS_FISH
"fish",
#endif
#ifdef ENABLE_VFS_SMB
"smbfs",
#endif /* ENABLE_VFS_SMB */
NULL
};
#endif /* ENABLE_VFS */
static const char *const features[] = {
#ifdef HAVE_SLANG
N_("Using the S-Lang library with terminfo database\n"),
#elif defined(USE_NCURSES)
N_("Using the ncurses library\n"),
#elif defined(USE_NCURSESW)
N_("Using the ncursesw library\n"),
#else
#error "Cannot compile mc without S-Lang or ncurses"
#endif /* !HAVE_SLANG && !USE_NCURSES */
#ifdef USE_INTERNAL_EDIT
N_("With builtin Editor\n"),
#endif
#ifdef ENABLE_SUBSHELL
#ifdef SUBSHELL_OPTIONAL
N_("With optional subshell support\n"),
#else
N_("With subshell support as default\n"),
#endif
#endif /* !ENABLE_SUBSHELL */
#ifdef ENABLE_BACKGROUND
N_("With support for background operations\n"),
#endif
#ifdef HAVE_LIBGPM
N_("With mouse support on xterm and Linux console\n"),
#else
N_("With mouse support on xterm\n"),
#endif
#ifdef HAVE_TEXTMODE_X11_SUPPORT
N_("With support for X11 events\n"),
#endif
#ifdef ENABLE_NLS
N_("With internationalization support\n"),
#endif
#ifdef HAVE_CHARSET
N_("With multiple codepages support\n"),
#endif
NULL
};
/*** file scope functions ************************************************************************/
/* --------------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
void
show_version (void)
{
size_t i;
printf (_("GNU Midnight Commander %s\n"), VERSION);
printf (_("Built with GLib %d.%d.%d\n"),
GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
for (i = 0; features[i] != NULL; i++)
printf ("%s", _(features[i]));
#ifdef ENABLE_VFS
printf (_("Virtual File Systems:"));
for (i = 0; vfs_supported[i] != NULL; i++)
printf ("%s %s", i == 0 ? "" : ",", _(vfs_supported[i]));
printf ("\n");
#endif /* ENABLE_VFS */
(void) printf (_("Data types:"));
#define TYPE_INFO(T) \
(void)printf(" %s: %d;", #T, (int) (CHAR_BIT * sizeof(T)))
TYPE_INFO (char);
TYPE_INFO (int);
TYPE_INFO (long);
TYPE_INFO (void *);
TYPE_INFO (size_t);
TYPE_INFO (off_t);
#undef TYPE_INFO
(void) printf ("\n");
}
/* --------------------------------------------------------------------------------------------- */
#define PRINTF_GROUP(a) \
(void) printf ("[%s]\n", a)
#define PRINTF_SECTION(a,b) \
(void) printf (" %-17s %s\n", a, b)
#define PRINTF_SECTION2(a,b) \
(void) printf (" %-17s %s/\n", a, b)
#define PRINTF(a, b, c) \
(void) printf ("\t%-15s %s/%s\n", a, b, c)
#define PRINTF2(a, b, c) \
(void) printf ("\t%-15s %s%s\n", a, b, c)
void
show_datadirs_extended (void)
{
(void) printf ("%s %s\n", _("Root directory:"), mc_config_get_home_dir ());
(void) puts ("");
PRINTF_GROUP (_("System data"));
PRINTF_SECTION (_("Config directory:"), mc_global.sysconfig_dir);
PRINTF_SECTION (_("Data directory:"), mc_global.share_data_dir);
PRINTF_SECTION (_("File extension handlers:"), EXTHELPERSDIR);
#if defined ENABLE_VFS_EXTFS || defined ENABLE_VFS_FISH
PRINTF_SECTION (_("VFS plugins and scripts:"), LIBEXECDIR);
#ifdef ENABLE_VFS_EXTFS
PRINTF2 ("extfs.d:", LIBEXECDIR, MC_EXTFS_DIR PATH_SEP_STR);
#endif
#ifdef ENABLE_VFS_FISH
PRINTF2 ("fish:", LIBEXECDIR, FISH_PREFIX PATH_SEP_STR);
#endif
#endif /* ENABLE_VFS_EXTFS || defiined ENABLE_VFS_FISH */
(void) puts ("");
PRINTF_GROUP (_("User data"));
PRINTF_SECTION2 (_("Config directory:"), mc_config_get_path ());
PRINTF_SECTION2 (_("Data directory:"), mc_config_get_data_path ());
PRINTF ("skins:", mc_config_get_data_path (), MC_SKINS_SUBDIR PATH_SEP_STR);
#ifdef ENABLE_VFS_EXTFS
PRINTF ("extfs.d:", mc_config_get_data_path (), MC_EXTFS_DIR PATH_SEP_STR);
#endif
#ifdef ENABLE_VFS_FISH
PRINTF ("fish:", mc_config_get_data_path (), FISH_PREFIX PATH_SEP_STR);
#endif
#ifdef USE_INTERNAL_EDIT
PRINTF ("mcedit macros:", mc_config_get_data_path (), MC_MACRO_FILE);
PRINTF ("mcedit external macros:", mc_config_get_data_path (), MC_EXTMACRO_FILE ".*");
#endif
PRINTF_SECTION2 (_("Cache directory:"), mc_config_get_cache_path ());
}
#undef PRINTF
#undef PRINTF_SECTION
#undef PRINTF_GROUP
/* --------------------------------------------------------------------------------------------- */
void
show_configure_options (void)
{
(void) printf ("%s\n", MC_CONFIGURE_ARGS);
}
/* --------------------------------------------------------------------------------------------- */