/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * Copyright © 2007 Pierre Habouzit */ #include #include #include #include #include "../mutt.h" static char *madmutt_init_shell(void) { struct passwd *pw = getpwuid(getuid()); return m_strdup(pw ? pw->pw_shell : (getenv("SHELL") ?: "/bin/sh")); } static char *madmutt_init_username(void) { struct passwd *pw = getpwuid(getuid()); return m_strdup(pw ? pw->pw_name : (getenv("USER") ?: "john_doe")); } static char *madmutt_init_homedir(void) { struct passwd *pw = getpwuid(getuid()); return m_strdup(pw ? pw->pw_dir : (getenv("HOME") ?: "/")); } static const char *madmutt_pwd(void) { char path[_POSIX_PATH_MAX]; getcwd(path, sizeof(path)); return path; } static const char *luaM_path_post(const char *val) { char path[PATH_MAX]; _mutt_expand_path(path, sizeof(path), val, 0); return path; } @type bool = { .kind = 'b'; .ctype = unsigned : 1; }; @type string_t = { .kind = 's'; .ctype = char *; .dtor = p_delete($$); .ctor = m_strdup($$); }; @type path_t = { .push = luaM_path_post($$); .kind = 's'; .ctype = char *; .dtor = p_delete($$); .ctor = m_strdup($$); }; @type quadopt_t = { .kind = 'i'; .check = luaM_checkquadopt($L, $$); .ctype = unsigned : 2; }; #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 "unknown" #endif @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"); quadopt_t quit = M_YES; bool beep = 1; bool beep_new = 0; const string_t pwd(void) = madmutt_pwd(); } MCore; @package MTransport { path_t sendmail = m_strdup(SENDMAIL " -eom -oi"); string_t dsn_notify = NULL; string_t dsn_return = NULL; } MTransport; /* vim:set ft=c: */