X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=alias.cpkg;h=2efa1efb9065337f8fbd8c3477453b5c72600b87;hp=a87f5f07ccf584a6e51a716e3d2bf17aa97f7432;hb=68d92974c5785799ffb24f6577ae030594f91b29;hpb=05e61a9707a6da5c0bca77aa7c3c019a918494de diff --git a/alias.cpkg b/alias.cpkg index a87f5f0..2efa1ef 100644 --- a/alias.cpkg +++ b/alias.cpkg @@ -36,36 +36,94 @@ #include "alias.h" #include "mutt_idna.h" #include "sort.h" - -@type bool = { - .kind = 'b'; - .ctype = unsigned : 1; -}; - -@type string_t = { - .kind = 's'; - .ctype = char *; - .dtor = p_delete($$); - .ctor = m_strdup($$); -}; - -@type path_t = { - .kind = 's'; - .ctype = char *; - .dtor = p_delete($$); - .ctor = luaM_pathnew($$); -}; - -@type quadopt_t = { - .kind = 'i'; - .check = luaM_checkquadopt($L, $$); - .ctype = unsigned : 2; -}; - -static @package MAlias { +@import "lib-lua/base.cpkg" + +static rx_t *Alternates = NULL, *UnAlternates = NULL; +rx_t *MailLists = NULL, *UnMailLists = NULL; +rx_t *SubscribedLists = NULL, *UnSubscribedLists = NULL; + +@package MAlias { + /* + ** .pp + ** Specifies the format of the data displayed for the ``alias'' menu. The + ** following \fTprintf(3)\fP-style sequences are available: + ** .pp + ** .dl + ** .dt %a .dd alias name + ** .dt %f .dd flags - currently, a "d" for an alias marked for deletion + ** .dt %n .dd index number + ** .dt %r .dd address which alias expands to + ** .dt %t .dd character which indicates if the alias is tagged for inclusion + ** .de + */ string_t alias_format = m_strdup("%4n %2f %t %-10a %r"); - path_t alias_file = m_strdup("~/.madmutt/aliases"); -} MAlias; + /* + ** .pp + ** The default file in which to save aliases created by the + ** ``$create-alias'' function. + ** .pp + ** \fBNote:\fP Madmutt will not automatically source this file; you must + ** explicitly use the ``$source'' command for it to be executed. + */ + path_t alias_file = m_strdup("~/.madmutt/aliases"); + + /* + ** .pp + ** Specifies the filename of your signature, which is appended to all + ** outgoing messages. If the filename ends with a pipe (``\fT|\fP''), it is + ** assumed that filename is a shell command and input should be read from + ** its stdout. + */ + path_t signature = m_strdup("~/.signature"); + + /* + ** .pp + ** This specifies the file into which your outgoing messages should be + ** appended. (This is meant as the primary method for saving a copy of + ** your messages, but another way to do this is using the ``$my_hdr'' + ** command to create a \fTBcc:\fP header field with your email address in it.) + ** .pp + ** The value of \fI$$record\fP is overridden by the ``$$force_name'' and + ** ``$$save_name'' variables, and the ``$fcc-hook'' command. + */ + path_t record = NULL; + + void alternates(rx_t rx) { + rx_list_remove(&UnAlternates, rx); + rx_list_add(&Alternates, rx); + RETURN(); + }; + void unalternates(rx_t rx) { + rx_list_remove(&Alternates, rx); + rx_list_add(&UnAlternates, rx); + RETURN(); + }; + + void lists(rx_t rx) { + rx_list_remove(&UnMailLists, rx); + rx_list_add(&MailLists, rx); + RETURN(); + }; + void unlists(rx_t rx) { + rx_list_remove(&MailLists, rx); + rx_list_remove(&SubscribedLists, rx); + rx_list_add(&UnMailLists, rx); + RETURN(); + }; + + void subscribe(rx_t rx) { + rx_list_remove(&UnMailLists, rx); + rx_list_remove(&UnSubscribedLists, rx); + rx_list_add(&MailLists, rx); + rx_list_add(&SubscribedLists, rx_dup(rx)); + RETURN(); + }; + void unsubscribe(rx_t rx) { + rx_list_remove(&SubscribedLists, rx); + rx_list_add(&UnSubscribedLists, rx); + RETURN(); + }; +}; alias_t *Aliases; @@ -135,7 +193,7 @@ int mutt_addr_is_user(address_t *addr) return 0; if (!ascii_strcasecmp(addr->mailbox, MCore.username) - || string_is_address(addr->mailbox, MCore.username, Hostname) + || string_is_address(addr->mailbox, MCore.username, MCore.shorthost) || string_is_address(addr->mailbox, MCore.username, mutt_fqdn(0)) || string_is_address(addr->mailbox, MCore.username, mutt_fqdn(1)) || (From && !ascii_strcasecmp(From->mailbox, addr->mailbox))) @@ -372,7 +430,7 @@ static address_t *mutt_expand_aliases_r(address_t *a, string_list_t **expn) if (pw) { char namebuf[STRING]; - mutt_gecos_name(namebuf, sizeof(namebuf), pw, MCore.gecos_mask.rx); + mutt_gecos_name(namebuf, sizeof(namebuf), pw, MCore.gecos_mask); m_strreplace(&pop->personal, namebuf); } } @@ -381,7 +439,7 @@ static address_t *mutt_expand_aliases_r(address_t *a, string_list_t **expn) last = address_list_append(last, pop); } - if (option(OPTUSEDOMAIN)) { + if (MCore.use_domain) { /* now qualify all local addresses */ rfc822_qualify(head, mutt_fqdn(1)); }