#include <lib-lib/mem.h>
#include <lib-lib/str.h>
#include <lib-lib/macros.h>
+#include <lib-lib/file.h>
+#include <lib-lib/mapping.h>
#include "mutt.h"
#include "mutt_menu.h"
#include "mutt_idna.h"
-#include "mapping.h"
#include "sort.h"
#include "lib/debug.h"
#include <ctype.h>
typedef struct query {
- ADDRESS *addr;
+ address_t *addr;
char *name;
char *other;
struct query *next;
static void query_menu (char *buf, size_t buflen, QUERY * results,
int retbuf);
-static ADDRESS *result_to_addr (QUERY * r)
+static address_t *result_to_addr (QUERY * r)
{
- static ADDRESS *tmp;
+ static address_t *tmp;
- tmp = rfc822_cpy_adr (r->addr);
+ tmp = address_list_dup (r->addr);
if (!tmp->next && !tmp->personal)
tmp->personal = m_strdup(r->name);
int mutt_query_complete (char *buf, size_t buflen)
{
QUERY *results = NULL;
- ADDRESS *tmpa;
+ address_t *tmpa;
if (!QueryCmd) {
mutt_error _("Query command not defined.");
mutt_addrlist_to_local (tmpa);
buf[0] = '\0';
rfc822_write_address (buf, buflen, tmpa, 0);
- rfc822_free_address (&tmpa);
+ address_delete (&tmpa);
mutt_clear_error ();
return (0);
}
if (op == OP_QUERY) {
queryp = results;
while (queryp) {
- rfc822_free_address (&queryp->addr);
+ address_delete (&queryp->addr);
p_delete(&queryp->name);
p_delete(&queryp->other);
results = queryp->next;
case OP_CREATE_ALIAS:
if (menu->tagprefix) {
- ADDRESS *naddr = NULL;
+ address_t *naddr = NULL;
for (i = 0; i < menu->max; i++)
if (QueryTable[i].tagged) {
- ADDRESS *a = result_to_addr (QueryTable[i].data);
-
- rfc822_append (&naddr, a);
- rfc822_free_address (&a);
+ address_list_append(&naddr, result_to_addr(QueryTable[i].data));
}
mutt_create_alias (NULL, naddr);
}
else {
- ADDRESS *a = result_to_addr (QueryTable[menu->current].data);
+ address_t *a = result_to_addr (QueryTable[menu->current].data);
mutt_create_alias (NULL, a);
- rfc822_free_address (&a);
+ address_delete (&a);
}
break;
/* fall through to OP_MAIL */
case OP_MAIL:
- msg = mutt_new_header ();
- msg->env = mutt_new_envelope ();
+ msg = header_new();
+ msg->env = envelope_new();
if (!menu->tagprefix) {
msg->env->to = result_to_addr (QueryTable[menu->current].data);
}
else {
for (i = 0; i < menu->max; i++)
if (QueryTable[i].tagged) {
- ADDRESS *a = result_to_addr (QueryTable[i].data);
-
- rfc822_append (&msg->env->to, a);
- rfc822_free_address (&a);
+ address_list_append(&msg->env->to, result_to_addr(QueryTable[i].data));
}
}
ci_send_message (0, msg, NULL, Context, NULL);
int tagged = 0;
size_t curpos = 0;
- memset (buf, 0, buflen);
+ p_clear(buf, buflen);
/* check for tagged entries */
for (i = 0; i < menu->max; i++) {
if (QueryTable[i].tagged) {
if (curpos == 0) {
- ADDRESS *tmpa = result_to_addr (QueryTable[i].data);
+ address_t *tmpa = result_to_addr (QueryTable[i].data);
mutt_addrlist_to_local (tmpa);
tagged = 1;
rfc822_write_address (buf, buflen, tmpa, 0);
curpos = m_strlen(buf);
- rfc822_free_address (&tmpa);
+ address_delete (&tmpa);
}
else if (curpos + 2 < buflen) {
- ADDRESS *tmpa = result_to_addr (QueryTable[i].data);
+ address_t *tmpa = result_to_addr (QueryTable[i].data);
mutt_addrlist_to_local (tmpa);
strcat (buf, ", "); /* __STRCAT_CHECKED__ */
rfc822_write_address ((char *) buf + curpos + 1,
buflen - curpos - 1, tmpa, 0);
curpos = m_strlen(buf);
- rfc822_free_address (&tmpa);
+ address_delete (&tmpa);
}
}
}
/* then enter current message */
if (!tagged) {
- ADDRESS *tmpa = result_to_addr (QueryTable[menu->current].data);
+ address_t *tmpa = result_to_addr (QueryTable[menu->current].data);
mutt_addrlist_to_local (tmpa);
rfc822_write_address (buf, buflen, tmpa, 0);
- rfc822_free_address (&tmpa);
+ address_delete (&tmpa);
}
}
queryp = results;
while (queryp) {
- rfc822_free_address (&queryp->addr);
+ address_delete (&queryp->addr);
p_delete(&queryp->name);
p_delete(&queryp->other);
results = queryp->next;