*/
#include <lib-lib/lib-lib.h>
+
+#include <sys/types.h>
+#include <pwd.h>
+
#include "lib-lua_priv.h"
#include "../mutt.h"
*/
#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
#endif
};
+static const char *madmutt_init_shell(void)
+{
+ struct passwd *pw = getpwuid(getuid());
+
+ if (pw)
+ return pw->pw_shell;
+ return getenv("SHELL") ?: "/bin/sh";
+}
+
+static const struct {
+ const char *k;
+ const char *(*f)(void);
+} 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)
{
int i;
lua_setfield(L, -2, madmutt_module_vars[i].key);
}
+ for (i = 0; i < countof(madmutt_module_vars2); i++) {
+ lua_pushstring(L, madmutt_module_vars2[i].f());
+ lua_setfield(L, -2, madmutt_module_vars2[i].k);
+ }
+
lua_pushstring(L, "__index");
lua_pushvalue(L, -2);
lua_settable(L, -3);