#include <pwd.h>
#include "../mutt.h"
+@import "base.cpkg"
-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 const char *madmutt_pwd(void)
+static char *madmutt_init_username(void)
{
- char path[_POSIX_PATH_MAX];
- getcwd(path, sizeof(path));
- return path;
+ struct passwd *pw = getpwuid(getuid());
+ return m_strdup(pw ? pw->pw_name : (getenv("USER") ?: "john_doe"));
}
-static const char *luaM_path_post(const char *val)
+static char *madmutt_init_homedir(void)
{
- char path[PATH_MAX];
- _mutt_expand_path(path, sizeof(path), val, 0);
- return path;
+ struct passwd *pw = getpwuid(getuid());
+ return m_strdup(pw ? pw->pw_dir : (getenv("HOME") ?: "/"));
}
-@type bool = {
- .kind = 'b';
- .ctype = unsigned : 1;
-};
-
-@type string_t = {
- .kind = 's';
- .ctype = const char *;
-};
-
-@type path_t = {
- .push = luaM_path_post($$);
- .kind = 's';
- .ctype = char *;
-};
-
-@type quadopt_t = {
- .kind = 'i';
- .check = luaM_checkquadopt($L, $$);
- .ctype = unsigned : 2;
-};
-
#if defined(HAVE_QDBM)
-# define HCACHE_BACKEND "qdbm"
+# define HCACHE_BACKEND "qdbm"
#elif defined(HAVE_GDBM)
-# define HCACHE_BACKEND "gdbm"
+# define HCACHE_BACKEND "gdbm"
#elif defined(HAVE_DB4)
-# define HCACHE_BACKEND "db4"
+# define HCACHE_BACKEND "db4"
#else
-# define HCACHE_BACKEND "unknown"
+# define HCACHE_BACKEND NULL
#endif
-@package madmutt {
+@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;
bool beep = 1;
bool beep_new = 0;
- const string_t pwd(void) = madmutt_pwd();
-} ml_core;
+ const string_t pwd(void) {
+ char path[_POSIX_PATH_MAX];
+ getcwd(path, sizeof(path));
+ RETURN(path);
+ };
+};
+
+@package MTransport {
+ path_t sendmail = m_strdup(SENDMAIL " -eom -oi");
+
+ /* TODO: check it's NULL, hdrs or full */
+ string_t dsn_notify = NULL;
+
+ /* TODO: check it's never, delay, failure, success with ',' */
+ string_t dsn_return = NULL;
+};
/* vim:set ft=c: */