const struct mapping_t *map,
char* errbuf, ssize_t errlen);
-static HASH *ConfigOptions = NULL;
+static hash_t *ConfigOptions = NULL;
/* for synonym warning reports: synonym found during parsing */
typedef struct syn_t {
static int CurRCLine = 0;
/* prototypes for checking for special vars */
-static int check_dsn_return (const char* option, unsigned long val,
- char* errbuf, ssize_t errlen);
-static int check_dsn_notify (const char* option, unsigned long val,
- char* errbuf, ssize_t errlen);
static int check_history (const char* option, unsigned long val,
char* errbuf, ssize_t errlen);
/* this checks that numbers are >= 0 */
int (*check) (const char* option, unsigned long val,
char* errbuf, ssize_t errlen);
} SpecialVars[] = {
- { "dsn_notify", check_dsn_notify },
- { "dsn_return", check_dsn_return },
#if defined (USE_LIBESMTP) && (defined (USE_SSL) || defined (USE_GNUTLS))
{ "smtp_use_tls", mutt_libesmtp_check_usetls },
#endif
return (QuadOptions[n] >> b) & 0x3;
}
+int query_quadoption2(int v, const char *prompt)
+{
+ switch (v) {
+ case M_YES:
+ case M_NO:
+ return (v);
+
+ default:
+ v = mutt_yesorno(prompt, (v == M_ASKYES));
+ CLEARLINE (LINES - 1);
+ return (v);
+ }
+}
+
int query_quadoption (int opt, const char *prompt)
{
int v = quadoption (opt);
ptr->init = m_strdup(buf);
}
-static struct option_t* add_option (const char* name, const char* init,
- short type, short dodup) {
- struct option_t* option = p_new(struct option_t, 1);
-
- option->option = m_strdup(name);
- option->type = type;
- if (init)
- option->init = dodup ? m_strdup(init) : (char*) init;
- return (option);
-}
-
static int init_expand (char** dst, struct option_t* src) {
BUFFER token, in;
ssize_t len = 0;
set_option (OPTREDRAWTREE);
}
-/* check whether value for $dsn_return would be valid */
-static int check_dsn_return (const char* option __attribute__ ((unused)), unsigned long p,
- char* errbuf, ssize_t errlen) {
- char* val = (char*) p;
- if (val && *val && m_strncmp(val, "hdrs", 4) != 0 &&
- m_strncmp(val, "full", 4) != 0) {
- if (errbuf)
- snprintf (errbuf, errlen, _("'%s' is invalid for $%s"), val, "dsn_return");
- return (0);
- }
- return (1);
-}
-
-/* check whether value for $dsn_notify would be valid */
-static int
-check_dsn_notify (const char* option __attribute__ ((unused)),
- unsigned long val, char* errbuf, ssize_t errlen)
-{
- const char *p = (const char*)val;
-
- while (p && *p) {
- const char *q = m_strchrnul(p, ',');
- int len = q - p;
-
- if (!m_strncmp(p, "never", len) && !m_strncmp(p, "delay", len)
- && !m_strncmp(p, "failure", len) && !m_strncmp(p, "success", len))
- {
- if (errbuf)
- snprintf(errbuf, errlen, _("'%.*s' is invalid for $%s"),
- len, p, "dsn_notify");
- return 0;
- }
-
- p = q + 1;
- }
-
- return 1;
-}
-
static int check_num (const char* option, unsigned long p,
char* errbuf, ssize_t errlen) {
if ((int) p < 0) {
set_option (OPTRESORTINIT);
set_option (OPTREDRAWTREE);
return (0);
- }
- else if (!FuncTable[DTYPE (option->type)].opt_fromstr) {
- snprintf (err->data, err->dsize, _("$%s is read-only"), option->option);
- r = -1;
- break;
} else {
CHECK_PAGER;
mutt_restore_default (NULL, option, 1);
{
if (unset) {
CHECK_PAGER;
- if (!FuncTable[DTYPE (option->type)].opt_fromstr) {
- snprintf (err->data, err->dsize, _("$%s is read-only"),
- option->option);
- r = -1;
- break;
- } else if (DTYPE (option->type) == DT_ADDR)
+ if (DTYPE (option->type) == DT_ADDR)
address_list_wipe((address_t **) option->data);
else
p_delete((void **)(void *)&option->data);
break;
}
- /* the $madmutt_ variables are read-only */
- if (!FuncTable[DTYPE (option->type)].opt_fromstr) {
- snprintf (err->data, err->dsize, _("$%s is read-only"),
- option->option);
+ CHECK_PAGER;
+ s->dptr++;
+ mutt_extract_token (tmp, s, 0);
+ if (!FuncTable[DTYPE (option->type)].opt_fromstr
+ (option, tmp->data, err->data, err->dsize))
r = -1;
- break;
- } else {
- CHECK_PAGER;
- s->dptr++;
- mutt_extract_token (tmp, s, 0);
- if (!FuncTable[DTYPE (option->type)].opt_fromstr
- (option, tmp->data, err->data, err->dsize))
- r = -1;
- }
}
else if (DTYPE (option->type) == DT_QUAD) {
p_clear(&token, 1);
while ((linebuf = mutt_read_line(linebuf, &buflen, f, &line)) != NULL) {
- conv = ConfigCharset && (*ConfigCharset) && Charset;
+ conv = ConfigCharset && (*ConfigCharset) && MCharset.charset;
if (conv) {
currentline = m_strdup(linebuf);
if (!currentline)
continue;
- mutt_convert_string (¤tline, ConfigCharset, Charset, 0);
+ mutt_convert_string (¤tline, ConfigCharset, MCharset.charset, 0);
}
else
currentline = linebuf;
err.data = error;
err.dsize = sizeof(error);
- ConfigOptions = hash_create (sizeof(MuttVars) * 2);
+ ConfigOptions = hash_new (sizeof(MuttVars) * 2, 0);
for (i = 0; MuttVars[i].option; i++) {
- hash_insert (ConfigOptions, MuttVars[i].option, &MuttVars[i], 0);
+ hash_insert (ConfigOptions, MuttVars[i].option, &MuttVars[i]);
}
/*
snprintf (AttachmentMarker, sizeof(AttachmentMarker),
"\033]9;%ld\a", (long) time (NULL));
- /* on one of the systems I use, getcwd() does not return the same prefix
- as is listed in the passwd file */
- if ((p = getenv ("HOME")))
- Homedir = m_strdup(p);
-
+ luaM_initialize();
/* Get some information about the user */
if ((pw = getpwuid (getuid ()))) {
char rnbuf[STRING];
-
- Username = m_strdup(pw->pw_name);
- if (!Homedir)
- Homedir = m_strdup(pw->pw_dir);
-
- mutt_gecos_name(rnbuf, sizeof(rnbuf), pw, GecosMask.rx);
+ mutt_gecos_name(rnbuf, sizeof(rnbuf), pw, MCore.gecos_mask);
Realname = m_strdup(rnbuf);
- Shell = m_strdup(pw->pw_shell);
- endpwent ();
- }
- else {
- if (!Homedir) {
- mutt_endwin (NULL);
- fputs (_("unable to determine home directory"), stderr);
- exit (1);
- }
- if ((p = getenv ("USER")))
- Username = m_strdup(p);
- else {
- mutt_endwin (NULL);
- fputs (_("unable to determine username"), stderr);
- exit (1);
- }
- Shell = m_strdup((p = getenv ("SHELL")) ? p : "/bin/sh");
}
/* And about the host... */
Spoolfile = m_strdup(p);
else {
#ifdef HOMESPOOL
- mutt_concat_path(buffer, sizeof(buffer), NONULL(Homedir), MAILPATH);
+ mutt_concat_path(buffer, sizeof(buffer), NONULL(MCore.homedir), MAILPATH);
#else
- mutt_concat_path(buffer, sizeof(buffer), MAILPATH, NONULL(Username));
+ mutt_concat_path(buffer, sizeof(buffer), MAILPATH, NONULL(MCore.username));
#endif
Spoolfile = m_strdup(buffer);
}
"/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap");
}
- Tempdir = m_strdup((p = getenv ("TMPDIR")) ? p : "/tmp");
-
- p = getenv ("VISUAL");
- if (!p) {
- p = getenv ("EDITOR");
- if (!p)
- p = "vi";
- }
- Editor = m_strdup(p);
-
if ((p = getenv ("REPLYTO")) != NULL) {
BUFFER buf, token;
From = rfc822_parse_adrlist (NULL, p);
charset_initialize();
- mlua_initialize();
/* Set standard defaults */
hash_map (ConfigOptions, mutt_set_default, 0);
mutt_init_history ();
if (!Muttrc) {
- snprintf (buffer, sizeof(buffer), "%s/.madmuttrc", NONULL (Homedir));
+ snprintf (buffer, sizeof(buffer), "%s/.madmuttrc", NONULL(MCore.homedir));
if (access (buffer, F_OK) == -1)
snprintf (buffer, sizeof(buffer), "%s/.madmutt/madmuttrc",
- NONULL (Homedir));
+ NONULL(MCore.homedir));
default_rc = 1;
Muttrc = m_strdup(buffer);
mutt_expand_path (buffer, sizeof(buffer));
Muttrc = m_strdup(buffer);
}
- p_delete(&AliasFile);
- AliasFile = m_strdup(NONULL (Muttrc));
/* Process the global rc file if it exists and the user hasn't explicity
requested not to via "-n". */
}
/* LUA {{{ */
- snprintf(buffer, sizeof(buffer), "%s/.madmutt.lua", NONULL(Homedir));
+ snprintf(buffer, sizeof(buffer), "%s/.madmutt.lua", NONULL(MCore.homedir));
if (access(buffer, F_OK) < 0)
- snprintf(buffer, sizeof(buffer), "%s/.madmutt/cfg.lua", NONULL(Homedir));
+ snprintf(buffer, sizeof(buffer), "%s/.madmutt/cfg.lua", NONULL(MCore.homedir));
if (!access(buffer, F_OK)) {
- need_pause = mlua_wrap(mutt_error, mlua_dofile(buffer));
+ need_pause = luaM_wrap(mutt_error, luaM_dofile(buffer));
}
/* }}} */