;ELC ;;; Compiled by cyd@localhost on Mon Apr 23 22:21:11 2007 ;;; from file /home/cyd/emacs/lisp/tar-mode.el ;;; in Emacs version 22.0.99 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`tar-mode.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (custom-declare-group 'tar nil "Simple editing of tar files." :prefix "tar-" :group 'data) #@519 The blocksize of tar files written by Emacs, or nil, meaning don't care. The blocksize of a tar file is not really the size of the blocks; rather, it is the number of blocks written with one system call. When tarring to a tape, this is the size of the *tape* blocks, but when writing to a file, it doesn't matter much. The only noticeable difference is that if a tar file does not have a blocksize of 20, tar will tell you that; all this really controls is how many null padding bytes go on the end of the tar file. (custom-declare-variable 'tar-anal-blocksize '20 '(#$ . 655) :type '(choice integer (const nil)) :group 'tar) #@477 Non-nil means Tar mode should play fast and loose with sub-file datestamps. If this is true, then editing and saving a tar file entry back into its tar file will update its datestamp. If false, the datestamp is unchanged. You may or may not want this - it is good in that you can tell when a file in a tar archive has been changed, but it is bad for the same reason that editing a file in the tar archive at all is bad - the changed version of the file never exists on disk. (custom-declare-variable 'tar-update-datestamp 'nil '(#$ . 1290) :type 'boolean :group 'tar) #@143 Non-nil means Tar mode should show the date/time of each subfile. This information is useful, but it takes screen space away from file names. (custom-declare-variable 'tar-mode-show-date 'nil '(#$ . 1866) :type 'boolean :group 'tar) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\306B\302\306!\204-\303\306\304\"\210\307B\302\307!\204<\303\307\304\"\210\310B\302\310!\204K\303\310\304\"\210\311\301\312\313#\210\311\305\312\313#\210\311\306\312\313#\210\311\307\312\313#\207" [current-load-list tar-parse-info default-boundp set-default nil tar-header-offset tar-superior-buffer tar-superior-descriptor tar-subfile-mode put permanent-local t] 4) #@49 A mind-numbingly simple implementation of setf. (defalias 'tar-setf '(macro . #[(form val) "\304\305\301!\205 \"\2119\203\306\n E\202Z\n:\204#\307\310\"\202Z\n@\311=\2036\312\nA@\313\n8 F\202Z\n@\314=\203F\315\nA@ E\202Z\n@\316=\203V\317\nA@ E\202Z\307\320\")\207" [form byte-compile-macro-environment mform val macroexpand boundp setq error "can't setf %s" aref aset 2 car setcar cdr setcdr "don't know how to setf %s"] 5 (#$ . 2573)])) (defalias 'make-tar-header '(macro . #[(name mode uid git size date ck lt ln magic uname gname devmaj devmin) "\306 \n \f  \n \f \257\207" [name mode uid git size date vector ck lt ln magic uname gname devmaj devmin] 15])) (defalias 'tar-header-name '(macro . #[(x) "\301\302E\207" [x aref 0] 3])) (defalias 'tar-header-mode '(macro . #[(x) "\301\302E\207" [x aref 1] 3])) (defalias 'tar-header-uid '(macro . #[(x) "\301\302E\207" [x aref 2] 3])) (defalias 'tar-header-gid '(macro . #[(x) "\301\302E\207" [x aref 3] 3])) (defalias 'tar-header-size '(macro . #[(x) "\301\302E\207" [x aref 4] 3])) (defalias 'tar-header-date '(macro . #[(x) "\301\302E\207" [x aref 5] 3])) (defalias 'tar-header-checksum '(macro . #[(x) "\301\302E\207" [x aref 6] 3])) (defalias 'tar-header-link-type '(macro . #[(x) "\301\302E\207" [x aref 7] 3])) (defalias 'tar-header-link-name '(macro . #[(x) "\301\302E\207" [x aref 8] 3])) (defalias 'tar-header-magic '(macro . #[(x) "\301\302E\207" [x aref 9] 3])) (defalias 'tar-header-uname '(macro . #[(x) "\301\302E\207" [x aref 10] 3])) (defalias 'tar-header-gname '(macro . #[(x) "\301\302E\207" [x aref 11] 3])) (defalias 'tar-header-dmaj '(macro . #[(x) "\301\302E\207" [x aref 12] 3])) (defalias 'tar-header-dmin '(macro . #[(x) "\301\302E\207" [x aref 13] 3])) (defalias 'make-tar-desc '(macro . #[(data-start tokens) "\302 E\207" [data-start tokens cons] 3])) (defalias 'tar-desc-data-start '(macro . #[(x) "\301D\207" [x car] 2])) (defalias 'tar-desc-tokens '(macro . #[(x) "\301D\207" [x cdr] 2])) (byte-code "\301B\306\307!\210\302B\310 \311\\!\210\303B\312\n\313\\!\210\304B\314 \313\\!\210\305B\315\f\313\\!\210\316B\317 \320\\!\210\321B\322\320\\!\210\323B\324\313\\!\210\325B\326T!\210\327B\330\311\\!\210\331B\332\313\\!\210\333B\334\335\\!\210\336B\337\335\\!\210\340B\341\313\\!\210\342B\343 \313\\!\207" [current-load-list tar-name-offset tar-mode-offset tar-uid-offset tar-gid-offset tar-size-offset (lambda (#1=#:defconst-tmp-var) (defconst tar-name-offset #1#)) 0 (lambda (#2=#:defconst-tmp-var) (defconst tar-mode-offset #2#)) 100 (lambda (#3=#:defconst-tmp-var) (defconst tar-uid-offset #3#)) 8 (lambda (#4=#:defconst-tmp-var) (defconst tar-gid-offset #4#)) (lambda (#5=#:defconst-tmp-var) (defconst tar-size-offset #5#)) tar-time-offset (lambda (#6=#:defconst-tmp-var) (defconst tar-time-offset #6#)) 12 tar-chk-offset (lambda (#7=#:defconst-tmp-var) (defconst tar-chk-offset #7#)) tar-linkp-offset (lambda (#8=#:defconst-tmp-var) (defconst tar-linkp-offset #8#)) tar-link-offset (lambda (#9=#:defconst-tmp-var) (defconst tar-link-offset #9#)) tar-magic-offset (lambda (#10=#:defconst-tmp-var) (defconst tar-magic-offset #10#)) tar-uname-offset (lambda (#11=#:defconst-tmp-var) (defconst tar-uname-offset #11#)) tar-gname-offset (lambda (#12=#:defconst-tmp-var) (defconst tar-gname-offset #12#)) 32 tar-dmaj-offset (lambda (#13=#:defconst-tmp-var) (defconst tar-dmaj-offset #13#)) tar-dmin-offset (lambda (#14=#:defconst-tmp-var) (defconst tar-dmin-offset #14#)) tar-end-offset (lambda (#15=#:defconst-tmp-var) (defconst tar-end-offset #15#))] 3) #@128 Return a `tar-header' structure. This is a list of name, mode, uid, gid, size, write-date, checksum, link-type, and link-name. (defalias 'tar-header-block-tokenize #[(string) "G\306W\203 \307\207\310H\310U\203\311H\310U\204A S S SSH SO\211\312\230\206@\313\230\307\211 \314!\315!\"#\203[\n\310\225S^\315!##\203k\f\310\225S^\315!#\203}\310\225S^\315! #\203\216\310\225S^\"\nO\310U\206\240\316U?\205\250\316Z#\fO $\203\330\317%\206\304&\206\304\320\"\317 %\206\325&\206\325\320\" \204\350\315\321\"\203\350\322\323\324 '#\324'(#\324()#\324)*#\325*+#\324+# \211\205$O\205. O\324,#\324,-#&.\n\207\326\207" [string tar-mode-offset name-end tar-magic-offset link-end tar-gname-offset 512 nil 0 101 "ustar " "GNUtar " "[^]*" string-match 48 decode-coding-string undecided "/\\'" 5 vector tar-parse-octal-integer tar-parse-octal-long-integer empty-tar-block uname-end tar-dmaj-offset gname-end tar-linkp-offset link-p tar-uname-offset magic-str uname-valid-p name linkname nulsexp tar-name-offset tar-link-offset default-enable-multibyte-characters file-name-coding-system default-file-name-coding-system tar-uid-offset tar-gid-offset tar-size-offset tar-time-offset tar-chk-offset tar-dmin-offset tar-end-offset] 19 (#$ . 6208)]) (defalias 'tar-parse-octal-integer #[(string &optional start end) "\204\304 \204 \nG\nH\304U\203\304\207\304 W\203<\nH\305W\203+ \2024 \306_\nH\305Z\\T\211\202 )\207" [start end string n 0 48 8] 4]) (defalias 'tar-parse-octal-long-integer #[(string &optional start end) "\204\305 \204 \nG\nH\305U\203\305\211D\207\305\211 W\203J\nH\306Y\203C\f\307_\nH\306Z\\ \307_\310\f\311\"\\\312\f\313\"T\211\202 \f*D\207" [start end string hi lo 0 48 8 ash -16 logand 65535] 5]) (defalias 'tar-parse-octal-integer-safe #[(string) "\301G!\203 \302\303!\210\304\305\"\210\306!\207" [string zerop error "empty string" mapc #[(c) "\301W\204\f\302V\205\303\304\"\207" [c 48 55 error "`%c' is not an octal digit"] 3] tar-parse-octal-integer] 3]) #@62 Compute and return a tar-acceptable checksum for this block. (defalias 'tar-header-block-checksum #[(string) "\211\306\\\307\211\307 W\203 \fH\\\fT\211\202 \n\211\310W\2032 \fH\\\fT\211\202 \311\307\\\\,\207" [tar-chk-offset chk-field-start chk-field-end sum i string 8 0 512 256] 4 (#$ . 8368)]) #@57 Beep and print a warning if the checksum doesn't match. (defalias 'tar-header-block-check-checksum #[(hblock desired-checksum file-name) "\303 !U?\205\304 \210\305\306\n\"\207" [desired-checksum hblock file-name tar-header-block-checksum beep message "Invalid checksum for file %s!"] 3 (#$ . 8689)]) (defalias 'tar-clip-time-string #[(time) "\302!\303 \304\305O \306\307OQ)\207" [time str current-time-string " " 4 16 19 24] 5]) #@105 Construct a `-rw--r--r--' string indicating MODE. MODE should be an integer which is a file mode value. (defalias 'tar-grind-file-mode #[(mode) "\301\302\303\304\"!\203\305\202\306\302\303\307\"!\203\305\202\310\302\303\311\"!\2037\302\303\312\"!\2033\305\2028\313\2028\314\302\303\315\"!\203E\305\202F\306\302\303\316\"!\203S\305\202T\310\302\303\317\"!\203n\302\303\320\"!\203j\305\202o\313\202o\314\302\303\321\"!\203|\305\202}\306\302\303\322\"!\203\212\305\202\213\310\302\303\323\"!\203\230\305\202\231\313& \207" [mode string zerop logand 256 45 114 128 119 1024 64 120 115 32 16 2048 8 4 2 1] 13 (#$ . 9130)]) #@52 Return a line similar to the output of `tar -vtf'. (defalias 'tar-header-block-summarize #[(tar-hblock &optional mod-p) "\306H\307H\310H\311H\312H\313H\314H\315H\316H\317H01234\320\3215\2038\322\2029\323\n\324=\204E\n\306=\203I\325\202\270\n\307=\203S\326\202\270\n\310=\203]\327\202\270\n\311=\203g\330\202\270\n\314=\203q\331\202\270\n\315=\203{\332\202\270\n\333=\203\205\334\202\270\n\335=\203\217\322\202\270\n\336=\203\231\337\202\270\n\340=\203\243\341\202\270\n\342=\203\255\343\202\270\n\344=\203\267\345\202\270\323\3463!0G\306U\203\3112\202\3130 G\306U\203\3271\202\330 \f6\203\344\347 !\202\345\350\3514\352\353\354\355%\n\307=\204\371\n\310=\203 \n\307U\203\356\202\357 P\202\n\350&\n.\n\207" [tar-hblock link-name type time size gname 0 1 2 3 10 11 4 5 7 8 format "%c%c%s%8s/%-8s%7s%s %s%s" 42 32 nil 45 104 108 99 98 100 6 112 20 28 76 29 77 35 83 38 86 tar-grind-file-mode tar-clip-time-string "" propertize mouse-face highlight help-echo "mouse-2: extract this file into a buffer" " ==> " " --> " uname gid uid mode name mod-p tar-mode-show-date] 15 (#$ . 9791)]) #@73 Extract all archive members in the tar-file into the current directory. (defalias 'tar-untar-buffer #[nil "\306\216\214~\210\307\310!\210\n\310\211\203s\f@\211A\211\311H\312! @eZ\\\211 \313H\\\314!\204k\315\316\"\210\203S\317!\204S\320\321\"\210\314!\204c\322#\210\323 \324H\"\210-\fA\211\204-\310\207" [enable-multibyte-characters multibyte tar-parse-info descriptor #1=#:--cl-dolist-temp-- tokens ((set-buffer-multibyte multibyte)) set-buffer-multibyte nil 0 file-name-directory 4 file-directory-p message "Extracting %s" file-exists-p make-directory t write-region set-file-modes 1 name dir tar-header-offset start end] 5 (#$ . 10946) nil]) #@201 Parse the contents of the tar file in the current buffer. Place a dired-like listing on the front; then narrow to it, so that only that listing is visible (and the real data of the buffer is hidden). (defalias 'tar-summarize-buffer #[nil "\306 \307\310!\210\310e\311\312e\313\314 \315Z]#\310\n\316\\dX\203\213\317\n\211\316\\{!\211\320=\204\213\n\316\\ \n' '@Y\203E\321' \"\210*\f\322H\323=\203R\n\316\\\f\324H\211(\325W\203f\326\327\f\325H(#\210\n\fB B\f\322H\204\207(\325V\203\207\n\330\211(S\331\"\332\"\\\316\\)\202\333\334!\210 \237\f\320=\203\240\335 !\210\202\244\336\337!\210,\307)!\210eb\210\340*\341\342\343#\211+\343\261\210)e`}\210\333\344!\210\345`!$eb\210\346!*\207" [modified result pos progress-reporter tokens value buffer-modified-p set-buffer-multibyte nil make-progress-reporter "Parsing tar file..." 1 buffer-size 1024 512 tar-header-block-tokenize empty-tar-block progress-reporter-do-update 7 20 4 0 error "%s has size %s - corrupted" ash -9 9 make-local-variable tar-parse-info progress-reporter-done message "Warning: premature EOF parsing tar file" t mapconcat #[(tar-desc) "\301A!\207" [tar-desc tar-header-block-summarize] 2] "\n" tar-header-offset position-bytes restore-buffer-modified-p reporter size default-enable-multibyte-characters inhibit-read-only total-summaries] 7 (#$ . 11643)]) #@37 Local keymap for Tar mode listings. (defvar tar-mode-map (byte-code "\301 \302!\210\303\304\305#\210\303\306\307#\210\303\310\311#\210\303\312\311#\210\303\313\314#\210\303\315\314#\210\303\316\314#\210\303\317\320#\210\303\321\322#\210\303\323\324#\210\303\325\305#\210\303\326\305#\210\303\327\305#\210\303\330\331#\210\303\332\333#\210\303\334\335#\210\303\336\333#\210\303\337\333#\210\303\340\341#\210\303\342\343#\210\303\344\345#\210\303\346\347#\210\303\350\351#\210\303\352\331#\210\303\353\354#\210\303\355\356#\210\303\357\360#\210\303\361\362#\210\303\363\364\365\364!B#\210\303\366\367#\210\303\370\371#\210\303\372\373#\210\303\374\375#\210\303\376\377\365\377!B#\210\303\201@\201A#\210\303\201B\201C#\210\303\201D\201E#\210\303\201F\201G\365\201G!B#\210\303\201H\201I#\210\303\201J\201K#\210\303\201L\201M#\210\303\201N\201O#\210\303\201P\201Q#\210\303\201R\201S#\210)\207" [map make-keymap suppress-keymap define-key " " tar-next-line "C" tar-copy "d" tar-flag-deleted "" "e" tar-extract "f" " " [mouse-2] tar-mouse-extract "g" revert-buffer "h" describe-mode "n" "" [down] "o" tar-extract-other-window "p" tar-previous-line "q" quit-window "" [up] "R" tar-rename-entry "u" tar-unflag "v" tar-view "x" tar-expunge "" tar-unflag-backwards "E" "M" tar-chmod-entry "G" tar-chgrp-entry "O" tar-chown-entry [menu-bar edit] undefined [menu-bar immediate] "Immediate" make-sparse-keymap [menu-bar immediate view] ("View This File" . tar-view) [menu-bar immediate display] ("Display in Other Window" . tar-display-other-window) [menu-bar immediate find-file-other-window] ("Find in Other Window" . tar-extract-other-window) [menu-bar immediate find-file] ("Find This File" . tar-extract) [menu-bar mark] "Mark" [menu-bar mark unmark-all] ("Unmark All" . tar-clear-modification-flags) [menu-bar mark deletion] ("Flag" . tar-flag-deleted) [menu-bar mark unmark] ("Unflag" . tar-unflag) [menu-bar operate] "Operate" [menu-bar operate chown] ("Change Owner..." . tar-chown-entry) [menu-bar operate chgrp] ("Change Group..." . tar-chgrp-entry) [menu-bar operate chmod] ("Change Mode..." . tar-chmod-entry) [menu-bar operate rename] ("Rename to..." . tar-rename-entry) [menu-bar operate copy] ("Copy to..." . tar-copy) [menu-bar operate expunge] ("Expunge Marked Files" . tar-expunge)] 6) (#$ . 13009)) (byte-code "\302\303\304\305#\210\302\306\304\305#\210\307\310N\204\302\307\310\311#\210\312\313!\204$\302\313\314\303#\210\313B\315\313!\2044\316\313\317 \"\210\312\320!\204@\302\320\314\303#\210\320B\315\320!\204P\316\320\321 \"\210\302\301\314\303#\210\301B\315\301!\204j\316\301\322\301\323\"\210 \"\210\302\303\324\323#\207" [current-load-list tar-mode-abbrev-table put tar-mode mode-class special tar-subfile-mode tar-mode-hook variable-documentation "Hook run when entering Tar mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp tar-mode-map definition-name default-boundp set-default make-sparse-keymap tar-mode-syntax-table make-syntax-table define-abbrev-table nil derived-mode-parent] 5) #@813 Major mode for viewing a tar file as a dired-like listing of its contents. You can move around using the usual cursor motion commands. Letters no longer insert themselves. Type `e' to pull a file out of the tar file and into its own buffer; or click mouse-2 on the file's line in the Tar mode buffer. Type `c' to copy an entry from the tar file into another file on disk. If you edit a sub-file of this archive (as with the `e' command) and save it with \[save-buffer], the contents of that buffer will be saved back into the tar-file buffer; in this way you can edit a file inside of a tar archive without extracting it and re-archiving it. See also: variables `tar-update-datestamp' and `tar-anal-blocksize'. \{tar-mode-map} This mode runs the hook `tar-mode-hook', as the final step during initialization. (defalias 'tar-mode #[nil "\306\300!\210\307\310 \210\311\312\313 !\210\314\f!\210 #\306\315!\210\306\316!\210\306\317!\210\320\306\321!\210\322\306\323!\210\320\306\324!\210\320\306\325!\210\307\326\327!\210\306\330!\210\331\332 \210~\210\333\315!\203h \203he\334 !}\210\202o\335 \210\336\327!\210)\337\340!\203z\340\341!\207\342\341!\207" [delay-mode-hooks major-mode mode-name tar-mode-map tar-mode-syntax-table tar-mode-abbrev-table make-local-variable t kill-all-local-variables tar-mode "Tar" use-local-map set-syntax-table tar-header-offset tar-parse-info require-final-newline nil revert-buffer-function tar-mode-revert local-enable-local-variables next-line-add-newlines file-precious-flag auto-save-mode 0 write-contents-functions (tar-mode-write-file) buffer-disable-undo boundp byte-to-position tar-summarize-buffer tar-next-line fboundp run-mode-hooks tar-mode-hook run-hooks local-abbrev-table] 3 (#$ . 16195) nil]) #@235 Minor mode for editing an element of a tar-file. This mode arranges for "saving" this buffer to write the data into the tar-file buffer that it came from. The changes will actually appear on disk when you save the tar-file's buffer. (defalias 'tar-subfile-mode #[(p) "\304\300!\203\n\204\305\306!\210\307\302!\210 \204\n?\202 \310 !\311V\211\2036\312\313\314\315\316$\210\317\320!\210\315\321\322!\207\323\313\314\316#\207" [tar-superior-buffer p tar-subfile-mode buffer-auto-save-file-name boundp error "This buffer is not an element of a tar file" make-local-variable prefix-numeric-value 0 add-hook write-file-functions tar-subfile-save-buffer nil t auto-save-mode -1 run-hooks tar-subfile-mode-hook remove-hook] 6 (#$ . 17966) "P"]) (defalias 'tar-mode-revert #[(&optional no-auto-save no-confirm) "\305\305\305\306\216\307\310\f\"\205~\210\310\311 ,\207" [tar-header-offset success old-offset revert-buffer-function no-confirm nil ((byte-code "\204 \303\207" [success old-offset tar-header-offset nil] 1)) revert-buffer t tar-mode] 3]) #@73 Move cursor vertically down ARG lines and to the start of the filename. (defalias 'tar-next-line #[(arg) "y\210m?\205 \203\302\202\303u\207" [arg tar-mode-show-date 54 36] 1 (#$ . 19036) "p"]) #@71 Move cursor vertically up ARG lines and to the start of the filename. (defalias 'tar-previous-line #[(arg) "\301[!\207" [arg tar-next-line] 2 (#$ . 19242) "p"]) #@69 Return the tar-descriptor of the current line, or signals an error. (defalias 'tar-current-descriptor #[(&optional noerror) "\302e\212\303 \210`)\"8\206 ?\205\304\305!\207" [tar-parse-info noerror count-lines beginning-of-line error "This line does not describe a tar-file entry"] 3 (#$ . 19410)]) (defalias 'tar-get-descriptor #[nil "\304 \211A\211\305H \306H\211\203S\307\310 \311=\203\312\202Q \313=\203(\314\202Q \315=\2032\316\202Q \317=\203<\320\202Q \321=\203F\322\202Q \323=\203P\324\202Q\325\"\210\326\n!\203]\307\327!\210,\207" [descriptor tokens size link-p tar-current-descriptor 4 7 error "This is a %s, not a real file" 5 "directory" 20 "tar directory header" 28 "next has longname" 29 "multivolume-continuation" 35 "sparse entry" 38 "volume header" "link" zerop "This is a zero-length file"] 5]) #@55 Extract a file whose tar directory line you click on. (defalias 'tar-mouse-extract #[(event) "\212\302\211:\203\3038:\203\303\202\3048\202 \305 `\306\307F)\307 8)!q\210\212\211:\203B\3038:\203<\303\202=\3048\202H\305 `\306\307F)\310 8\206a\304 8:\203^\304 8@\202a\304 8)b\210\311 \210*\312\211:\203\201\3038:\203{\303\202|\3048\202\207\305 `\306\307F)\307 8)!\210\211:\203\247\3038:\203\241\303\202\242\3048\202\255\305 `\306\307F)\310 8\206\306\304 8:\203\303\304 8@\202\306\304 8)b\210\313 \207" [event position window-buffer 2 1 selected-window (0 . 0) 0 5 tar-get-descriptor select-window tar-extract] 6 (#$ . 20252) "e"]) #@70 In Tar mode, extract this entry of the tar file into its own buffer. (defalias 'tar-extract #[(&optional other-window-p) "\306=\307 \211A\211\310H \311H\n@5eZ\\\2116 \\7p89:\312 ;\313\f!\314;\315R<=\206; >\316;\317\fQ!?\320?!@\321A@\204[\322=\354\321!\210)\355\356!\210)8q\210) \203l\357@A\205h\360\"\202\210\361=\203y\362@!\202\210\203\204\363@!\202\210\364@!.\207" [other-window-p view-p descriptor tokens name size view tar-get-descriptor 0 4 buffer-name file-name-nondirectory " (" ")" expand-file-name "!" get-file-buffer nil generate-new-buffer t ((byte-code "e}\210\302 !\207" [tar-header-offset tar-buffer-multibyte set-buffer-multibyte] 2)) set-buffer-multibyte insert-buffer-substring abbreviate-file-name find-operation-coding-system insert-file-contents detect-coding-region 16384 coding-system-eol-type vectorp coding-system-change-eol-conversion find-new-buffer-file-coding-system no-conversion coding-system-type 5 coding-system-change-text-conversion raw-text decode-coding-region set-buffer-file-coding-system normal-mode rename-buffer make-local-variable tar-superior-buffer tar-superior-descriptor set-buffer-modified-p tar-subfile-mode 1 view-buffer kill-buffer display display-buffer switch-to-buffer-other-window switch-to-buffer tar-header-offset start end tar-buffer enable-multibyte-characters tar-buffer-multibyte tarname bufname buffer-read-only read-only-p new-buffer-file-name buffer just-created buffer-undo-list buffer-file-name buffer-file-truename coding-system-for-read set-auto-coding-function detected multibyte coding default-directory] 7 (#$ . 20930) nil]) #@65 In Tar mode, find this entry of the tar file in another window. (defalias 'tar-extract-other-window #[nil "\300\301!\207" [tar-extract t] 2 (#$ . 23072) nil]) #@68 In Tar mode, display this entry of the tar file in another window. (defalias 'tar-display-other-window #[nil "\300\301!\207" [tar-extract display] 2 (#$ . 23237) nil]) #@52 In Tar mode, view the tar file entry on this line. (defalias 'tar-view #[nil "\300\301!\207" [tar-extract view] 2 (#$ . 23411) nil]) #@57 Read a file name with this line's entry as the default. (defalias 'tar-read-file-name #[(&optional prompt) "\204\303\304\305 A\306H!\304\307\310 ! \311$!\312\n!\313\230\204'\314\n!\203>\315\316\n\"\2037\n\306\211\225SO\2028\n\317\312 !Q\n*\207" [prompt default-file target "Copy to: " expand-file-name tar-current-descriptor 0 read-file-name file-name-directory nil file-name-nondirectory "" file-directory-p string-match "/$" "/"] 6 (#$ . 23550)]) #@167 In Tar mode, extract this entry of the tar file into a file on disk. If TO-FILE is not supplied, it is prompted for, defaulting to the name of the current tar-entry. (defalias 'tar-copy #[(&optional to-file) "\306 \211A\211\307H \310H@\feZ\\\211 \\\214~\210\311\n\312\"\313=\203L\311\312\"\313=\203L\313\312=\205FB\312\314\216\315\316\317!\210\312 \317\211\211\320&\210+\321\322\n#. \207" [descriptor tokens name size tar-header-offset start tar-get-descriptor 0 4 find-file-name-handler write-region jka-compr-handler ((set-buffer-multibyte multibyte)) no-conversion set-buffer-multibyte nil t message "Copied tar entry %s to %s" end enable-multibyte-characters multibyte inhibit-file-name-handlers inhibit-file-name-operation to-file coding-system-for-write] 9 (#$ . 24018) (list (tar-read-file-name))]) #@112 In Tar mode, mark this sub-file to be deleted from the tar file. With a prefix argument, mark that many files. (defalias 'tar-flag-deleted #[(p &optional unflag) "\304 \210\305!\306 \nW\2038\307 !\203$\310\311!\210 \203!\312\202\"\313c\210\306W\203.\314\202/\311y\210 T\211\202\n*m?\205@\315u\207" [p i #1=#:--cl-dotimes-temp-- unflag beginning-of-line abs 0 tar-current-descriptor delete-char 1 " " "D" -1 36] 3 (#$ . 24873) "p"]) #@124 In Tar mode, un-mark this sub-file if it is marked to be deleted. With a prefix argument, un-mark that many files forward. (defalias 'tar-unflag #[(p) "\301\302\"\207" [p tar-flag-deleted t] 3 (#$ . 25325) "p"]) #@125 In Tar mode, un-mark this sub-file if it is marked to be deleted. With a prefix argument, un-mark that many files backward. (defalias 'tar-unflag-backwards #[(p) "\301[\302\"\207" [p tar-flag-deleted t] 3 (#$ . 25545) "p"]) #@54 Expunge the tar-entry specified by the current line. (defalias 'tar-expunge-internal #[nil "\306 \211A\211\307H \310H \311H@>A\f\203\"\307\312 \210`\313\210\313u\210`ZZ`|\210)\314\"~\210 eZ\\\315\\\211\316\211 \317\\\320\"\321\"\\\322\\|\210Z\313\211\203\215@\211\211@Z\240\210A\211\204w.\fe}\207" [descriptor tokens name size link-p start tar-current-descriptor 0 4 7 beginning-of-line nil delq -512 ash 511 -9 9 512 tar-parse-info following-descs line-start tar-header-offset data-start data-end data-length desc #1=#:--cl-dolist-temp--] 6 (#$ . 25776)]) #@163 In Tar mode, delete all the archived files flagged for deletion. This does not modify the disk image; you must save the tar file itself for this to be permanent. (defalias 'tar-expunge #[(&optional noconfirm) "\204\n\305\306!\205P\307 \212~\210\310\311!\210eb\210m\2041\312\313!\203+\314 \210 T\202\315y\210\202\316 \210~\210\310\n!\210e\f}\210)\317 !\203K\320\321!\202O\320\322 \"*\207" [noconfirm enable-multibyte-characters multibyte n tar-header-offset y-or-n-p "Expunge files marked for deletion? " 0 set-buffer-multibyte nil looking-at "D" tar-expunge-internal 1 tar-pad-to-blocksize zerop message "Nothing to expunge." "%s files expunged. Be sure to save this buffer."] 3 (#$ . 26406) nil]) #@49 Remove the stars at the beginning of each line. (defalias 'tar-clear-modification-flags #[nil "\212eb\210\301`!W\205g\302=\204\303\304!\210\305c\210\304y\210\202)\207" [tar-header-offset position-bytes 32 delete-char 1 " "] 2 (#$ . 27125) nil]) #@367 Change the user-id associated with this entry in the tar file. If this tar file was written by GNU tar, then you will be able to edit the user id as a string; otherwise, you must edit it as a number. You can force editing as a number by calling this with a prefix arg. This does not modify the disk image; you must save the tar file itself for this to be permanent. (defalias 'tar-chown-entry #[(new-uid) ";\203\303 A\304I\210\305 \306P\"\207\303 A\307I\210\305\n\310\311\"\312\313O\314P\"\207" [new-uid tar-uname-offset tar-uid-offset tar-current-descriptor 10 tar-alter-one-field "" 2 format "%6o" 0 6 " "] 5 (#$ . 27384) (list (let ((tokens (tar-desc-tokens (tar-current-descriptor)))) (if (or current-prefix-arg (not (tar-header-magic tokens))) (let (n) (while (not (numberp (setq n (read-minibuffer "New UID number: " (format "%s" (tar-header-uid tokens))))))) n) (read-string "New UID string: " (tar-header-uname tokens)))))]) #@369 Change the group-id associated with this entry in the tar file. If this tar file was written by GNU tar, then you will be able to edit the group id as a string; otherwise, you must edit it as a number. You can force editing as a number by calling this with a prefix arg. This does not modify the disk image; you must save the tar file itself for this to be permanent. (defalias 'tar-chgrp-entry #[(new-gid) ";\203\303 A\304I\210\305 \306P\"\207\303 A\307I\210\305\n\310\311\"\312\313O\314P\"\207" [new-gid tar-gname-offset tar-gid-offset tar-current-descriptor 11 tar-alter-one-field "" 3 format "%6o" 0 6 " "] 5 (#$ . 28333) (list (let ((tokens (tar-desc-tokens (tar-current-descriptor)))) (if (or current-prefix-arg (not (tar-header-magic tokens))) (let (n) (while (not (numberp (setq n (read-minibuffer "New GID number: " (format "%s" (tar-header-gid tokens))))))) n) (read-string "New GID string: " (tar-header-gname tokens)))))]) #@158 Change the name associated with this entry in the tar file. This does not modify the disk image; you must save the tar file itself for this to be permanent. (defalias 'tar-rename-entry #[(new-name) "\303\230\203\n\304\305!\210G\306V\203\304\307!\210\310 A\311I\210\312!\203+\313 \206)\n\"\314\311\315\316\311\"P\311\316O\"\207" [new-name file-name-coding-system default-file-name-coding-system "" error "zero length name" 98 "name too long" tar-current-descriptor 0 multibyte-string-p encode-coding-string tar-alter-one-field make-string 99] 6 (#$ . 29284) (list (read-string "New name: " (tar-header-name (tar-desc-tokens (tar-current-descriptor)))))]) #@169 Change the protection bits associated with this entry in the tar file. This does not modify the disk image; you must save the tar file itself for this to be permanent. (defalias 'tar-chmod-entry #[(new-mode) "\302 A\303I\210\304 \305\306\"\307\310O\311P\"\207" [new-mode tar-mode-offset tar-current-descriptor 1 tar-alter-one-field format "%6o" 0 6 " "] 5 (#$ . 29957) (list (tar-parse-octal-integer-safe (read-string "New protection (octal): ")))]) (defalias 'tar-alter-one-field #[(data-position new-data-string) "\306 \211A\n\307\216\212\310 \210`\311y\210\f`|\210\312 !\313\261\210\314d!)~\210\315\316!\210@ eZ\\\317\\\211\\b\210``G\\|\210c\210\320\211\321\\{!\\b\210``\322\\|\210\323\324\"c\210\325c\210\326c\210 \327I\210\330\211\321\\{ \325H#.\207" [descriptor tokens enable-multibyte-characters multibyte p tar-header-offset tar-current-descriptor ((byte-code "e}\210\302 !\210\303\304!\207" [tar-header-offset multibyte set-buffer-multibyte tar-next-line 0] 2)) beginning-of-line 1 tar-header-block-summarize "\n" position-bytes set-buffer-multibyte nil -512 tar-header-block-checksum 512 8 format "%6o" 0 32 6 tar-header-block-check-checksum start data-position new-data-string chk tar-chk-offset] 6]) (defalias 'tar-octal-time #[(timeval) "@A@\303\304\305\n\306\"\307\305\310\n\311\"\312\"\310 \313\"\314V\203\"\312\202#\314\"\310 \315\"$*\207" [timeval lobits hibits format "%05o%01o%05o" lsh -2 logior logand 3 1 32768 0 32767] 8]) #@182 In tar subfile mode, save this buffer into its parent tar-file buffer. This doesn't write anything to disk; you must save the parent tar-file buffer to make your changes permanent. (defalias 'tar-subfile-save-buffer #[nil "\306\300!\203\n\204\307\310!\210\306\301!\203 \204\307\311!\210\212p\n \312345\313\312!\210\314 q\210 A6 @76\315H86\316H9\317\2119\320\\\321\"\322\": ;>\211<\204j\307\323!\210\324\216\212~\210\313\312!\2107?eZ\\\211@\317\2119\320\\\321\"\322\"\\A@A|\210@b\210\3255!\210\326@\211\f\\3#\317\211\f\320\\\321\"\322\"B@\f\\b\210\327B\fZ\315\"c\2106\316\fI\210B:ZC=\312D\211E\203\353E@\211D\211@C\\\240\210EA\211E\204\325+@\330Z\211FG\\b\210``\331\\|\210\332\333\f\"c\210\334c\210H\203\"FI\\b\210``\331\\|\210\335\336 !c\210\334c\210\337F@{!JFK\\b\210``\340\\|\210\332\341J\"c\210\315c\210\334c\2106\342JI\210*;G