summaryrefslogtreecommitdiff
path: root/pith/ablookup.h
diff options
context:
space:
mode:
authorEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
committerEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
commit094ca96844842928810f14844413109fc6cdd890 (patch)
treee60efbb980f38ba9308ccb4fb2b77b87bbc115f3 /pith/ablookup.h
downloadalpine-094ca96844842928810f14844413109fc6cdd890.tar.xz
Initial Alpine Version
Diffstat (limited to 'pith/ablookup.h')
-rw-r--r--pith/ablookup.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/pith/ablookup.h b/pith/ablookup.h
new file mode 100644
index 00000000..4ffb7aa5
--- /dev/null
+++ b/pith/ablookup.h
@@ -0,0 +1,106 @@
+/*
+ * $Id: ablookup.h 1266 2009-07-14 18:39:12Z hubert@u.washington.edu $
+ *
+ * ========================================================================
+ * Copyright 2006-2008 University of Washington
+ * Copyright 2013 Eduardo Chappa
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * ========================================================================
+ */
+
+#ifndef PITH_ABLOOKUP_INCLUDED
+#define PITH_ABLOOKUP_INCLUDED
+
+
+#include "../pith/state.h"
+#include "../pith/pattern.h"
+#include "../pith/adrbklib.h"
+#include "../pith/bldaddr.h"
+
+
+/*
+ * Flags to adrbk_list_of_completions().
+ * ALC_INCLUDE_ADDRS means that the "addr" element
+ * should be included in the COMPLETE_S list. When
+ * this is not set the entries that match because
+ * of an addr match are still included in the list
+ * but the actual "addr" element itself is not filled
+ * in. That isn't needed by Web Alpine and it does
+ * have a cost, though rather small, to fill it in.
+ */
+#define ALC_INCLUDE_ADDRS 0x1
+#define ALC_INCLUDE_LDAP 0x2
+
+/*
+ * Values OR'd together in matches_bitmaps.
+ * These are not in the same namespace as the flags
+ * above, these are just bits for the matches_bitmaps member.
+ *
+ * If ALC_NICK is set that means there was a prefix match on the nickname.
+ * ALC_FULL is a match on the full address.
+ * ALC_ADDR is a match on the mailbox@host part of the address.
+ * ALC_REVFULL is a match on the Last, First Fullname if the user uses that.
+ * ALC_ABOOK means the entry came from an address book entry
+ * ALC_LDAP means the entry came from an LDAP lookup
+ * ALC_CURR means the entry came from the currently viewed message
+ * This is used in both ABOOK_ENTRY_S and COMPLETE_S structures.
+ */
+#define ALC_NICK 0x01
+#define ALC_FULL 0x02
+#define ALC_REVFULL 0x04
+#define ALC_ADDR 0x08
+#define ALC_ABOOK 0x10
+#define ALC_LDAP 0x20
+#define ALC_CURR 0x40
+#define ALC_FCC 0x80
+
+
+typedef struct abook_entry_list {
+ AdrBk *ab;
+ adrbk_cntr_t entrynum;
+ unsigned matches_bitmap;
+ struct abook_entry_list *next;
+} ABOOK_ENTRY_S;
+
+
+typedef struct completelist {
+ char *nickname; /* the nickname */
+ char *full_address; /* Some Body <someb@there.org> */
+ char *addr; /* someb@there.org (costs extra) */
+ char *rev_fullname; /* optional Last, First version of fullname */
+ char *fcc; /* optional fcc associated with address */
+ unsigned matches_bitmap;
+ struct completelist *next;
+} COMPLETE_S;
+
+
+/* exported protoypes */
+char *get_nickname_from_addr(ADDRESS *, char *, size_t);
+char *get_fcc_from_addr(ADDRESS *, char *, size_t);
+int get_contactinfo_from_addr(ADDRESS *, char **, char **, char **, char **);
+void address_in_abook(MAILSTREAM *, SEARCHSET *, int, PATTERN_S *);
+ADDRESS *abe_to_address(AdrBk_Entry *, AddrScrn_Disp *, AdrBk *, int *);
+char *abe_to_nick_or_addr_string(AdrBk_Entry *, AddrScrn_Disp *, int);
+int address_is_us(ADDRESS *, struct pine *);
+int address_is_same(ADDRESS *, ADDRESS *);
+int abes_are_equal(AdrBk_Entry *, AdrBk_Entry *);
+char *addr_lookup(char *, int *, int);
+AdrBk_Entry *adrbk_lookup_with_opens_by_nick(char *, int, int *, int);
+AdrBk_Entry *address_to_abe(ADDRESS *);
+int contains_regex_special_chars(char *str);
+COMPLETE_S *adrbk_list_of_completions(char *, MAILSTREAM *, imapuid_t, int);
+COMPLETE_S *new_complete_s(char *, char *, char *, char *, char *, unsigned);
+void free_complete_s(COMPLETE_S **);
+ABOOK_ENTRY_S *new_abook_entry_s(AdrBk *, a_c_arg_t, unsigned);
+void free_abook_entry_s(ABOOK_ENTRY_S **);
+void combine_abook_entry_lists(ABOOK_ENTRY_S **, ABOOK_ENTRY_S *);
+ABOOK_ENTRY_S *adrbk_list_of_possible_completions(AdrBk *, char *);
+
+
+#endif /* PITH_ABLOOKUP_INCLUDED */