#include "../mutt.h"
-static const char *madmutt_init_shell(void)
+static char *madmutt_init_shell(void)
{
struct passwd *pw = getpwuid(getuid());
- return pw ? pw->pw_shell : (getenv("SHELL") ?: "/bin/sh");
+ return m_strdup(pw ? pw->pw_shell : (getenv("SHELL") ?: "/bin/sh"));
+}
+
+static char *madmutt_init_username(void)
+{
+ struct passwd *pw = getpwuid(getuid());
+ return m_strdup(pw ? pw->pw_name : (getenv("USER") ?: "john_doe"));
+}
+
+static char *madmutt_init_homedir(void)
+{
+ struct passwd *pw = getpwuid(getuid());
+ return m_strdup(pw ? pw->pw_dir : (getenv("HOME") ?: "/"));
}
static const char *madmutt_pwd(void)
return path;
}
-static const char *luaM_path_post(const char *val)
-{
- char path[PATH_MAX];
- _mutt_expand_path(path, sizeof(path), val, 0);
- return path;
-}
+@type bool = {
+ .kind = 'b';
+ .ctype = unsigned : 1;
+};
@type string_t = {
- .kind = 's';
- .ctype = const char *;
+ .kind = 's';
+ .ctype = char *;
+ .dtor = p_delete($$);
+ .ctor = m_strdup($$);
};
@type path_t = {
- .push = luaM_path_post($$);
.kind = 's';
.ctype = char *;
+ .dtor = p_delete($$);
+ .ctor = luaM_pathnew($$);
};
@type quadopt_t = {
.kind = 'i';
.check = luaM_checkquadopt($L, $$);
- .ctype = quadopt_t;
+ .ctype = unsigned : 2;
+};
+
+@type rx_t = {
+ .kind = 's';
+ .ctype = rx_t *;
+ .check = luaM_checkrx($L, $$);
+ .push = ($$)->pattern;
+ .ctor = luaM_rxnew($$);
+ .dtor = rx_delete($$);
};
-@package madmutt {
+#if defined(HAVE_QDBM)
+# define HCACHE_BACKEND "qdbm"
+#elif defined(HAVE_GDBM)
+# define HCACHE_BACKEND "gdbm"
+#elif defined(HAVE_DB4)
+# define HCACHE_BACKEND "db4"
+#else
+# define HCACHE_BACKEND "unknown"
+#endif
+
+@package MCore {
const string_t version = VERSION;
const string_t sysconfdir = SYSCONFDIR;
const string_t bindir = BINDIR;
const string_t docdir = PKGDOCDIR;
+ const string_t hcache_backend = HCACHE_BACKEND;
- path_t dotlock = BINDIR "/mutt_dotlock";
- path_t editor = getenv("VISUAL") ?: getenv("EDITOR") ?: "vi";
- path_t sendmail = SENDMAIL " -eom -oi";
- path_t shell = madmutt_init_shell();
+ path_t dotlock = m_strdup(BINDIR "/mutt_dotlock");
+ path_t editor = m_strdup(getenv("VISUAL") ?: getenv("EDITOR") ?: "vi");
+ path_t shell = madmutt_init_shell();
+ path_t username = madmutt_init_username();
+ path_t homedir = madmutt_init_homedir();
+ path_t tmpdir = m_strdup(getenv("TMPDIR") ?: "/tmp");
+ rx_t gecos_mask = luaM_rxnew("^[^,]*");
- quadopt_t quit = M_YES;
+ quadopt_t quit = M_YES;
+ bool beep = 1;
+ bool beep_new = 0;
const string_t pwd(void) = madmutt_pwd();
-} ml_core;
+} MCore;
+
+@package MTransport {
+ path_t sendmail = m_strdup(SENDMAIL " -eom -oi");
+
+ string_t dsn_notify = NULL /* TODO: check it's NULL, hdrs or full */;
+ string_t dsn_return = NULL /* TODO: check it's never, delay, failure, success with ',' */;
+} MTransport;
+/* vim:set ft=c: */