2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or (at
5 * your option) any later version.
7 * This program is distributed in the hope that it will be useful, but
8 * WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * Copyright © 2007 Pierre Habouzit
20 #include <lib-lib/lib-lib.h>
21 #include <lib-lua/lib-lua.h>
23 #include <sys/types.h>
28 static char *madmutt_init_shell(void)
30 struct passwd *pw = getpwuid(getuid());
31 return m_strdup(pw ? pw->pw_shell : (getenv("SHELL") ?: "/bin/sh"));
34 static char *madmutt_init_username(void)
36 struct passwd *pw = getpwuid(getuid());
37 return m_strdup(pw ? pw->pw_name : (getenv("USER") ?: "john_doe"));
40 static char *madmutt_init_homedir(void)
42 struct passwd *pw = getpwuid(getuid());
43 return m_strdup(pw ? pw->pw_dir : (getenv("HOME") ?: "/"));
46 static const char *madmutt_pwd(void)
48 char path[_POSIX_PATH_MAX];
49 getcwd(path, sizeof(path));
53 static const char *luaM_path_post(const char *val)
56 _mutt_expand_path(path, sizeof(path), val, 0);
62 .ctype = unsigned : 1;
73 .push = luaM_path_post($$);
82 .check = luaM_checkquadopt($L, $$);
83 .ctype = unsigned : 2;
86 #if defined(HAVE_QDBM)
87 # define HCACHE_BACKEND "qdbm"
88 #elif defined(HAVE_GDBM)
89 # define HCACHE_BACKEND "gdbm"
90 #elif defined(HAVE_DB4)
91 # define HCACHE_BACKEND "db4"
93 # define HCACHE_BACKEND "unknown"
97 const string_t version = VERSION;
98 const string_t sysconfdir = SYSCONFDIR;
99 const string_t bindir = BINDIR;
100 const string_t docdir = PKGDOCDIR;
101 const string_t hcache_backend = HCACHE_BACKEND;
103 path_t dotlock = m_strdup(BINDIR "/mutt_dotlock");
104 path_t editor = m_strdup(getenv("VISUAL") ?: getenv("EDITOR") ?: "vi");
105 path_t shell = madmutt_init_shell();
106 path_t username = madmutt_init_username();
107 path_t homedir = madmutt_init_homedir();
108 path_t tmpdir = m_strdup(getenv("TMPDIR") ?: "/tmp");
110 quadopt_t quit = M_YES;
114 const string_t pwd(void) = madmutt_pwd();
117 @package MTransport {
118 path_t sendmail = m_strdup(SENDMAIL " -eom -oi");
120 string_t dsn_notify = NULL;
121 string_t dsn_return = NULL;