;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; 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\302\303\304\305#\210\302\306\307\305#\210\302\310\311\305#\210\302\312\313\305#\207" [require eudc eudc-protocol-set eudc-bbdb-conversion-alist eudc-ph-bbdb-conversion-alist ph eudc-query-function eudc-ph-query-internal eudc-list-attributes-function eudc-ph-get-field-list eudc-protocol-has-default-query-attributes t] 4) (defvar eudc-ph-process-buffer nil) #@53 Default TCP port for CCSO PH/QI directory services. (defconst eudc-ph-default-server-port 105 (#$ . 792)) #@366 Query the PH/QI server with QUERY. QUERY can be a string NAME or a list made of strings NAME and/or cons cells (KEY . VALUE) where KEYs should be valid CCSO database keys. NAME is equivalent to (DEFAULT . NAME), where DEFAULT is the default key of the database. RETURN-FIELDS is a list of database fields to return, defaulting to `eudc-default-return-attributes'. (defalias 'eudc-ph-query-internal #[(query &optional return-fields) "\304 \204\n \305=\203\306\307 ;\203 \202\310\311 \312# \205*\313\310\314 \312#PQ\211G\315V\205<\316!\205<\317 !)\207" [request return-fields eudc-default-return-attributes query nil all (all) "query " mapconcat #[(elt) ";\203\210\301\302@A#\207" [elt format "%s=%s"] 4] " " " return " symbol-name 6 eudc-ph-do-request eudc-ph-parse-query-result] 8 (#$ . 905)]) #@142 Return a list of valid field names for the current server. If FULL-RECORDS is non-nil, full records including field description are returned (defalias 'eudc-ph-get-field-list #[(full-records) "\301\302!\210\203 \303 \207\304\305\303 \"\207" [full-records eudc-ph-do-request "fields" eudc-ph-parse-query-result mapcar caar] 3 (#$ . 1729) nil]) #@109 Return a list of alists of key/values from in `eudc-ph-process-buffer'. Fields not in FIELDS are discarded. (defalias 'eudc-ph-parse-query-result #[(&optional fields) "\306\211\211\211\211\211\211\212\307\310!\210q\210eb\210\311\312\306\313#\203\f\3002\322\314\315\316!\317Q\320 \210\306\211\306\311\f\306\313#\205\321\3212\315\315\322!\323\230\203h\204Y\324\321\313\"\210\202h\311\f\306\313#\204Y\313\324\300\313\"\210\315\316!\325\230?\205v\326\315\316!!\315\327! \203\212\n =\203\212\306\202\214\n \203\237 \330=\204\237  >\205\314\n\203\257\n BB\211\202\314@@A<\203\305\331@A C\"\202\313@A D\2410\210\20280\210\204 \203\354 \330=\204\354\237\211\203!\332=\204\372\333!\202\375C\211\203\331 \"\202)\307\334!\210 .\207" [ignore value key current-key line-regexp records nil message "Parsing results..." re-search-forward "^\\(-[0-9]+\\):\\([0-9]+\\):" t "^\\(-[0-9]+\\):" match-string 2 ":[ ]*\\([-a-zA-Z_]*\\)?:[ ]*\\(.*\\)$" beginning-of-line skip-line 1 "-508" throw "" intern 3 all append list eudc-filter-duplicate-attributes "Done" record eudc-ph-process-buffer eudc-strict-return-matches fields eudc-duplicate-attribute-handling-method] 8 (#$ . 2081)]) #@84 Send REQUEST to the server. Wait for response and return the buffer containing it. (defalias 'eudc-ph-do-request #[(request) "\303\211\304\216\305\306!\210\307 \211\203'r\310 !\211q\210\311 \n\"\210\305\312!\210\313 !\210))*\207" [buffer process request nil #[nil "\205\301!\207" [process eudc-ph-close-session] 2] message "Contacting server..." eudc-ph-open-session process-buffer eudc-ph-send-command "Request sent, waiting for reply..." eudc-ph-read-response] 4 (#$ . 3338)]) #@115 Open a connection to the given CCSO/QI SERVER. SERVER is either a string naming the server or a list (NAME PORT). (defalias 'eudc-ph-open-session #[(&optional server) "\306\211\211\3072U \204\f\206\310\311!\312\313 \"\210\314\315 \"\314\316 \"\206( \317\320\321 \"!rq\210\322 \210`)\323\324 $\211\204N\325\307\306\"\210\326\n\327\"\210\n0+\207" [port host process server eudc-server eudc-ph-default-server-port nil done call-interactively eudc-ph-set-server string-match "\\(.*\\)\\(:\\(.*\\)\\)?" match-string 1 3 get-buffer-create format " *PH-%s*" erase-buffer open-network-stream "ph" throw set-process-query-on-exit-flag t eudc-ph-process-buffer eudc-ph-read-point] 6 (#$ . 3834)]) (defalias 'eudc-ph-close-session #[(process) "r\301!q\210\302\303\"\210\304!\210\305\306\307\310$)\207" [process process-buffer eudc-ph-send-command "quit" eudc-ph-read-response run-at-time 2 nil delete-process] 5]) (defalias 'eudc-ph-send-command #[(process command) "db\210\302 \"\210\302\303\"\207" [process command process-send-string " \n"] 3]) #@218 Read a response from the PH/QI query process PROCESS. Returns nil if response starts with an error code. If the response is successful the return code or the response itself is returned depending on RETURN-RESPONSE. (defalias 'eudc-ph-read-response #[(process &optional return-response) "\306\211\211 b\210\307\310\306\311#\204\312\f!\210 b\210\202 ` b\210\313\314!\211\203>\315 !\211\203>\316 !\317Y\203>\306\202K \203J`{\202K +\207" [match-end return-code case-fold-search eudc-ph-read-point process return-response nil re-search-forward "^\\(^[2-5].*\\):.*\n" t accept-process-output match-string 1 string-to-number abs 300] 4 (#$ . 4907)]) #@32 Customize the EUDC PH support. (defalias 'eudc-ph-customize #[nil "\300\301!\207" [customize-group eudc-ph] 2 (#$ . 5578) nil]) #@30 Set the PH server to SERVER. (defalias 'eudc-ph-set-server #[(server) "\301\302\"\210\303\304\"\207" [server message "Selected PH/QI server is now %s" eudc-set-server ph] 3 (#$ . 5712) "sNew PH/QI Server: "]) (byte-code "\300\301!\210\302\303!\207" [eudc-register-protocol ph provide eudcb-ph] 2)