;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\"\210\304\307\306\"\210\304\310\311\"\207" [require ebdb cl-lib subr-x autoload calendar-absolute-from-gregorian "calendar" calendar-gregorian-from-absolute org-time-string-to-absolute "org"] 3) #@103 EBDB Features that have changed in various database revisions. Format ((VERSION . DIFFERENCES) ... ). (defconst ebdb-migration-features '((3 . "* Date format for `creation-date' and `timestamp' has changed,\n from \"dd mmm yy\" (ex: 25 Sep 97) to \"yyyy-mm-dd\" (ex: 1997-09-25).") (4 . "* Country field added.") (5 . "* More flexible street address.") (6 . "* postcodes are stored as plain strings.") (7 . "* Xfields is always a list. Organizations are stored as list.\n New field `affix'.")) (#$ . 668)) #@79 compiler-macro for inlining `ebdb-vrecord-firstname'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-firstname--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-firstname (aref cl-x 0)) nil] 9 (#$ . 1183)]) (put 'ebdb-vrecord-firstname 'compiler-macro 'ebdb-vrecord-firstname--cmacro) #@103 Access slot "firstname" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-firstname #[257 "\211\300H\207" [0] 3 (#$ . 1526)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-firstname side-effect-free t] 4) #@78 compiler-macro for inlining `ebdb-vrecord-lastname'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-lastname--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-lastname (aref cl-x 1)) nil] 9 (#$ . 1809)]) (put 'ebdb-vrecord-lastname 'compiler-macro 'ebdb-vrecord-lastname--cmacro) #@102 Access slot "lastname" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-lastname #[257 "\211\300H\207" [1] 3 (#$ . 2147)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-lastname side-effect-free t] 4) #@75 compiler-macro for inlining `ebdb-vrecord-affix'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-affix--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-affix (aref cl-x 2)) nil] 9 (#$ . 2427)]) (put 'ebdb-vrecord-affix 'compiler-macro 'ebdb-vrecord-affix--cmacro) #@99 Access slot "affix" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-affix #[257 "\211\300H\207" [2] 3 (#$ . 2749)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-affix side-effect-free t] 4) #@73 compiler-macro for inlining `ebdb-vrecord-aka'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-aka--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-aka (aref cl-x 3)) nil] 9 (#$ . 3020)]) (put 'ebdb-vrecord-aka 'compiler-macro 'ebdb-vrecord-aka--cmacro) #@97 Access slot "aka" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-aka #[257 "\211\300H\207" [3] 3 (#$ . 3332)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-aka side-effect-free t] 4) #@82 compiler-macro for inlining `ebdb-vrecord-organization'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-organization--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-organization (aref cl-x 4)) nil] 9 (#$ . 3597)]) (put 'ebdb-vrecord-organization 'compiler-macro 'ebdb-vrecord-organization--cmacro) #@106 Access slot "organization" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-organization #[257 "\211\300H\207" [4] 3 (#$ . 3955)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-organization side-effect-free t] 4) #@75 compiler-macro for inlining `ebdb-vrecord-phone'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-phone--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-phone (aref cl-x 5)) nil] 9 (#$ . 4247)]) (put 'ebdb-vrecord-phone 'compiler-macro 'ebdb-vrecord-phone--cmacro) #@99 Access slot "phone" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-phone #[257 "\211\300H\207" [5] 3 (#$ . 4569)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-phone side-effect-free t] 4) #@77 compiler-macro for inlining `ebdb-vrecord-address'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-address--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-address (aref cl-x 6)) nil] 9 (#$ . 4840)]) (put 'ebdb-vrecord-address 'compiler-macro 'ebdb-vrecord-address--cmacro) #@101 Access slot "address" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-address #[257 "\211\300H\207" [6] 3 (#$ . 5173)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-address side-effect-free t] 4) #@74 compiler-macro for inlining `ebdb-vrecord-mail'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-mail--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-mail (aref cl-x 7)) nil] 9 (#$ . 5450)]) (put 'ebdb-vrecord-mail 'compiler-macro 'ebdb-vrecord-mail--cmacro) #@98 Access slot "mail" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-mail #[257 "\211\300H\207" [7] 3 (#$ . 5767)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-mail side-effect-free t] 4) #@77 compiler-macro for inlining `ebdb-vrecord-xfields'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-xfields--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-xfields (aref cl-x 8)) nil] 9 (#$ . 6035)]) (put 'ebdb-vrecord-xfields 'compiler-macro 'ebdb-vrecord-xfields--cmacro) #@101 Access slot "xfields" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-xfields #[257 "\211\300H\207" [8] 3 (#$ . 6368)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-xfields side-effect-free t] 4) #@74 compiler-macro for inlining `ebdb-vrecord-uuid'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-uuid--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-uuid (aref cl-x 9)) nil] 9 (#$ . 6645)]) (put 'ebdb-vrecord-uuid 'compiler-macro 'ebdb-vrecord-uuid--cmacro) #@98 Access slot "uuid" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-uuid #[257 "\211\300H\207" [9] 3 (#$ . 6962)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-uuid side-effect-free t] 4) #@83 compiler-macro for inlining `ebdb-vrecord-creation-date'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-creation-date--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-creation-date (aref cl-x 10)) nil] 9 (#$ . 7230)]) (put 'ebdb-vrecord-creation-date 'compiler-macro 'ebdb-vrecord-creation-date--cmacro) #@107 Access slot "creation-date" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-creation-date #[257 "\211\300H\207" [10] 3 (#$ . 7594)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-creation-date side-effect-free t] 4) #@79 compiler-macro for inlining `ebdb-vrecord-timestamp'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-timestamp--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-timestamp (aref cl-x 11)) nil] 9 (#$ . 7890)]) (put 'ebdb-vrecord-timestamp 'compiler-macro 'ebdb-vrecord-timestamp--cmacro) #@103 Access slot "timestamp" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-timestamp #[257 "\211\300H\207" [11] 3 (#$ . 8234)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vrecord-timestamp side-effect-free t] 4) #@75 compiler-macro for inlining `ebdb-vrecord-cache'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vrecord-cache--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vrecord-cache (aref cl-x 12)) nil] 9 (#$ . 8518)]) (put 'ebdb-vrecord-cache 'compiler-macro 'ebdb-vrecord-cache--cmacro) #@99 Access slot "cache" of `(ebdb-vrecord (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vrecord-cache #[257 "\211\300H\207" [12] 3 (#$ . 8841)]) (byte-code "\300\301\302\303#\304\305\306\"\210\307\310\311\211\312\311\313\314\310\311& \207" [function-put ebdb-vrecord-cache side-effect-free t defalias copy-ebdb-vrecord copy-sequence cl-struct-define ebdb-vrecord nil vector ((firstname) (lastname) (affix) (aka) (organization) (phone) (address) (mail) (xfields) (uuid) (creation-date) (timestamp) (cache)) cl-struct-ebdb-vrecord-tags] 11) #@74 compiler-macro for inlining `ebdb-vphone-label'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vphone-label--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vphone-label (aref cl-x 0)) nil] 9 (#$ . 9412)]) (put 'ebdb-vphone-label 'compiler-macro 'ebdb-vphone-label--cmacro) #@98 Access slot "label" of `(ebdb-vphone (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vphone-label #[257 "\211\300H\207" [0] 3 (#$ . 9729)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vphone-label side-effect-free t] 4) #@73 compiler-macro for inlining `ebdb-vphone-area'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vphone-area--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vphone-area (aref cl-x 1)) nil] 9 (#$ . 9997)]) (put 'ebdb-vphone-area 'compiler-macro 'ebdb-vphone-area--cmacro) #@97 Access slot "area" of `(ebdb-vphone (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vphone-area #[257 "\211\300H\207" [1] 3 (#$ . 10309)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vphone-area side-effect-free t] 4) #@77 compiler-macro for inlining `ebdb-vphone-exchange'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vphone-exchange--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vphone-exchange (aref cl-x 2)) nil] 9 (#$ . 10575)]) (put 'ebdb-vphone-exchange 'compiler-macro 'ebdb-vphone-exchange--cmacro) #@101 Access slot "exchange" of `(ebdb-vphone (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vphone-exchange #[257 "\211\300H\207" [2] 3 (#$ . 10909)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vphone-exchange side-effect-free t] 4) #@75 compiler-macro for inlining `ebdb-vphone-suffix'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vphone-suffix--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vphone-suffix (aref cl-x 3)) nil] 9 (#$ . 11187)]) (put 'ebdb-vphone-suffix 'compiler-macro 'ebdb-vphone-suffix--cmacro) #@99 Access slot "suffix" of `(ebdb-vphone (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vphone-suffix #[257 "\211\300H\207" [3] 3 (#$ . 11510)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vphone-suffix side-effect-free t] 4) #@78 compiler-macro for inlining `ebdb-vphone-extension'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vphone-extension--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vphone-extension (aref cl-x 4)) nil] 9 (#$ . 11782)]) (put 'ebdb-vphone-extension 'compiler-macro 'ebdb-vphone-extension--cmacro) #@102 Access slot "extension" of `(ebdb-vphone (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vphone-extension #[257 "\211\300H\207" [4] 3 (#$ . 12121)]) (byte-code "\300\301\302\303#\304\305\306\"\210\307\310\311\211\312\311\313\314\310\311& \207" [function-put ebdb-vphone-extension side-effect-free t defalias copy-ebdb-vphone copy-sequence cl-struct-define ebdb-vphone nil vector ((label) (area) (exchange) (suffix) (extension)) cl-struct-ebdb-vphone-tags] 11) #@76 compiler-macro for inlining `ebdb-vaddress-label'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-label--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-label (aref cl-x 0)) nil] 9 (#$ . 12615)]) (put 'ebdb-vaddress-label 'compiler-macro 'ebdb-vaddress-label--cmacro) #@100 Access slot "label" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-label #[257 "\211\300H\207" [0] 3 (#$ . 12944)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vaddress-label side-effect-free t] 4) #@78 compiler-macro for inlining `ebdb-vaddress-streets'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-streets--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-streets (aref cl-x 1)) nil] 9 (#$ . 13219)]) (put 'ebdb-vaddress-streets 'compiler-macro 'ebdb-vaddress-streets--cmacro) #@102 Access slot "streets" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-streets #[257 "\211\300H\207" [1] 3 (#$ . 13558)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vaddress-streets side-effect-free t] 4) #@75 compiler-macro for inlining `ebdb-vaddress-city'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-city--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-city (aref cl-x 2)) nil] 9 (#$ . 13839)]) (put 'ebdb-vaddress-city 'compiler-macro 'ebdb-vaddress-city--cmacro) #@99 Access slot "city" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-city #[257 "\211\300H\207" [2] 3 (#$ . 14162)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vaddress-city side-effect-free t] 4) #@76 compiler-macro for inlining `ebdb-vaddress-state'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-state--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-state (aref cl-x 3)) nil] 9 (#$ . 14434)]) (put 'ebdb-vaddress-state 'compiler-macro 'ebdb-vaddress-state--cmacro) #@100 Access slot "state" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-state #[257 "\211\300H\207" [3] 3 (#$ . 14763)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vaddress-state side-effect-free t] 4) #@79 compiler-macro for inlining `ebdb-vaddress-postcode'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-postcode--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-postcode (aref cl-x 4)) nil] 9 (#$ . 15038)]) (put 'ebdb-vaddress-postcode 'compiler-macro 'ebdb-vaddress-postcode--cmacro) #@103 Access slot "postcode" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-postcode #[257 "\211\300H\207" [4] 3 (#$ . 15382)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-vaddress-postcode side-effect-free t] 4) #@78 compiler-macro for inlining `ebdb-vaddress-country'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-vaddress-country--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-vaddress-country (aref cl-x 5)) nil] 9 (#$ . 15666)]) (put 'ebdb-vaddress-country 'compiler-macro 'ebdb-vaddress-country--cmacro) #@102 Access slot "country" of `(ebdb-vaddress (:type vector) (:constructor nil))' struct CL-X. (fn CL-X) (defalias 'ebdb-vaddress-country #[257 "\211\300H\207" [5] 3 (#$ . 16005)]) (byte-code "\300\301\302\303#\304\305\306\"\210\307\310\311\211\312\311\313\314\310\311& \207" [function-put ebdb-vaddress-country side-effect-free t defalias copy-ebdb-vaddress copy-sequence cl-struct-define ebdb-vaddress nil vector ((label) (streets) (city) (state) (postcode) (country)) cl-struct-ebdb-vaddress-tags] 11) #@242 Remove outer layers of parens around singleton lists. This is done until we get a list which is either not a singleton list or does not contain a list. This is a utility function used in recovering slightly munged old EBDB files. (fn LIS) (defalias 'ebdb-peel-the-onion #[257 "\211:\203\211A\204\211@<\203\211@\262\202\207" [] 2 (#$ . 16513)]) #@44 Obsolete variable, only used in migration. (defconst ebdb-file-format 9 (#$ . 16874)) #@116 Migrate the EBDB from the version on disk to the current version (in `ebdb-file-format'). (fn RECORDS OLD-FORMAT) (defalias 'ebdb-migrate #[514 "\301!\262\211\302W\203F\303@\211\262\203D\304\305\234\306\234\303\307\234\310\234\311\234\312\234 \313\234\n\302\234 \314\234&\n\240\210A\262\202 \266\211\315W\203\326\303\211\203\320\211@\316\314\234\236A\206_\317 \320\314\234\236A\206m\321\303\322#\323\314\234\236A\206{\321\303\322#\304\305\234\306\234\307\234\310\234\311\234 \312\234\n\313\234 \302\234\f\314\234\324\211\203\262\211@\325\"\262A\266\202\202\237\210\211\262\f\f\f\315\234& B\262\266A\266\202\202N\210\211\237\262\210\326\327!\"\210\207" [bbdb-time-stamp-format ebdb-peel-the-onion 7 nil vector 0 1 2 3 4 5 6 8 9 uuid ebdb-make-uuid creation-date format-time-string t timestamp (uuid creation-date timestamp) assq-delete-all mapc ebdb-migrate-versions-lambda] 23 (#$ . 16967)]) #@93 The alist of (version . migration-spec-list). See `ebdb-migrate-record-lambda' for details. (defconst ebdb-migration-spec '((2 (ebdb-vrecord-xfields ebdb-migrate-change-dates)) (3 (ebdb-vrecord-address ebdb-migrate-add-country-field)) (4 (ebdb-vrecord-address ebdb-migrate-streets-to-list)) (5 (ebdb-vrecord-address ebdb-migrate-postcodes-to-strings)) (6 (ebdb-vrecord-xfields ebdb-migrate-xfields-to-list) (ebdb-vrecord-organization ebdb-migrate-organization-to-list)) (7 (bbdb-record-xfields bbdb-migrate-xfields-to-list) (bbdb-record-organization bbdb-migrate-organization-to-list))) (#$ . 17935)) #@395 Return a function which will migrate a single record. CHANGES is a `migration-spec-list' containing entries of the form (GET SET FUNCTION) where GET is the function to be used to retrieve the field to be modified, and SET is the function to be used to set the field to be modified. FUNCTION will be applied to the result of GET, and its results will be saved with SET. (fn CHANGES) (defalias 'ebdb-migrate-record-lambda #[257 "\300\301\302\303\304\305\"\306\"BB!\207" [byte-compile lambda (record) append mapcar #[257 "\300A@@\301BE\207" [cl-callf (record)] 5 "\n\n(fn CH)"] (record)] 8 (#$ . 18543)]) #@72 Return the function to migrate from V0 to `ebdb-file-format'. (fn V0) (defalias 'ebdb-migrate-versions-lambda #[257 "\302W\203\303\304 \"A\"\262T\262\202\305!\207" [ebdb-file-format ebdb-migration-spec nil append assoc ebdb-migrate-record-lambda] 7 (#$ . 19167)]) #@114 Make all postcodes plain strings. This uses the code that used to be in `ebdb-address-postcode'. (fn ADDRESSES) (defalias 'ebdb-migrate-postcodes-to-strings #[257 "\300\301\"\207" [mapcar #[257 "\211\300H;\203 \211\300H\202\320\211\300H:\203\270\211\300H@;\203L\211\300HA@;\203L\301\302\300HA@\"\203>\211\300H@\303\300HA@Q\202\320\211\300H@\304\300HA@Q\202\320\211\300H@;\203\211\211\300HA@:\203\211\211\300HA@@\250\203\211\211\300HA@A@\250\203\211\305\306\300H@\300HA@@\300HA@A@$\202\320\211\300H@\250\203\251\211\300HA@\250\203\251\305\307\300H@\300HA@#\202\320\305\310\300H@\300HA@#\202\320\211\300H\311U\204\306\211\300H\204\312\312\202\320\305\313\300H\"\211\300I\266\207" [4 string-match "^[0-9][0-9][0-9][0-9]" "-" " " format "%s-%d %d" "%05d-%04d" "%s-%d" 0 "" "%d"] 7 "\n\n(fn ADDRESS)"]] 4 (#$ . 19451)]) #@127 Change date formats. Formats are changed in timestamp and creation-date fields from "dd mmm yy" to "yyyy-mm-dd". (fn RECORD) (defalias 'ebdb-migrate-change-dates #[257 "\211;?\205\f\300\301\"\210\211\207" [mapc #[257 "\211@\300>\205\n\301!\207" [(creation-date timestamp) ebdb-migrate-change-dates-change-field] 3 "\n\n(fn RR)"]] 4 (#$ . 20309)]) #@89 Migrate the date field (the cdr of FIELD) from "dd mmm yy" to "yyyy-mm-dd". (fn FIELD) (defalias 'ebdb-migrate-change-dates-change-field #[257 "\211A\301\302\303P!\211\262\304\232\203\222\302!\211\262\305\232\203\222\306\307\"\203X\310\311\312\313\"!\311\312\314\"!\311\312\315\"!#\262\316\317@A\320\321\313H\"@\227!\314H\322H&\210\202\222\306\323\"\203\222\310\311\312\315\"!\311\312\313\"!\311\312\314\"!#\262\316\317@A\320\321\313H\"@\227!\314H\322H&\210\211\322H;\203\242\211\322\311\322H!I\210\211\313H;\203\262\211\313\311\313H!I\210\211\314H;\203\302\211\314\311\314H!I\210\322\322HW\203\322\313HW\203\324\313HY\203\322\314HW\203\325\313H\322H\"\314HY\203\326\327\322H\313H\314H$\241\210\202 \330\331#\207" [timezone-months-assoc nil timezone-parse-date " 00:00:00" ["0" "0" "0" "0" nil] ["0" "0" "0" "0" nil] string-match "^\\([0-9]\\{4\\}\\)[-/]\\([ 0-9]?[0-9]\\)[-/]\\([ 0-9]?[0-9]\\)" vector string-to-number match-string 1 2 3 message "EBDB is treating %s field value %s as %s %d %d" upcase-initials rassoc 0 "^\\([ 0-9]?[0-9]\\)[-/]\\([ 0-9]?[0-9]\\)[-/]\\([0-9]\\{4\\}\\)" 12 timezone-last-day-of-month format "%04d-%02d-%02d" error "EBDB cannot parse %s header value %S for upgrade"] 11 (#$ . 20667)]) #@70 Add a country field to each address in the address list. (fn ADDRL) (defalias 'ebdb-migrate-add-country-field #[257 "\300\301\"\207" [mapcar #[257 "\300\301\"\207" [vconcat [""]] 4 "\n\n(fn ADDRESS)"]] 4 (#$ . 21963)]) #@44 Convert the streets to a list. (fn ADDRL) (defalias 'ebdb-migrate-streets-to-list #[257 "\300\301\"\207" [mapcar #[257 "\300\301H\302\303\304\305\306H\307H\310HE\"\"\311H\312H\313H\314H&\207" [vector 0 delq nil delete "" 1 2 3 4 5 6 7] 11 "\n\n(fn ADDRESS)"]] 4 (#$ . 22191)]) #@40 Migrate XFIELDS to list. (fn XFIELDS) (defalias 'ebdb-migrate-xfields-to-list #[257 "\211;\203\n\300BC\207\207" [notes] 3 (#$ . 22489)]) #@50 Migrate ORGANIZATION to list. (fn ORGANIZATION) (defalias 'ebdb-migrate-organization-to-list #[257 "\211;\203\n\300\301\"\207\207" [ebdb-split organization] 4 (#$ . 22635)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\210\300\315\302\303\316DD\317\306\320\310\311&\210\300\321\302\303\322DD\323\306\324\310\311&\210\300\325\302\303\326DD\327\306\330\310\311&\207" [custom-declare-variable bbdb/gnus-split-private-field funcall function #[0 "\300\207" [gnus-private] 1] "This variable is used to determine the xfield to reference to find the\nassociated group when saving private mail for a mail address known to\nthe EBDB. The value of the xfield should be the name of a mail group." :group ebdb-mua-gnus-splitting :type symbol bbdb/gnus-split-public-field #[0 "\300\207" [gnus-public] 1] "This variable is used to determine the xfield to reference to find the\nassociated group when saving non-private mail (received from a mailing\nlist) for a mail address known to the EBDB. The value of the xfield\nshould be the name of a mail group, followed by a space, and a regular\nexpression to match on the envelope sender to verify that this mail came\nfrom the list in question." bbdb/vm-auto-folder-field #[0 "\300\207" [vm-folder] 1] "The name of the VM-specific xfield for mail splitting." ebdb-mua-vm bbdb/gnus-score-field #[0 "\300\207" [gnus-score] 1] "This variable contains the name of the EBDB field which should be\nchecked for a score to add to the mail addresses in the same record." ebdb-mua-gnus-scoring gnorb-ebdb-org-tag-field #[0 "\300\207" [org-tags] 1] "The name (as a symbol) of the field to use for org tags." gnorb-ebdb] 8) #@516 Migrate from BBDB to EBDB. This upgrade is extreme enough that we can't really use the existing migration mechanisms. They are still there, though, in case someone's going from, say, version 2 to 4 in one jump. Migrate from FILE, if non-nil. Otherwise, assume that the variable `bbdb-file' points to an existing file holding valid contacts in a previous BBDB format. If that variable isn't set use (locate-user-emacs-file "bbdb" ".bbdb"), which is how BBDB sets the default of that option. (fn &optional FILE) (defalias 'ebdb-migrate-from-bbdb #[256 "\302\303!\210\302\304!\210\302\305!\210r\306\206$\307\300!\203 \203 \206$\310\311\312\"!q\210edU?\205+\313\314!\205+\315 \316\317\320\"\321\317\211\322\323!\210\211\203\355\211@\3241\333\211\325H\326!\317\327 \"\210\203\306\211\203\305\211@\211\330\317\320\331#)\266\204\204\276\332\333\334\335\336\337!\340\"\341\342%\n\"\206\252\343 \327\f\344\345\346\344\347\346 #\350\344\351\350\n#\352\344\353\350\f#&\"\262\262\354\"\210 \235\204\276 B\262 A\266\202\202^\210B\262\322\355 T\211\262 \"\266\2030\202\345DB\211\262\262\210A\266\202\202B\210\211\203 \356\357\360!\361\"\210\362c\210\363\364\365#c\210\366 \210eb\210\211\203\211@\367!\210A\266\202\202\n\210\370\371\320#\266\322\372G\"\266\205)\207" [bbdb-file inhibit-changing-match-data require url-handlers ebdb-org ebdb-gnus find-file-noselect boundp locate-user-emacs-file "bbdb" ".bbdb" yes-or-no-p "Migrate records from BBDB? " ebdb-migrate-parse-records ebdb-prompt-for-db nil t 0 message "Migrating records from BBDB..." (debug error) 4 ebdb-migrate-vector-to-class ebdb-db-add-record "\\`[ \n ]*\\'" string-match seq-find make-byte-code 257 "\302!\205 \300\303\304\"\305! >\204\306\307\310D\"\210\211\311H\262\230\207" vconcat vector [cl-struct-ebdb-record-cache-tags ebdb-record-organization-p slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1] 7 "\n\n(fn R)" current-time make-instance ebdb-record-organization :name ebdb-field-name-simple :timestamp ebdb-field-timestamp :creation-date ebdb-field-creation-date ebdb-record-add-org-role "Migrating records from BBDB... %d" pop-to-buffer get-buffer-create "*EBDB Migration Errors*" (nil (window-height . 10)) "The records below could not be migrated:\n\n" mapconcat #[257 "\300\301@A@#\207" [format "%S, error: %S"] 5 "\n\n(fn R)"] "\n\n" fit-window-to-buffer ebdb-init-record eieio-oset dirty "Migrating records from BBDB... %d records migrated"] 27 (#$ . 24354) nil]) #@81 Migrate a single vector-style BBDB record V to EBDB style EIEIO object. (fn V) (defalias 'ebdb-migrate-vector-to-class #[257 "\211\306H\307H\310H\311H\312H\313H\314H\315H\316H \317H\n\320H\321\211\211\211\211\211\211\211\211\211\322\323\"\203P\324 \325\326\205H\327\330\321#\331&\202d\324\332\333\203a\330Q\202c#\262\n\203\221\211\203\220\211@\324 \325\334\327!!@\326\335\327!!% B\262 A\266\202\202m\210\f\203\236\324\336\337#\262 \203\372\211\203\371\211@\211\306H\321\211\211G\310U\203\300\307H\262\202\327\307H\262\340\341\310H\311H#\262\342H\262\324\n\343\344\345\346\347\350\n#\351\n& B\262\266A\266\202\202\245\210\203A\211\203@\211@\211\306H\307H\310H\311H\342H\312H\352\324\f\343\353 \354\n\355 \356\f\357 & B\262)\266A\266\202\202\210\203\200\211\203n\211@\360!\211A@\203f\324 \361@\362A@%\nB\262\n\210A\266\202\202H\210\203\200\334!@\363\364\365#\266\n\203\225\324\366\367\370\371\372\373\374!\"\"#\262  \203\252\324\375\367\370\371\372\376\374!\"\"#\262\f \203 \211\203\211@\211@\262\211A\262\377=\203\342\203 \324\201F\201G\201H \242%B\262\202 ;\203 @\321\352A\201I#)\266\203\203 \324\201J\201K#B\262\202 \201L=\203N\327\330\"\327@\201M\"\324\201N\201O\201PA@!\201P\3108!\201P@!E\343A@% B\262 \266\202 \201Q=\203e\324\201R\201S#\262\202 \201T=\203\224;\204 \201U\201V!\210\372\201W\"\262\324\201X\201Y#B\262\202 B=\203\277\324\201Z\201[<\203\255\202\266\327\201\\\352\330$#B\262\202 C=\203\330\324\201]\201^#B\262\202 \201_DEE>\203\367\324\201`\201a#B\262\202 \324\201b\343\201c@!\201d%B\262A\266\202\202\261\210\324\333\f\337\201e\201H\362\367\201f\201S\201g\352\201h&\262\203c\201i1^\211\363\201j\f#\2620\202b\210\202c\210\207" [ebdb-default-record-class ebdb-default-name-class ebdb-default-phone-class case-fold-search ebdb-default-address-class ebdb-default-mail-class 0 1 2 3 5 6 7 8 9 10 11 nil child-of-class-p ebdb-record-person make-instance :surname :given-names split-string " " :affix ebdb-field-name-simple :name last butlast ebdb-field-uuid :uuid format "%d%d" 4 :label :area-code :number replace-regexp-in-string "[- ]+" "" :extension t :streets :locality :region :postcode :country ebdb-decompose-ebdb-address :aka :mail eieio-oset priority primary ebdb-field-timestamp :timestamp apply encode-time mapcar #[257 "\211\204\300\207\207" [0] 2 "\n\n(fn EL)"] parse-time-string ebdb-field-creation-date #[257 "\211\204\300\207\207" [0] 2 "\n\n(fn EL)"] mail-alias url-handler-regexp inhibit-changing-match-data gnorb-ebdb-org-tag-field bbdb/gnus-score-field bbdb/gnus-split-private-field bbdb/vm-auto-folder-field ebdb-field-mail-alias :alias :address string-match ebdb-field-url :url anniversary "-" ebdb-field-anniversary :date string-to-number notes ebdb-field-notes :notes messages require ebdb-gnorb #[257 "\300\301\302H\303H\304H\305H%\207" [record gnorb-ebdb-link 1 2 3 4] 8 "\n\n(fn S)"] gnorb-ebdb-field-messages :messages ebdb-org-field-tags :tags ";" ebdb-gnus-score-field :score imap ebdb-field-mail-folder :folder ebdb-field-user-simple symbol-name :value :phone :creation-date :dirty :fields (invalid-slot-type) aka] 44 (#$ . 26901)]) #@63 Parse an earlier (non-EIEIO) version of a BBDB database file. (defalias 'ebdb-migrate-parse-records #[0 "\212\214~\210eb\210\304\305\306\307#\205\310\311\312!!\306\211\204\313\314!\210V\203-\313\315#\210\2022W\262\304\316\306\307#\204>\313\317!\210\320 b\210`d}\210\321 \307\211\306eb\210\322c\210db\210\323c\210eb\210\324\325\326\327\330!\331\"\312$\216\332p!\262,\210~\210\203|\333\"\262\266\202*\207" [ebdb-file-format buffer-read-only buffer-undo-list inhibit-quit re-search-forward "^;+[ ]*file-\\(format\\|version\\):[ ]*\\([0-9]+\\)[ ]*$" nil t string-to-number match-string 2 error "BBDB corrupted: no file-format line" "EBDB understands file format %s but not %s." "^\\[" "Unreadabe BBDB file: no contacts found" point-at-bol buffer-modified-p "(\n" "\n)" make-byte-code 0 "eb\210\301\302!\210db\210\301\303!\210\304\300!\207" vconcat vector [delete-char 2 -2 set-buffer-modified-p] read ebdb-migrate] 10 (#$ . 30307)]) #@178 The simplest property-to-field correspondences. This variable only holds correspondences for fields that require no processing beyond calling `ebdb-parse' on the string values. (defvar ebdb-migrate-org-simple-correspondences '((org-contacts-email-property . ebdb-default-mail-class) (org-contacts-tel-property . ebdb-default-phone-class) (org-contacts-note-property . ebdb-default-notes-class) (org-contacts-alias-property . ebdb-default-name-class)) (#$ . 31271)) #@48 Migrate contacts from the org-contacts format. (defalias 'ebdb-migrate-from-org-contacts #[0 "\305\306!\210\204\f\307\310!\210\311\312\313\"\314\315 \"\316\312\211\211\317\320\"\210\321 \211\203\343\211@\211@A\211A\211@A\322\n!\262 \323 \"\210\211\203\311\211@\211@A\211\3241\224\325\"\203a\326\325\"A\"\202\205 \232\203o\327\330C\"\202\205\f\232\203\204\322\331\332\333\334!!\335\336%\202\205\312\211\205\216\337\"\2620\202\300\210\211B\340\341#\205\246AB\203\261\241\202\276 B\211\262B\211\262\266\203\266A\266\202\202=\210\n\nB\262\n\317\320T\211\262\"\266A\266\202\202\210\211\211\203\370\211@\342\"\210A\266\202\202\345\210\317\320G\"\210\343!\210\205]\344\345\346!\347\"\210eb\210\211\203S\211@\211@A\211\350\351\352\353\354\"@!#c\210\211\203G\211@\211@A\211\350\355#c\266A\266\202\202,\210\356c\266A\266\202\202\210eb\210\357 \210\317\360!\207" [ebdb-sources ebdb-migrate-org-simple-correspondences ebdb-default-record-class org-contacts-address-property org-contacts-birthday-property require org-contacts error "First set `ebdb-sources' to the location of your EBDB database." ebdb-prompt-for-db nil t mapcar #[257 "\211@A\211\211J\300!\203\202JB\266\202\207" [class-p] 8 "\n\n(fn ARG0)"] 0 message "Migrating records from org-contacts... %d records" org-contacts-db make-instance ebdb-record-change-name (ebdb-unparseable) assoc-string ebdb-parse signal ebdb-unparseable ebdb-field-anniversary :date calendar-gregorian-from-absolute org-time-string-to-absolute :label "birthday" ebdb-record-insert-field assoc equal ebdb-db-add-record ebdb-display-records pop-to-buffer get-buffer-create "*EBDB Migration Errors*" (display-buffer-pop-up-window (width . 50)) format "* [[ebdb:uuid/%s][%s]]\n" ebdb-record-uuid ebdb-gethash (fl-name) "%s: %s\n" "\n" org-mode "Some field values could not be parsed"] 27 (#$ . 31742) nil]) (provide 'ebdb-migrate)