*/
#include <lib-lib/lib-lib.h>
+
+#include <sys/types.h>
+#include <pwd.h>
+
#include "lib-lua_priv.h"
#include "../mutt.h"
{
const char *idx = luaL_checkstring(L, 2);
const char *val = luaL_checkstring(L, 3);
+ char buf[STRING];
switch (lua_which_token(idx, -1)) {
default:
luaL_error(L, "bad subscript to madmutt: %s", val);
return 0;
+ case LTK_DOTLOCK:
case LTK_SENDMAIL:
case LTK_SHELL:
+ _mutt_expand_path(buf, sizeof(buf), val, 0);
+ val = buf;
break;
}
*/
#ifdef USE_HCACHE
#if defined(HAVE_QDBM)
- {"hcache_backend", "qdbm" },
+ { "hcache_backend", "qdbm" },
#elif defined(HAVE_GDBM)
- {"hcache_backend", "gdbm" },
+ { "hcache_backend", "gdbm" },
#elif defined(HAVE_DB4)
- {"hcache_backend", "db4" },
+ { "hcache_backend", "db4" },
#else
- {"hcache_backend", "unknown" },
+ { "hcache_backend", "unknown" },
#endif
/*
** .pp
** header chaching's database backend.\fP
*/
#endif
+
+ {"dotlock", BINDIR "/mutt_dotlock"},
+ /*
+ ** .pp
+ ** Contains the path of the \fTmadmutt_dotlock(1)\fP binary to be used by
+ ** Madmutt.
+ */
+ {"sendmail", SENDMAIL " -oem -oi"},
+ /*
+ ** .pp
+ ** Specifies the program and arguments used to deliver mail sent by Madmutt.
+ ** Madmutt expects that the specified program interprets additional
+ ** arguments as recipient addresses.
+ */
+};
+
+static void madmutt_init_shell(char *buf, ssize_t len)
+{
+ struct passwd *pw = getpwuid(getuid());
+
+ if (pw) {
+ m_strcpy(buf, len, pw->pw_shell);
+ _mutt_expand_path(buf, len, pw->pw_shell, 0);
+ } else {
+ m_strcpy(buf, len, getenv("SHELL") ?: "/bin/sh");
+ }
+}
+
+static const struct {
+ const char *key;
+ void (*fun)(char *buf, ssize_t len);
+} madmutt_module_vars2[] = {
+ { "shell", madmutt_init_shell },
+ /*
+ ** .pp
+ ** Command to use when spawning a subshell. By default, the user's login
+ ** shell from \fT/etc/passwd\fP is used.
+ */
};
int luaopen_madmutt(lua_State *L)
lua_setfield(L, -2, madmutt_module_vars[i].key);
}
+ for (i = 0; i < countof(madmutt_module_vars2); i++) {
+ char buf[STRING];
+ (madmutt_module_vars2[i].fun)(buf, sizeof(buf));
+ lua_pushstring(L, buf);
+ lua_setfield(L, -2, madmutt_module_vars2[i].key);
+ }
+
lua_pushstring(L, "__index");
lua_pushvalue(L, -2);
lua_settable(L, -3);