;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\207" [require tramp tramp-fuse] 2) #@68 When this method name is used, forward all calls to rclone mounts. (defconst tramp-rclone-method "rclone" (#$ . 157)) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313& \210\314\315\316\"\207" [custom-declare-variable tramp-rclone-program funcall function #[0 "\300\207" [#1="rclone"] 1 #1#] "Name of the rclone program." :group tramp :version "27.1" :type string add-hook tramp--startup-hook #[0 "\301\302\303B\"\210\301\304\305B\"\210\306\307\"\207" [tramp-rclone-method add-to-list tramp-methods ((tramp-mount-args ("--no-unicode-normalization" "--dir-cache-time" "0s")) (tramp-copyto-args nil) (tramp-moveto-args nil) (tramp-about-args ("--full"))) tramp-default-host-alist (nil #2="") tramp-set-completion-function ((tramp-rclone-parse-device-names #2#))] 4]] 10) #@132 Alist of handler functions for Tramp RCLONE method. Operations not mentioned here will be handled by the default Emacs primitives. (defconst tramp-rclone-file-name-handler-alist '((access-file . tramp-handle-access-file) (add-name-to-file . tramp-handle-add-name-to-file) (copy-directory . tramp-handle-copy-directory) (copy-file . tramp-rclone-handle-copy-file) (delete-directory . tramp-fuse-handle-delete-directory) (delete-file . tramp-fuse-handle-delete-file) (directory-file-name . tramp-handle-directory-file-name) (directory-files . tramp-fuse-handle-directory-files) (directory-files-and-attributes . tramp-handle-directory-files-and-attributes) (dired-compress-file . ignore) (dired-uncache . tramp-handle-dired-uncache) (exec-path . ignore) (expand-file-name . tramp-handle-expand-file-name) (file-accessible-directory-p . tramp-handle-file-accessible-directory-p) (file-acl . ignore) (file-attributes . tramp-fuse-handle-file-attributes) (file-directory-p . tramp-handle-file-directory-p) (file-equal-p . tramp-handle-file-equal-p) (file-executable-p . tramp-fuse-handle-file-executable-p) (file-exists-p . tramp-handle-file-exists-p) (file-in-directory-p . tramp-handle-file-in-directory-p) (file-local-copy . tramp-handle-file-local-copy) (file-modes . tramp-handle-file-modes) (file-name-all-completions . tramp-fuse-handle-file-name-all-completions) (file-name-as-directory . tramp-handle-file-name-as-directory) (file-name-case-insensitive-p . tramp-handle-file-name-case-insensitive-p) (file-name-completion . tramp-handle-file-name-completion) (file-name-directory . tramp-handle-file-name-directory) (file-name-nondirectory . tramp-handle-file-name-nondirectory) (file-newer-than-file-p . tramp-handle-file-newer-than-file-p) (file-notify-add-watch . ignore) (file-notify-rm-watch . ignore) (file-notify-valid-p . ignore) (file-ownership-preserved-p . ignore) (file-readable-p . tramp-fuse-handle-file-readable-p) (file-regular-p . tramp-handle-file-regular-p) (file-remote-p . tramp-handle-file-remote-p) (file-selinux-context . tramp-handle-file-selinux-context) (file-symlink-p . tramp-handle-file-symlink-p) (file-system-info . tramp-rclone-handle-file-system-info) (file-truename . tramp-handle-file-truename) (file-writable-p . tramp-handle-file-writable-p) (find-backup-file-name . tramp-handle-find-backup-file-name) (insert-directory . tramp-handle-insert-directory) (insert-file-contents . tramp-handle-insert-file-contents) (load . tramp-handle-load) (make-auto-save-file-name . tramp-handle-make-auto-save-file-name) (make-directory . tramp-fuse-handle-make-directory) (make-directory-internal . ignore) (make-nearby-temp-file . tramp-handle-make-nearby-temp-file) (make-process . ignore) (make-symbolic-link . tramp-handle-make-symbolic-link) (process-file . ignore) (rename-file . tramp-rclone-handle-rename-file) (set-file-acl . ignore) (set-file-modes . ignore) (set-file-selinux-context . ignore) (set-file-times . ignore) (set-visited-file-modtime . tramp-handle-set-visited-file-modtime) (shell-command . ignore) (start-file-process . ignore) (substitute-in-file-name . tramp-handle-substitute-in-file-name) (temporary-file-directory . tramp-handle-temporary-file-directory) (tramp-get-remote-gid . ignore) (tramp-get-remote-uid . ignore) (tramp-set-file-uid-gid . ignore) (unhandled-file-name-directory . ignore) (vc-registered . ignore) (verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime) (write-region . tramp-handle-write-region)) (#$ . 949)) #@53 Check if it's a FILENAME for rclone. (fn FILENAME) (defalias 'tramp-rclone-file-name-p #[257 "\302!\205\303!\211\242>\204\304\305\306D\"\210\211A@\262 \230\207" [cl-struct-tramp-file-name-tags tramp-rclone-method tramp-tramp-file-p tramp-dissect-file-name signal wrong-type-argument tramp-file-name] 6 (#$ . 4462)]) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put tramp-rclone-file-name-p speed -1 put byte-optimizer byte-compile-inline-expand] 5) #@173 Invoke the rclone handler for OPERATION and ARGS. First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION. (fn OPERATION &rest ARGS) (defalias 'tramp-rclone-file-name-handler #[385 "\301\"\211\203\302 \303\304\"\216\305A\")\207\306\"\207" [tramp-rclone-file-name-handler-alist assoc match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] apply tramp-run-real-handler] 7 (#$ . 4945)]) (add-hook 'tramp--startup-hook #[0 "\300\301\302\"\207" [tramp-register-foreign-file-name-handler tramp-rclone-file-name-p tramp-rclone-file-name-handler] 3]) #@68 Return a list of (nil host) tuples allowed to access. (fn IGNORE) (defalias 'tramp-rclone-parse-device-names #[257 "\302\303\304#\211=\203\305\303\306\307\310\303 \311#\"\"\262\312\303\304#\210\207" [tramp-cache-undefined tramp-rclone-program tramp-get-connection-property nil "rclone-device-names" delq mapcar #[257 "\300\301\"\205 \302\303\304\"D\207" [string-match "^\\(\\S-+\\):$" nil match-string 1] 5 "\n\n(fn LINE)"] tramp-process-lines "listremotes" tramp-set-connection-property] 10 (#$ . 5569)]) #@845 Copy or rename a remote file. OP must be `copy' or `rename' and indicates the operation to perform. FILENAME specifies the file to copy or rename, NEWNAME is the name of the new file (for copy) or the new name of the file (for rename). OK-IF-ALREADY-EXISTS means don't barf if NEWNAME exists already. KEEP-DATE means to make sure that NEWNAME has the same timestamp as FILENAME. PRESERVE-UID-GID, when non-nil, instructs to keep the uid and gid if both files are on the same host. PRESERVE-EXTENDED-ATTRIBUTES is ignored. This function is invoked by `tramp-rclone-handle-copy-file' and `tramp-rclone-handle-rename-file'. It is an error if OP is neither of `copy' and `rename'. FILENAME and NEWNAME must be absolute file names. (fn OP FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-DATE PRESERVE-UID-GID PRESERVE-EXTENDED-ATTRIBUTES) (defalias 'tramp-rclone-do-copy-or-rename-file #[1795 "C\306>\204\307\310 \"\210\211\311\242!\240\210\312\242!\2034\313\242\314$\210\315=\205o\316\242\317\"\207\320\242!\320! \321=\203G\322\202H\323\n\321=\203S\324\202T\325\326\203^\242\202`\n!\211\242>\204o\327\330\331D\"\210\211A@\242>\204\200\327\330\331D\"\210\3328\242>\204\221\327\330\331D\"\210\3338\242>\204\243\327\330\331D\"\210\3348\242>\204\265\327\330\331D\"\210\3358\242>\204\307\327\330\331D\"\210\3368\242>\204\333\327\330\331 D\"\210\3378\340 \242!\204 \242\341\342N\203\374\343 #\266\202\343 \344$\266\204\340!\203\343\345#\210\312!\203/\346!\204/\343\347\350$\210 \203Z\f\242\320!\205U\326!\211\242>\204N\327\330\331D\"\210\211A@\262\n\230\262\203\204\n\203\304\320!\205\326!\211\242>\204x\327\330\331D\"\210\211A@\262\n\230\262\204\304\f\242\351\352\353 \354\355\356N@\314\"\"\357\314\"#\266\202\321=\203\264\360\242\314&\210\202\274\361\242\314#\210\361#\207\f\204\314 \203\362\362 \363\242!\363!$\364U\204:\343\347\365\f\242&\210\202:\364\366\367\370 \242$C\3711\271@X\205\263\333X\203=A\204=\372\373\364U\203#\374\2028\375U\203-\374\2028\332U\2037\376\2028\377P#\210@\334Y\205\263\364@\375U\203\211\201B1\210r\201C!\203d\201D!\202l\201E\201F\"q\210\201GP\262\201H\201I C\"\211\262)0\210\202\211\210\201C!\203\233\201J\201K\"\262)\242>\205\263\372\201L\367\201M\"P$0\266\202\273\266\201NCA?\205\336\364@\333^X\205\336\201O\367\370\f\242$\351\211#\211\205\356\201P\333\201Q\201R$\262\201S\201T&\216A\206 \211A\362\n \363\242!\363!$\364U\2040\343\n\347\365\242&\210)\201U\240\210)\266 \203\335\315=\203\335\340 \242!\203\335\326 \242!\211\242>\204a\327\330\331D\"\210\211A@\242>\204r\327\330\331D\"\210\3328\242>\204\203\327\330\331D\"\210\3338\242>\204\225\327\330\331D\"\210\3348\242>\204\247\327\330\331D\"\210\3358\242>\204\271\327\330\331D\"\210\3368\242>\204\315\327\330\331 D\"\210\3378\201V\"\266 \202F\n\205m\326!\211\242>\204\364\327\330\331D\"\210\211A@\242>\204\327\330\331D\"\210\3328\242>\204\327\330\331D\"\210\3338\242>\204(\327\330\331D\"\210\3348\242>\204:\327\330\331D\"\210\3358\242>\204L\327\330\331D\"\210\3368\242>\204`\327\330\331 D\"\210\3378\201V\"\266\210\266\214\207" [cl-struct-tramp-file-name-tags tramp-file-missing tramp-rclone-method tramp-temp-name-prefix noninteractive inhibit-message (copy rename) error "Unknown operation `%s', must be `copy' or `rename'" file-truename file-directory-p copy-directory t rename delete-directory recursive tramp-tramp-file-p copy "copyto" "moveto" "Copying" "Renaming" tramp-dissect-file-name signal wrong-type-argument tramp-file-name 2 3 4 5 6 7 file-exists-p file-missing error-conditions tramp-error "No such file or directory: %s" file-already-exists directory-name-p file-error "File is a directory %s" nil make-temp-file expand-file-name eval temporary-file-directory standard-value file-name-extension copy-file rename-file tramp-rclone-send-command tramp-rclone-remote-file-name 0 "Error %s `%s' `%s'" "%s..." format #1="%s %s to %s" #2=(error) apply message #3="" 1 #4="Warning: " #5="Tramp: " tramp-verbose tramp-inhibit-progress-reporter #6=(error) processp process-buffer tramp-get-connection-buffer dont-create #7="\n%s" append buffer-string process-get vector tramp-debug-message #8="(%d) # " "failed" make-progress-reporter run-at-time 0.1 tramp-progress-reporter-update make-closure #[0 "\305\203\306\305!\210\303\307\310\311\312\302\300\242\301$\304\242D\3131\260\"X\205\256\314X\203Q#\204Q\315\316\307U\2037\317\202L\320U\203A\317\202L\321U\203K\322\202L\323P#\210\"\324Y\205\256\307\"\320U\203\215\3251\214r\326!\203r\327!\202v\330\331\"q\210\332P\262\333\334 C\"\211\262)0\210\202\215\210\326!\203\231\335\336\"\262)\242$>\205\256\315\337\311\340\"P$0\207\266\341\207" [V0 V1 V2 V3 V4 V5 cancel-timer 0 "%s...%s" format #1# #2# 3 apply message #3# 1 2 #4# #5# 4 #6# processp process-buffer tramp-get-connection-buffer dont-create #7# append buffer-string process-get vector tramp-debug-message #8# nil tramp-verbose tramp-inhibit-progress-reporter cl-struct-tramp-file-name-tags] 10] "done" tramp-flush-file-properties] 31 (#$ . 6092)]) #@145 Like `copy-file' for Tramp files. (fn FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-DATE PRESERVE-UID-GID PRESERVE-EXTENDED-ATTRIBUTES) (defalias 'tramp-rclone-handle-copy-file #[1538 "\300!\262\300!\262\301!\204\301!\203)\302\303&\207\304\305\257\"\207" [expand-file-name tramp-tramp-file-p tramp-rclone-do-copy-or-rename-file copy tramp-run-real-handler copy-file] 14 (#$ . 11494)]) #@57 Like `file-system-info' for Tramp files. (fn FILENAME) (defalias 'tramp-rclone-handle-file-system-info #[257 "\3031\236\304!\204\305!\262\306\307!!\211\242>\204\"\310\311\312D\"\210\211A@\242>\2043\310\311\312D\"\210\3138\242>\204D\310\311\312D\"\210\3148\242>\204V\310\311\312D\"\210\3158\242>\204h\310\311\312D\"\210\3168\242>\204z\310\311\312D\"\210\3178\242>\204\216\310\311\312 D\"\210\3208\316\321C\32212 X\205,\314X\203\322\n\204\322\323\324\325U\203\270\326\202\315\327U\203\302\326\202\315\313U\203\314\330\202\315\331P#\210 \315Y\205,\325\327U\203\f\3321 r\333!\203\361\334!\202\365\335\336\"q\210\337P\262\340\341 C\"\211\262)0\210\202\f\210\333!\203\342\343\"\262)\242>\205,\323\344\345\346\"P$0\266\2024\266\347\350\351P#\210r\335!q\210\352\211\211eb\210m\204|\353\354!\203\\\355\356\327!!\262\353\357!\203i\355\356\327!!\262\353\360!\203v\355\356\327!!\262\352y\210\202K\203\211\361 \362$\210\205\227\211\205\227ZE\266\203)\266\2100\207\210\352\207" [cl-struct-tramp-file-name-tags tramp-verbose tramp-inhibit-progress-reporter (error) file-directory-p file-name-directory tramp-dissect-file-name expand-file-name signal wrong-type-argument tramp-file-name 2 3 4 5 6 7 "file system info: %s" (error) apply message 0 "" 1 "Warning: " "Tramp: " (error) processp process-buffer tramp-get-connection-buffer dont-create "\n%s" append buffer-string process-get vector tramp-debug-message format "(%d) # " tramp-rclone-send-command "about" ":" nil looking-at "Total: [[:space:]]+\\([[:digit:]]+\\)" string-to-number match-string "Used: [[:space:]]+\\([[:digit:]]+\\)" "Free: [[:space:]]+\\([[:digit:]]+\\)" tramp-set-file-property "used-bytes"] 19 (#$ . 11930)]) #@91 Like `rename-file' for Tramp files. (fn FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS) (defalias 'tramp-rclone-handle-rename-file #[770 "\300!\262\300!\262\301!\204\301!\203 \302\303\304\305&\207\306\307E\"\207" [expand-file-name tramp-tramp-file-p tramp-rclone-do-copy-or-rename-file rename keep-date preserve-uid-gid tramp-run-real-handler rename-file] 10 (#$ . 13731)]) #@65 Return FILENAME as used in the `rclone' command. (fn FILENAME) (defalias 'tramp-rclone-remote-file-name #[257 "\304!\305\211?\205\n\306!\211\211?\205\307\310\306!\")\266\202\2034\211G\311U\203.\312\2022\211\311\305O\262\313!P)\266\203\262\211\314!\205]\315!\211\242 >\204V\316\317\320D\"\210\211A@\262\n\230\262\2032\315!\211\242 >\204s\316\317\320D\"\210\211A@\242 >\204\204\316\317\320D\"\210\3118\242 >\204\225\316\317\320D\"\210\3218\242 >\204\247\316\317\320D\"\210\3228\242 >\204\271\316\317\320D\"\210\3238\242 >\204\313\316\317\320D\"\210\3248\242 >\204\337\316\317\320 D\"\210\3258\326!\203\327\330 $\211 =\203\331 !\210\332\333\334\206\334#\262\335\336\337 !#\262\340 \330$\210\207\331!\210\332\333\334\206&\334#\262\335\336\337\n!#\207\207" [file-name-handler-alist cl-struct-tramp-file-name-tags tramp-rclone-method tramp-cache-undefined expand-file-name nil file-local-name string-prefix-p "/:" 2 "/" file-remote-p tramp-tramp-file-p tramp-dissect-file-name signal wrong-type-argument tramp-file-name 3 4 5 6 7 file-name-absolute-p tramp-get-file-property "remote-file-name" tramp-rclone-maybe-open-connection replace-regexp-in-string "^\\." "" format "%s%s" tramp-fuse-mounted-p tramp-set-file-property] 15 (#$ . 14129)]) #@173 Maybe open a connection VEC. Does not do anything if a connection is already open, but re-opens the connection if a previous connection has died for some reason. (fn VEC) (defalias 'tramp-rclone-maybe-open-connection #[257 "\303!\204 \304\305\211\"\210\211\242>\204\306\307\310D\"\210\3118\312C\313\314!\"\203\247\211G\315U\2034\316\317\320$\210\321\322!!\204`\323\324\325!\326\322!\327\330\331\332\333\330\334\330&\f\335\336#\210\337\314\"\210\340!\266\341\342!!\204o\343\342!\344\"\210\345!\204\247\346\347 \314\315\314\350\351\n!\342 !\352\f\353\"&\n\210\354\355\356\"!\204\237\357\360\361#\210\202\215\362\363!\364\330#\210\210\365\366\n#\211\n=\203\276\367\370!\262\362\366#\210\210\365\371\n#\211\n=\203\325\372\370!\262\362\371#\210\210\365\373\n#\211\n=\203\354\367\374!\262\362\373#\210\210\365\375\n#\211\n=\203\372\374!\262\362\375#\210\207" [cl-struct-tramp-file-name-tags tramp-rclone-program tramp-cache-undefined tramp-connectable-p throw non-essential signal wrong-type-argument tramp-file-name 4 rassoc tramp-rclone-parse-device-names nil 0 tramp-error file-error "Storage %s not connected" get-buffer-process tramp-get-connection-buffer make-network-process :name tramp-get-connection-name :buffer :server t :host local :service :noquery process-put vector set-process-query-on-exit-flag tramp-set-connection-local-variables file-directory-p tramp-fuse-mount-point make-directory parents tramp-fuse-mounted-p apply tramp-call-process "mount" tramp-fuse-mount-spec tramp-get-method-parameter tramp-mount-args file-exists-p tramp-make-tramp-file-name noloc tramp-cleanup-connection keep-debug keep-password tramp-set-connection-property tramp-get-connection-process "connected" tramp-get-connection-property "uid-integer" tramp-get-local-uid integer "gid-integer" tramp-get-local-gid "uid-string" string "gid-string"] 15 (#$ . 15458)]) #@97 Send a command to connection VEC. The command is the list of strings ARGS. (fn VEC &rest ARGS) (defalias 'tramp-rclone-send-command #[385 "r\301!q\210\302 \210\303\304\305\306@\"!\"\307\310\311\312\311\313  \"&\262)\207" [tramp-rclone-program tramp-get-connection-buffer erase-buffer tramp-get-method-parameter intern format "tramp-%s-args" apply tramp-call-process nil t append] 13 (#$ . 17374)]) (byte-code "\300\301\302\"\210\303\304!\207" [add-hook tramp-unload-hook #[0 "\300\301\302\"\207" [unload-feature tramp-rclone force] 3] provide tramp-rclone] 3)