%PDF- %PDF-
Direktori : /usr/local/share/emacs/27.2/lisp/gnus/ |
Current File : //usr/local/share/emacs/27.2/lisp/gnus/gnus-cloud.elc |
;ELC ;;; Compiled ;;; in Emacs version 27.2 ;;; 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\303\304\305\"\210\303\306\305\"\210\303\307\305\"\210\303\310\305\"\210\311\312\313\314\315\316\317\320&\210\321\322\323\324\317\312\325\326&\210\321\327\330\331\315\332\317\312\325\333& \210\321\334\335\336\315\332\317\312\325\337& \207" [require parse-time nnimap autoload epg-make-context "epg" epg-context-set-passphrase-callback epg-decrypt-string epg-encrypt-string custom-declare-group gnus-cloud nil "Syncing Gnus data via IMAP." :version "25.1" :group gnus custom-declare-variable gnus-cloud-synced-files '("~/.authinfo.gpg" "~/.gnus.el" (:directory "~/News" :match ".*.SCORE\\'")) "List of files that should be kept up-to-date via the cloud.\nEach element may be either a string or a property list.\nThe latter should have a :directory element whose value is a string,\nand a :match element whose value is a regular expression to match\nagainst the basename of files in said directory." :type (repeat (choice (string :tag "File") (plist :tag "Property list"))) gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip) "Storage method for cloud data, defaults to EPG if that's available." "26.1" (radio (const :tag "No encoding" nil) (const :tag "Base64" base64) (const :tag "Base64+gzip" base64-gzip) (const :tag "EPG" epg)) gnus-cloud-interactive t "Whether Gnus Cloud changes should be confirmed." boolean] 10) (defvar gnus-cloud-group-name "Emacs-Cloud") (defvar gnus-cloud-covered-servers nil) (defvar gnus-cloud-version 1) (defvar gnus-cloud-sequence 1) #@165 The IMAP select method used to store the cloud data. See also `gnus-server-set-cloud-method-server' for an easy interactive way to set this from the Server buffer. (custom-declare-variable 'gnus-cloud-method nil '(#$ . 1927) :group 'gnus-cloud :type '(radio (const :tag "Not set" nil) (string :tag "A Gnus server name as a string"))) (defalias 'gnus-cloud-make-chunk #[(elems) "\303\304!rq\210\305\216\306\307 \"c\210\310\n!c\210\311 +\207" [#1=#:temp-buffer gnus-cloud-version elems generate-new-buffer " *temp*" #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] format "Gnus-Cloud-Version %s\n" gnus-cloud-insert-data buffer-string] 3]) (defalias 'gnus-cloud-insert-data #[(elems) "\306\307!rq\210\310\216\311 \210 \312\211\203\216 @\313\n\314\"\315=\203Z \312\211\306\307!rq\210\316\216\311 \210\317\313\n\320\"!\210\321 \322 +\323\324\313\n\320\"\313\n\325\" $c\210\fc\210\326c\210*\202\207 \313\n\314\"\327=\203u \312\211\330\np\"\210*\326c\210\202\207 \313\n\314\"\331=\203\207 \323\332\313\n\320\"\"c\210A\211\204 *\333 \210\322 +\207" [#1=#:temp-buffer elems elem --dolist-tail-- data length generate-new-buffer " *temp*" #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] mm-disable-multibyte nil plist-get :type :file #[nil "\301!\205 \302!\207" [#2=#:temp-buffer buffer-name kill-buffer] 2] insert-file-contents-literally :file-name buffer-size buffer-string format "(:type :file :file-name %S :timestamp %S :length %d)\n" :timestamp "\n" :newsrc-data print :delete "(:type :delete :file-name %S)\n" gnus-cloud-encode-data #2# print-length print-level] 7]) (defalias 'gnus-cloud-encode-data #[nil "\306\267\202b \307ed\310\311p\312\313&\210\314ed\"\207\314ed\"\207\315\316!\312\317\n!>\2040 \320\321\322\nD\"\210\n\211\323\311I\210)\317\n!>\204G \320\321\322\nD\"\210\n\211\324\311I\210)\325\n\326ed\"\312#ed|\210c+\207\204k \327\324\330\"\207\331\332\333#\207" [gnus-cloud-storage-method cipher context cl-struct-epg-context-tags #1=#:v #2=#:v #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (base64-gzip 6 base64 22 epg 27)) call-process-region "gzip" t nil "-c" base64-encode-region epg-make-context OpenPGP type-of signal wrong-type-argument epg-context 4 5 epg-encrypt-string buffer-substring-no-properties gnus-message "Leaving cloud data plaintext" gnus-error 1 "Invalid cloud storage method %S" data] 9]) (defalias 'gnus-cloud-decode-data #[nil "\303\267\202 \304ed\"\207\305\306!\307 \310ed\"\"ed|\210\nc*\207\204( \311\312\313\"\207\314\315\316#\207" [gnus-cloud-storage-method context data #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (base64 6 base64-gzip 6 epg 11)) base64-decode-region epg-make-context OpenPGP epg-decrypt-string buffer-substring-no-properties gnus-message 5 "Reading cloud data as plaintext" gnus-error 1 "Invalid cloud storage method %S"] 5]) (defalias 'gnus-cloud-parse-chunk #[nil "\212\303\304!\204 \305\306!\210\307y\210\310\311\307!!`d{\312\313!r\nq\210\314\216\315 \210c\210 \307U\2039 \316 \210eb\210\317 \202= \305\320 \".\207" [data version #1=#:temp-buffer looking-at "Gnus-Cloud-Version \\([0-9]+\\)" error "Not a valid Cloud chunk in the current buffer" 1 string-to-number match-string generate-new-buffer " *temp*" #[nil "\301!\205 \302!\207" [#1# buffer-name kill-buffer] 2] mm-disable-multibyte gnus-cloud-decode-data gnus-cloud-parse-version-1 "Unsupported Cloud chunk version %s"] 3]) (defalias 'gnus-cloud-parse-version-1 #[nil "\303m\204h m\204 \304\305!\204 \306y\210\202 m\204 \3071% \310p!0\202' \210\303\303\211:\203d \311\n\312\"\313>\203W \311\n\314\"\315\n\316`T\317`\306 #{D\"B\317`\306 #b\210\202d \311\n\312\"\320=\203d \nB*\202 \237)\207" [elems length spec nil looking-at "(:type" 1 (error) read plist-get :type (:file :delete) :length append :contents + :newsrc-data] 9]) (defalias 'gnus-cloud-update-all #[(elems) "\304\211\2058 \n@\305 \306\"\211\307\267\202) \310\305 \311\" \"\210\202/ \312 \"\210\202/ \313\314\315#\210)\nA\211\204 \304*\207" [elems elem --dolist-tail-- type nil plist-get :type #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:newsrc-data 22 :delete 33 :file 33)) gnus-cloud-update-newsrc-data :name gnus-cloud-update-file gnus-message 1 "Unknown type %s; ignoring"] 5]) #@85 Update the newsrc data for GROUP from ELEM. Use old data if FORCE-OLDER is not nil. (defalias 'gnus-cloud-update-newsrc-data #[(group elem &optional force-older) "\306\307\"\306\310\"\206 \311\312\313!\n\231 \314\"A@\262 \203\206 @;\203\206 A@\250\203\206 \203~ \315\316\"\315\316 \"\232\203M \317\320\321 #\202\214 \f\203` \204` \317\320\322 \n%\202\214 \203m \323\315\324 \n#!\210\317\325\326 #\210\327 \"\210\330 !\202\214 \331\332\333 #\202\214 \331\332\334 $-\207" [elem contents date now newer group plist-get :contents :timestamp "0" gnus-cloud-timestamp nil gethash format "%S" gnus-message 3 "Skipping cloud update of group %s, the info is the same" "Skipping outdated cloud info for group %s, the info is from %s (now is %s)" gnus-y-or-n-p "%s has older different info in the cloud as of %s, update it here? " 2 "Installing cloud update of group %s" gnus-set-info gnus-group-update-group gnus-error 1 "Sorry, group %s is not subscribed" "Sorry, could not update newsrc for group %s (invalid data %S)" gnus-newsrc-hashtb group-info force-older gnus-cloud-interactive] 6 (#$ . 6323)]) #@56 Apply Gnus Cloud data ELEM and operation OP to a file. (defalias 'gnus-cloud-update-file #[(elem op) "\306\307\"\306\310\"\306\311\"\312 !\313 !\203\203 \314\267\202 \f\203<