/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library. If not, see
. */
#ifdef HAVE_CONFIG_H
# include
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static struct mu_conf_option mu_conf_option[] = {
{ "VERSION=" VERSION, N_("Version of this package") },
{ "SYSCONFDIR=" SYSCONFDIR, N_("System configuration directory") },
{ "MAILSPOOLDIR=" MU_PATH_MAILDIR, N_("Default mail spool directory") },
{ "SCHEME=" MU_DEFAULT_SCHEME, N_("Default mailbox type") },
{ "LOG_FACILITY=" LOG_FACILITY_STRING, N_("Default syslog facility") },
#ifdef MAILUTILS_IPV6
{ "IPV6", N_("IPv6 support") },
#endif
#ifdef USE_LIBPAM
{ "USE_LIBPAM", N_("PAM support") },
#endif
#ifdef HAVE_LIBLTDL
{ "HAVE_LIBLTDL", N_("a portable `dlopen' wrapper library") },
#endif
#ifdef WITH_BDB2
{ "WITH_BDB2", N_("Berkeley DB v. 2") },
#endif
#ifdef WITH_BDB
{ "WITH_BDB", N_("Berkeley DB") },
#endif
#ifdef WITH_NDBM
{ "WITH_NDBM", },
#endif
#ifdef WITH_GDBM
{ "WITH_GDBM", N_("GNU DBM") },
#endif
#ifdef WITH_TOKYOCABINET
{ "WITH_TOKYOCABINET", N_("Tokyo Cabinet DBM") },
#endif
#ifdef WITH_KYOTOCABINET
{ "WITH_KYOTOCABINET", N_("Kyoto Cabinet DBM") },
#endif
#ifdef WITH_GNUTLS
{ "WITH_GNUTLS", N_("TLS support using GNU TLS") },
#endif
#ifdef WITH_GSASL
{ "WITH_GSASL", N_("SASL support using GNU SASL") },
#endif
#ifdef WITH_GSSAPI
{ "WITH_GSSAPI", N_("GSSAPI support") },
#endif
#ifdef WITH_GUILE
{ "WITH_GUILE", N_("Support for Guile as extension language") },
#endif
#ifdef WITH_PYTHON
{ "WITH_PYTHON", N_("Support for Python as extension language") },
#endif
#ifdef WITH_PTHREAD
{ "WITH_PTHREAD", N_("Support for POSIX threads") },
#endif
#ifdef WITH_READLINE
{ "WITH_READLINE", N_("GNU Readline") },
#endif
#ifdef HAVE_MYSQL
{ "HAVE_MYSQL", N_("MySQL") },
#endif
#ifdef HAVE_PGSQL
{ "HAVE_PGSQL", N_("PostgreSQL") },
#endif
#ifdef WITH_LDAP
{ "WITH_LDAP", },
#endif
#ifdef WITH_LIBWRAP
{ "WITH_LIBWRAP", N_("Support for TCP wrappers") },
#endif
#ifdef ENABLE_VIRTUAL_DOMAINS
{ "ENABLE_VIRTUAL_DOMAINS", N_("Support for virtual mail domains") },
#endif
#ifdef ENABLE_IMAP
{ "ENABLE_IMAP", N_("IMAP4 protocol support") },
#endif
#ifdef ENABLE_POP
{ "ENABLE_POP", N_("POP3 protocol support") },
#endif
#ifdef ENABLE_MH
{ "ENABLE_MH", N_("MH mail storage support") },
#endif
#ifdef ENABLE_MAILDIR
{ "ENABLE_MAILDIR", N_("Maildir mail storage support") },
#endif
#ifdef ENABLE_SMTP
{ "ENABLE_SMTP", N_("SMTP protocol support") },
#endif
#ifdef ENABLE_SENDMAIL
{ "ENABLE_SENDMAIL", N_("Sendmail command line interface support")},
#endif
#ifdef ENABLE_NNTP
{ "ENABLE_NNTP", N_("NNTP protocol support") },
#endif
#ifdef ENABLE_RADIUS
{ "ENABLE_RADIUS", N_("RADIUS protocol support") },
#endif
#ifdef WITH_INCLUDED_LIBINTL
{ "WITH_INCLUDED_LIBINTL", N_("GNU libintl compiled in") },
#endif
{ NULL }
};
void
mu_format_conf_option (mu_stream_t stream, const struct mu_conf_option *opt,
int verbose)
{
mu_stream_printf (stream, "%s", opt->name);
if (verbose && opt->descr)
mu_stream_printf (stream, " \t- %s", _(opt->descr));
mu_stream_printf (stream, "\n");
}
void
mu_format_options (mu_stream_t stream, int verbose)
{
int i;
for (i = 0; mu_conf_option[i].name; i++)
mu_format_conf_option (stream, mu_conf_option + i, verbose);
}
void
mu_print_options ()
{
if (mu_strout)
mu_stream_ref (mu_strout);
else
{
int yes = 1;
int rc = mu_stdio_stream_create (&mu_strout, MU_STDOUT_FD, 0);
if (rc)
{
fprintf (stderr, "mu_stdio_stream_create(%d): %s\n",
MU_STDOUT_FD, mu_strerror (rc));
abort ();
}
mu_stream_ioctl (mu_strout, MU_IOCTL_FD, MU_IOCTL_FD_SET_BORROW, &yes);
}
mu_format_options (mu_strout, 1);
mu_stream_unref (mu_strout);
}
const struct mu_conf_option *
mu_check_option (char *name)
{
int i;
for (i = 0; mu_conf_option[i].name; i++)
{
int len;
char *q, *p = strchr (mu_conf_option[i].name, '=');
if (p)
len = p - mu_conf_option[i].name;
else
len = strlen (mu_conf_option[i].name);
if (mu_c_strncasecmp (mu_conf_option[i].name, name, len) == 0)
return &mu_conf_option[i];
else if ((q = strchr (mu_conf_option[i].name, '_')) != NULL
&& mu_c_strncasecmp (q + 1, name,
len - (q - mu_conf_option[i].name) - 1) == 0)
return &mu_conf_option[i];
}
return NULL;
}