#endif
#include "buffy.h"
+#include "mutt.h"
+#include "version.h"
#include "lib/debug.h"
#ifndef _MAKEDOC
#define DT_MAGIC 8 /* mailbox type */
#define DT_SYN 9 /* synonym for another variable */
#define DT_ADDR 10 /* e-mail address */
-#define DT_USER 11 /* user defined viar $user_ */
+#define DT_USER 11 /* user defined via $user_ */
+#define DT_SYS 12 /* pre-defined via $muttng_ */
#define DTYPE(x) ((x) & DT_MASK)
char* init;
};
-struct feature_t {
- char *name;
- short builtin;
-};
-
#define UL (unsigned long)
#endif /* _MAKEDOC */
** This variable is valid only if $$strict_mime is unset.
*/
#ifdef USE_NNTP
- {"ask_followup_to", DT_SYN, R_NONE, UL "nntp_ask_followup_to", 0},
{"nntp_ask_followup_to", DT_BOOL, R_NONE, OPTASKFOLLOWUP, "no" },
/*
** .pp
** If \fIset\fP, Mutt-ng will prompt you for the \fTFollowup-To:\fP header
** field before editing the body of an outgoing news article.
*/
- {"ask_x_comment_to", DT_SYN, R_NONE, UL "nntp_ask_x_comment_to", 0},
{"nntp_ask_x_comment_to", DT_BOOL, R_NONE, OPTASKXCOMMENTTO, "no" },
/*
** .pp
** visual terminals don't permit making the cursor invisible.
*/
#ifdef USE_NNTP
- {"catchup_newsgroup", DT_SYN, R_NONE, UL "nntp_catchup", 0},
{"nntp_catchup", DT_QUAD, R_NONE, OPT_CATCHUP, "ask-yes" },
/*
** .pp
** filtered message is read from the standard output.
*/
#if defined(DL_STANDALONE) && defined(USE_DOTLOCK)
- {"dotlock_program", DT_PATH, R_NONE, UL &MuttDotlock, BINDIR "/muttng_dotlock"},
+ {"dotlock_program", DT_PATH, R_NONE, UL &MuttDotlock, "$muttng_bindir/muttng_dotlock"},
/*
** .pp
** Availability: Standalone and Dotlock
** of the same email for you.
*/
#ifdef USE_NNTP
- {"followup_to_poster", DT_SYN, R_NONE, UL "nntp_followup_to_poster", 0},
{"nntp_followup_to_poster", DT_QUAD, R_NONE, OPT_FOLLOWUPTOPOSTER, "ask-yes" },
/*
** .pp
** ``Franklin'' to ``Franklin, Steve''.
*/
#ifdef USE_NNTP
- {"group_index_format", DT_SYN, R_NONE, UL "nntp_group_index_format", 0},
{"nntp_group_index_format", DT_STR, R_BOTH, UL &GroupFormat, "%4C %M%N %5s %-45.45f %d"},
/*
** .pp
** See also: ``$$to_chars''.
*/
#ifdef USE_NNTP
- {"inews", DT_SYN, R_NONE, UL "nntp_inews", 0},
{"nntp_inews", DT_PATH, R_NONE, UL &Inews, ""},
/*
** .pp
** This specifies the folder into which read mail in your ``$$spoolfile''
** folder will be appended.
*/
+ {"muttng_version", DT_SYS, R_NONE, 0, VERSION },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies muttng's
+ ** version string.\fP
+ */
+ {"muttng_revision", DT_SYS, R_NONE, 0, MUTT_REVISION },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies muttng's
+ ** subversion revision string.\fP
+ */
+ {"muttng_sysconfdir", DT_SYS, R_NONE, 0, SYSCONFDIR },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies the
+ ** directory containing the muttng system-wide configuration.\fP
+ */
+ {"muttng_bindir", DT_SYS, R_NONE, 0, BINDIR },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies the
+ ** directory containing the muttng binary.\fP
+ */
+ {"muttng_docdir", DT_SYS, R_NONE, 0, PKGDOCDIR },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies the
+ ** directory containing the muttng documentation.\fP
+ */
+#if USE_HCACHE
+#if HAVE_QDBM
+ {"muttng_hcache_backend", DT_SYS, R_NONE, 0, "qdbm" },
+#elif HAVE_GDBM
+ {"muttng_hcache_backend", DT_SYS, R_NONE, 0, "gdbm" },
+#elif HAVE_DB4
+ {"muttng_hcache_backend", DT_SYS, R_NONE, 0, "db4" },
+#else
+ {"muttng_hcache_backend", DT_SYS, R_NONE, 0, "unknown" },
+#endif
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and specifies the
+ ** header chaching's database backend.\fP
+ */
+#endif
+ {"muttng_folder_path", DT_SYS, R_NONE, 0, "" },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and, at runtime,
+ ** specifies the full path or URI of the folder currently
+ ** open (if any).\fP
+ */
+ {"muttng_folder_name", DT_SYS, R_NONE, 0, "" },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and, at runtime,
+ ** specifies the last part of the full path or URI of the
+ ** folder currently open (if any), i.e. everything after
+ ** the last ``/''.\fP
+ */
+ {"muttng_pwd", DT_SYS, R_NONE, 0, "" },
+ /*
+ ** .pp
+ ** \fIThis is a read-only system property and, at runtime,
+ ** specifies the current working directory of the muttng
+ ** binary.\fP
+ */
{"operating_system", DT_STR, R_NONE, UL &OperatingSystem, "" },
/*
** .pp
*/
#ifdef USE_NNTP
- {"mime_subject", DT_SYN, R_NONE, UL "nntp_mime_subject", 0},
{"nntp_mime_subject", DT_BOOL, R_NONE, OPTMIMESUBJECT, "yes" },
/*
** .pp
** deeper threads to fit on the screen.
*/
#ifdef USE_NNTP
- {"news_cache_dir", DT_SYN, R_NONE, UL "nntp_cache_dir", 0},
{"nntp_cache_dir", DT_PATH, R_NONE, UL &NewsCacheDir, "~/.muttng"},
/*
** .pp
** As for the header caching in connection with IMAP and/or Maildir,
** this drastically increases speed and lowers traffic.
*/
- {"news_server", DT_SYN, R_NONE, UL "nntp_host", 0 },
{"nntp_host", DT_STR, R_NONE, UL &NewsServer, "" },
/*
** .pp
** presents a security risk since the superuser of your machine may read it
** regardless of the file's permissions.
*/
- {"newsrc", DT_SYN, R_NONE, UL "nntp_newsrc", 0},
{"nntp_newsrc", DT_PATH, R_NONE, UL &NewsRc, "~/.newsrc"},
/*
** .pp
** presents a security risk since the superuser of your machine may read it
** regardless of the file's permissions.
*/
- {"nntp_poll", DT_SYN, R_NONE, UL "nntp_mail_check", 0},
{"nntp_mail_check", DT_NUM, R_NONE, UL &NewsPollTimeout, "60" },
/*
** .pp
** string after the inclusion of a message which is being replied to.
*/
#ifdef USE_NNTP
- {"post_moderated", DT_SYN, R_NONE, UL "nntp_post_moderated", 0 },
{"nntp_post_moderated", DT_QUAD, R_NONE, OPT_TOMODERATED, "ask-yes" },
/*
** .pp
** shell from \fT/etc/passwd\fP is used.
*/
#ifdef USE_NNTP
- {"save_unsubscribed", DT_SYN, R_NONE, UL "nntp_save_unsubscribed", 0 },
{"nntp_save_unsubscribed", DT_BOOL, R_NONE, OPTSAVEUNSUB, "no" },
/*
** .pp
*/
#endif
#ifdef USE_NNTP
- {"show_new_news", DT_SYN, R_NONE, UL "nntp_show_new_news", 0 },
{"nntp_show_new_news", DT_BOOL, R_NONE, OPTSHOWNEWNEWS, "yes" },
/*
** .pp
** Also controls whether or not the number of new articles of subscribed
** newsgroups will be checked.
*/
- {"show_only_unread", DT_SYN, R_NONE, UL "nntp_show_only_unread", 0 },
{"nntp_show_only_unread", DT_BOOL, R_NONE, OPTSHOWONLYUNREAD, "no" },
/*
** .pp
** to the one used by ``$$status_format''.
*/
#ifdef USE_NNTP
- {"x_comment_to", DT_SYN, R_NONE, UL "nntp_x_comment_to", 0},
{"nntp_x_comment_to", DT_BOOL, R_NONE, OPTXCOMMENTTO, "no" },
/*
** .pp
{ NULL }
};
-const struct feature_t Features[] = {
- {"ncurses",
+static const char* Features[] = {
#ifdef NCURSES_VERSION
- 1
-#else
- 0
+ "ncurses",
#endif
- }, {"slang",
#ifdef USE_SLANG_CURSES
- 1
-#else
- 0
+ "slang",
#endif
- }, {"iconv",
#ifdef _LIBICONV_VERSION
- 1
-#else
- 0
+ "iconv",
#endif
- }, {"idn",
#ifdef HAVE_LIBIDN
- 1
-#else
- 0
+ "idn",
#endif
- }, {"dotlock",
#ifdef USE_DOTLOCK
- 1
-#else
- 0
+ "dotlock",
#endif
- }, {"standalone",
#ifdef DL_STANDALONE
- 1
-#else
- 0
+ "standalone",
#endif
- }, {"pop",
#ifdef USE_POP
- 1
-#else
- 0
+ "pop",
#endif
- }, {"nntp",
#ifdef USE_NNTP
- 1
-#else
- 0
+ "nntp",
#endif
- }, {"imap",
#ifdef USE_IMAP
- 1
-#else
- 0
+ "imap",
#endif
- }, {"ssl",
#ifdef USE_SSL
- 1
-#else
- 0
+ "ssl",
#endif
- }, {"gnutls",
#ifdef USE_GNUTLS
- 1
-#else
- 0
+ "gnutls",
#endif
- }, {"sasl",
#ifdef USE_SASL
- 1
-#else
- 0
+ "sasl",
#endif
- }, {"sasl2",
#ifdef USE_SASL2
- 1
-#else
- 0
+ "sasl2",
#endif
- }, {"libesmtp",
#ifdef USE_LIBESMTP
- 1
-#else
- 0
+ "libesmtp",
#endif
- }, {"compressed",
#ifdef USE_COMPRESSED
- 1
-#else
- 0
+ "compessed",
#endif
- }, {"color",
#ifdef HAVE_COLOR
- 1
-#else
- 0
+ "color",
#endif
- }, {"classic_pgp",
#ifdef CRYPT_BACKEND_CLASSIC_PGP
- 1
-#else
- 0
+ "classic_pgp",
#endif
- }, {"classic_smime",
#ifdef CRYPT_BACKEND_CLASSIC_SMIME
- 1
-#else
- 0
+ "class_smime",
#endif
- }, {"gpgme",
#ifdef CRYPT_BACKEND_GPGME
- 1
-#else
- 0
+ "gpgme",
#endif
- }, {"header_cache",
#ifdef USE_HCACHE
- 1
-#else
- 0
+ "header_cache",
#endif
- }, {"qdbm",
#ifdef HAVE_QDBM
- 1
-#else
- 0
+ "qdbm",
#endif
- }, {"gdbm",
#ifdef HAVE_GDBM
- 1
-#else
- 0
+ "gdbm",
#endif
- }, {"db4",
#ifdef HAVE_DB4
- 1
-#else
- 0
+ "db4",
#endif
- },
/* last */
- {NULL, 0}
+ NULL
};
const struct mapping_t SortMethods[] = {