On Wed Aug 1 2012 Roland Winkler wrote: > Part of BBDB (yes, even v2) has allowed the possibility that a mail > address in a record is not just a plain "sm...@foo.com". But the > record of, say, Johnathan Smith may also contain an RFC 822 address > such as "John Smith <sm...@foo.com>". > > Johnathan Smith > phone (home): (123) 456-7890 > mail: sm...@example.com, John Smith <sm...@foo.com>, > Joe Smith <j...@bar.com>
The patch below tries to make sure that mail entries containing RFC-822 mail addresses such as "John Smith <sm...@foo.com>" in the example above are handled properly throughout BBDB. Essentially, it decomposes such a mail address into a name part "John Smith" and a stripped mail address "sm...@foo.com". The name part is treated as an AKA. The stripped mail address is used, for example, by BBDB's MUA interface to identify the record for the sender or recipient of a message. However, if all records in your database are of the plain form "sm...@foo.com", the patch below should not be noticeable for you. To make this work efficiently, BBDB caches "extra AKAs" such as "John Smith" and the stripped addresses such as "sm...@foo.com". So changing the mail entry for a record requires a bit of extra care to make sure that the cache gets updated, too. All this is similar to various extra steps BBDB is taking to ensure the integrity of the database. To make all this work reliable, I added the following (taken from the updated README file): Notes for BBDB lisp hackers: ---------------------------- If you write your own functions and commands to modify BBDB records, do not call the low-level functions bbdb-record-set-* such as bbdb-record-set-aka, bbdb-record-set-mail etc. The recommended sequence of calls is - one or multiple calls of bbdb-record-set-field for the respective fields to be changed. This not only sets the fields, but it also ensures the integrity of the database. Also, this makes your code more robust with respect to possible future changes of BBDB's innermost internals. - a call of bbdb-change-record which updates the database after a change of record. - If the changed record is displayed in the *BBDB* buffer, call bbdb-redisplay-record. 2012-09-23 Roland Winkler <wink...@gnu.org> Add more complete support for mail entries containing RFC-822 addresses such as "John Smith <sm...@foo.com>" in the record of Johnathan Smith. * lisp/bbdb.el (bbdb-defstruct): Doc fix. Improve doc string of functions defined via this macro. (bbdb-cache-mail-aka, bbdb-cache-mail-canon): New elements of bbdb-record-cache. (bbdb-record-mail-aka, bbdb-record-mail-canon): New functions. (bbdb-hash-p): New function. (bbdb-gethash): Use it. (bbdb-puthash-mail): New function. (bbdb-hash-record): Use it. (bbdb-record-field): Renamed from bbdb-record-get-field. New field values mail-canon, mail-aka and aka-all. Doc fix. (bbdb-record-get-field): Obsolete function alias. (bbdb-record-set-field): Doc fix. Update hash for mail entries such as "John Smith <sm...@foo.com>". (bbdb-delete-record-internal): Use canonical mail addresses and all AKAs when cleaning up the hash. * lisp/bbdb-com.el (bbdb-search): Use bbdb-record-field. (bbdb-search-duplicates): Use bbdb-record-mail-canon. (bbdb-message-search): Simplify. (bbdb-edit-field): Doc fix. (bbdb-ident-point, bbdb-transpose-fields) (bbdb-delete-field-or-record): Use bbdb-record-field. (bbdb-completion-predicate): Use bbdb-hash-p. (bbdb-complete-mail): Compare with all AKAs. A plain message search should be sufficient. * lisp/bbdb-mual.el (bbdb-annotate-message): Compare with canonical mail addresses. * lisp/bbdb-ispell.el (bbdb-ispell-export): Use bbdb-record-field. * README: Notes for BBDB lisp hackers added. BBDB is available at http://savannah.nongnu.org/projects/bbdb/ To check it out, use git clone git://git.savannah.nongnu.org/bbdb.git ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ bbdb-info@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bbdb-info BBDB Home Page: http://bbdb.sourceforge.net/