summaryrefslogtreecommitdiffstats
path: root/src/textconf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/textconf.c')
-rw-r--r--src/textconf.c264
1 files changed, 264 insertions, 0 deletions
diff --git a/src/textconf.c b/src/textconf.c
new file mode 100644
index 0000000..e8accd9
--- /dev/null
+++ b/src/textconf.c
@@ -0,0 +1,264 @@
+/*
+ Print features specific for this build
+
+ Copyright (C) 2000-2023
+ 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>
+
+#if defined (ENABLE_VFS) && defined(ENABLE_VFS_SFTP)
+#include <libssh2.h>
+#endif /* ENABLE_VFS_SFTP && ENABLE_VFS */
+
+#include "lib/global.h"
+#include "lib/fileloc.h"
+#include "lib/mcconfig.h"
+#include "lib/util.h" /* mc_get_profile_root() */
+#include "lib/tty/tty.h" /* S-Lang or ncurses version */
+
+#include "src/textconf.h"
+
+/*** global variables ****************************************************************************/
+
+/*** file scope macro definitions ****************************************************************/
+
+/*** file scope type declarations ****************************************************************/
+
+/*** forward declarations (file scope functions) *************************************************/
+
+/*** 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
+ NULL
+};
+#endif /* ENABLE_VFS */
+
+static const char *const features[] = {
+
+#ifdef USE_INTERNAL_EDIT
+#ifdef HAVE_ASPELL
+ N_("With builtin Editor and Aspell support"),
+#else
+ N_("With builtin Editor"),
+#endif /* HAVE_ASPELL */
+#endif /* USE_INTERNAL_EDIT */
+
+#ifdef ENABLE_SUBSHELL
+#ifdef SUBSHELL_OPTIONAL
+ N_("With optional subshell support"),
+#else
+ N_("With subshell support as default"),
+#endif
+#endif /* !ENABLE_SUBSHELL */
+
+#ifdef ENABLE_BACKGROUND
+ N_("With support for background operations"),
+#endif
+
+#ifdef HAVE_LIBGPM
+ N_("With mouse support on xterm and Linux console"),
+#else
+ N_("With mouse support on xterm"),
+#endif
+
+#ifdef HAVE_TEXTMODE_X11_SUPPORT
+ N_("With support for X11 events"),
+#endif
+
+#ifdef ENABLE_NLS
+ N_("With internationalization support"),
+#endif
+
+#ifdef HAVE_CHARSET
+ N_("With multiple codepages support"),
+#endif
+
+#ifdef ENABLE_EXT2FS_ATTR
+ N_("With ext2fs attributes support"),
+#endif
+
+ NULL
+};
+
+/*** file scope functions ************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+/* --------------------------------------------------------------------------------------------- */
+/*** public functions ****************************************************************************/
+/* --------------------------------------------------------------------------------------------- */
+
+void
+show_version (void)
+{
+ size_t i;
+
+ printf (_("GNU Midnight Commander %s\n"), mc_global.mc_version);
+
+ printf (_("Built with GLib %d.%d.%d\n"),
+ GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+
+#ifdef HAVE_SLANG
+ printf (_("Built with S-Lang %s with terminfo database\n"), SLANG_VERSION_STRING);
+#elif defined(USE_NCURSES)
+#ifdef NCURSES_VERSION
+ printf (_("Built with ncurses %s\n"), NCURSES_VERSION);
+#else
+ puts (_("Built with ncurses (unknown version)"));
+#endif /* !NCURSES_VERSION */
+#elif defined(USE_NCURSESW)
+#ifdef NCURSES_VERSION
+ printf (_("Built with ncursesw %s\n"), NCURSES_VERSION);
+#else
+ puts (_("Built with ncursesw (unknown version)"));
+#endif /* !NCURSES_VERSION */
+#else
+#error "Cannot compile mc without S-Lang or ncurses"
+#endif /* !HAVE_SLANG && !USE_NCURSES */
+
+#if defined (ENABLE_VFS) && defined(ENABLE_VFS_SFTP)
+ printf (_("Built with libssh2 %d.%d.%d\n"),
+ LIBSSH2_VERSION_MAJOR, LIBSSH2_VERSION_MINOR, LIBSSH2_VERSION_PATCH);
+#endif /* ENABLE_VFS_SFTP && ENABLE_VFS */
+
+ for (i = 0; features[i] != NULL; i++)
+ puts (_(features[i]));
+
+#ifdef ENABLE_VFS
+ puts (_("Virtual File Systems:"));
+ for (i = 0; vfs_supported[i] != NULL; i++)
+ printf ("%s %s", i == 0 ? "" : ",", _(vfs_supported[i]));
+ (void) puts ("");
+#endif /* ENABLE_VFS */
+
+ (void) puts (_("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) puts ("");
+}
+
+/* --------------------------------------------------------------------------------------------- */
+#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", _("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"));
+
+ 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_DIR 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 (), EDIT_HOME_MACRO_FILE ".*");
+#endif
+ PRINTF_SECTION2 (_("Cache directory:"), mc_config_get_cache_path ());
+}
+
+#undef PRINTF
+#undef PRINTF_SECTION
+#undef PRINTF_GROUP
+
+/* --------------------------------------------------------------------------------------------- */
+
+#ifdef ENABLE_CONFIGURE_ARGS
+void
+show_configure_options (void)
+{
+ (void) puts (MC_CONFIGURE_ARGS);
+}
+#endif
+
+/* --------------------------------------------------------------------------------------------- */