/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
*
- * Copyright (c) 2000-2001 by Alfons Hoogervorst <alfons@proteus.demon.nl>
+ * Copyright (c) 2000-2003 by Alfons Hoogervorst <alfons@proteus.demon.nl>
*
* 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
g_strdown(ce1->string);
ce1->ref = ae;
- g_completion_list = g_list_append(g_completion_list, ce1);
+ g_completion_list = g_list_prepend(g_completion_list, ce1);
}
/* add_address() - adds address to the completion list. this function looks
if (!name || !address) return -1;
- debug_print( "completion: add_address: %s - %s\n", name, address );
-
ae = g_new0(address_entry, 1);
g_return_val_if_fail(ae != NULL, -1);
ae->name = g_strdup(name);
ae->address = g_strdup(address);
- g_address_list = g_list_append(g_address_list, ae);
+ g_address_list = g_list_prepend(g_address_list, ae);
add_address1(name, ae);
add_address1(address, ae);
*/
static void read_address_book(void) {
addressbook_load_completion( add_address );
+ g_address_list = g_list_reverse(g_address_list);
+ g_completion_list = g_list_reverse(g_completion_list);
+}
+
+/* should clear up anything after complete_address() */
+void clear_completion_cache(void)
+{
+ if (is_completion_pending()) {
+ if (g_completion_prefix)
+ g_free(g_completion_prefix);
+
+ if (g_completion_addresses) {
+ g_slist_free(g_completion_addresses);
+ g_completion_addresses = NULL;
+ }
+
+ g_completion_count = g_completion_next = 0;
+ }
}
/* start_address_completion() - returns the number of addresses
if (p != NULL) {
if (!p->name || p->name[0] == '\0')
address = g_strdup_printf(p->address);
- else if (strchr_with_skip_quote(p->name, '"', ','))
+ else if (p->name[0] != '"' &&
+ strpbrk(p->name, ",.[]<>") != NULL)
address = g_strdup_printf
("\"%s\" <%s>", p->name, p->address);
else
return 0;
}
-/* should clear up anything after complete_address() */
-void clear_completion_cache(void)
-{
- if (is_completion_pending()) {
- if (g_completion_prefix)
- g_free(g_completion_prefix);
-
- if (g_completion_addresses) {
- g_slist_free(g_completion_addresses);
- g_completion_addresses = NULL;
- }
-
- g_completion_count = g_completion_next = 0;
- }
-}
-
gboolean is_completion_pending(void)
{
/* check if completion pending, i.e. we might satisfy a request for the next