make quadopts be consistently dealt with as strings.
[apps/madmutt.git] / lib-lua / madmutt.cpkg
index f11fc65..fd56f52 100644 (file)
 #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 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 = quadopt_t;
-};
+#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  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     = 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;
 
-    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();
+    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");
 
-    quadopt_t quit  = M_YES;
+    /* TODO: check it's NULL, hdrs or full */
+    string_t dsn_notify = NULL;
 
-    const string_t pwd(void) = madmutt_pwd();
-} ml_core;
+    /* TODO: check it's never, delay, failure, success with ',' */
+    string_t dsn_return = NULL;
+};
 
+/* vim:set ft=c: */