;ELC ;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:52:11 2003 ;;; from file /home/pot/gnu/emacs-pretest.new/lisp/tar-mode.el ;;; in Emacs version 21.3 ;;; with bytecomp version 2.85.4.1 ;;; 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) #@521 *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 '(#$ . -710) :type '(choice integer (const nil)) :group 'tar) #@479 *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 '(#$ . -1348) :type 'boolean :group 'tar) #@144 *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 '(#$ . -1927) :type 'boolean :group 'tar) (byte-code "\301B\306\301!\204\f\307\302B\306\302!\204\307\303B\306\303!\204$\307\304B\306\304!\2040\307\305B\306\305!\204<\307\310\301\311\312#\210\310\302\311\312#\210\310\303\311\312#\210\310\304\311\312#\207" [current-load-list tar-parse-info tar-header-offset tar-superior-buffer tar-superior-descriptor tar-subfile-mode boundp nil 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 (#$ . 2552)])) (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\302B \307\\\303B\n\310\\\304B \310\\\305B\f\310\\\311B \312\\ \313B \312\\ \314B \310\\\f\315B\fT \316B \307\\\317B\310\\\320B\321\\\322B\321\\\323B\310\\\324B\310\\\301\207" [current-load-list tar-name-offset tar-mode-offset tar-uid-offset tar-gid-offset tar-size-offset 0 100 8 tar-time-offset 12 tar-chk-offset tar-linkp-offset tar-link-offset tar-magic-offset tar-uname-offset tar-gname-offset 32 tar-dmaj-offset tar-dmin-offset tar-end-offset] 2) #@129 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\2047 S S SSH SO\211\312\230\206@\313\230\307\307 \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\316\317%\206\277\320\"\317 %\206\313\320\" \204\336\315\321\"\203\336\322\323\324 &#\324&'#\324'(#\324()#\325)*#\324*# \211\205O\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 tar-uid-offset tar-gid-offset tar-size-offset tar-time-offset tar-chk-offset tar-dmin-offset tar-end-offset] 19 (#$ . 5115)]) (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) "G\211\304U\203 \305\306!\210 \304\n W\2032\nH\307W\204'\nH\310V\203+\305\311!\210\nT\211\202+\312!\207" [string L i #1=#:--dotimes-temp--97269 0 error "empty string" 48 55 "`%c' is not an octal digit" tar-parse-octal-integer] 4]) #@62 Compute and return a tar-acceptable checksum for this block. (defalias 'tar-header-block-checksum #[(string) "\211\306\\\307\307\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 (#$ . 7245)]) #@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 (#$ . 7566)]) (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 (#$ . 8007)]) #@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\317H\320H./0123\321\3224\203=\323\202>\324\n\325=\204J\n\306=\203N\326\202\263\n\307=\203X\327\202\263\n\310=\203b\330\202\263\n\311=\203l\331\202\263\n\314=\203v\332\202\263\n\315=\203\200\333\202\263\n\316=\203\212\334\202\263\n\335=\203\224\323\202\263\n\336=\203\236\337\202\263\n\340=\203\250\341\202\263\n\342=\203\262\343\202\263\324\3442!/G\306U\203\3041\202\306/.G\306U\203\3230\202\325. 5\203\341\345\f!\202\342\346\3473\350\351\352\353%\n\307=\204\366\n\310=\203\n\307U\203\354\202\355 P\202\346&\n. \207" [tar-hblock link-name type ck time size 0 1 2 3 10 11 4 5 6 7 8 format "%c%c%s%8s/%-8s%7s%s %s%s" 42 32 nil 45 108 115 99 98 100 112 20 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" " ==> " " --> " gname uname gid uid mode name mod-p tar-mode-show-date] 15 (#$ . 8668)]) #@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!\210\310\311!\210\307\312\312\313 \314Z]\312\n\315\245]\307 \316\\dX\203}\317 \211\316\\{!\211\320=\204} \316\\\310\321 \245\"\210\f\322H\323=\203H \316\\\f\324H\211\325W\203Z\326\327\f\325H #\210 \fBB\f\322H\204y \325V\203y \330\211 S\331\"\332\"\\\316\\)\202\333\334!\210\237\f\320=\203\222\310\335!\210\202\226\310\336!\210-\212eb\210\307\211)*\337!\307+\211,\203\310,@+\340+A!\341)BB),A\211,\204\256*\342\343)\"-\344-!\203\333\306\345!\210-c\210)\333\346!\210`&\312&}\210.\203\367\347&!&\350\307!+\207" [result pos bs bs100 tokens size set-buffer-multibyte nil message "Parsing tar file..." 1 buffer-size 1024 100 512 tar-header-block-tokenize empty-tar-block "Parsing tar file...%d%%" 7 20 4 0 error "%s has size %s - corrupted" ash -9 9 make-local-variable tar-parse-info "Parsing tar file...done" "Warning: premature EOF parsing tar file" reverse tar-header-block-summarize "\n" apply concat multibyte-string-p t tar-header-offset position-bytes set-buffer-modified-p summaries buffer-read-only tar-desc #1=#:--dolist-temp--97270 total-summaries enable-multibyte-characters] 6 (#$ . 9803)]) #@38 *Local keymap for Tar mode listings. (defvar tar-mode-map nil (#$ . -11207)) (byte-code "\204\255\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\201T\201U\201V\201W#\210\201T\201X\201V\201W#\207" [tar-mode-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) put tar-mode mode-class special tar-subfile-mode] 6) #@739 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 Control-x Control-s, 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} (defalias 'tar-mode #[nil "\306 \210\307\310!\210\307\311!\210\307\300!\210\312\307\301!\210\313\307\302!\210\312\307\303!\210\312\307\304!\210\314\315\316\317!\210\320\321!\210\307\322!\210\323~\210\324\310!\203U\203U\325\326!}\210\202\\\327 \210\330\321!\210\331\332!\207" [require-final-newline revert-buffer-function local-enable-local-variables next-line-add-newlines file-precious-flag major-mode kill-all-local-variables make-local-variable tar-header-offset tar-parse-info nil tar-mode-revert t tar-mode "Tar" use-local-map auto-save-mode 0 write-contents-hooks (tar-mode-write-file) boundp 1 byte-to-position tar-summarize-buffer tar-next-line run-hooks tar-mode-hook mode-name tar-mode-map] 3 (#$ . 13717)]) #@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) "\305\300!\203\n\204\306\307!\210\310\302!\210 \204\n?\202 \311 !\312V\211\2035\310\303!\210\313\314\315!\210\316\317\320!\207\321\303!\207" [tar-superior-buffer p tar-subfile-mode local-write-file-hooks buffer-auto-save-file-name boundp error "This buffer is not an element of a tar file" make-local-variable prefix-numeric-value 0 (tar-subfile-save-buffer) auto-save-mode -1 nil run-hooks tar-subfile-mode-hook kill-local-variable] 3 (#$ . 15199) "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]) (defalias 'tar-next-line #[(p) "y\210m?\205 \203\302\202\303u\207" [p tar-mode-show-date 54 36] 1 nil "p"]) (defalias 'tar-previous-line #[(p) "\301[!\207" [p tar-next-line] 2 nil "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 (#$ . 16449)]) (defalias 'tar-get-descriptor #[nil "\304 \211A\211\305H \306H\211\203I\307\310 \311=\203\312\202G \313=\203(\314\202G \315=\2032\316\202G \317=\203<\320\202G \321=\203F\322\202G\323\"\210\324\n!\203S\307\325!\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" 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\3038:\203\303\202\3048)\305 8)!q\210\212\3038:\203)\303\202*\3048)\304 8:\203<\304 8@\202?\304 8)b\210\306 \210*\307\3038:\203T\303\202U\3048)\305 8)!\210\3038:\203l\303\202m\3048)\304 8:\203\304 8@\202\202\304 8)b\210\310 \207" [event position window-buffer 2 1 0 tar-get-descriptor select-window tar-extract] 3 (#$ . 17246) "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@5\\\312\\\2116 \\7p89:\313 ;\314\f!\315;\316R<=\206; >\317;\320\fQ!?\321?!@\322A@\204\\\323=\355\322!\210\356\332!\210)8q\210) \203m\357@A\205i\360\"\202\211\361=\203z\362@!\202\211\203\205\363@!\202\211\364@!.\207" [other-window-p view-p descriptor tokens name size view tar-get-descriptor 0 4 -1 buffer-name file-name-nondirectory " (" ")" expand-file-name "!" get-file-buffer nil generate-new-buffer t ((byte-code "\302}\210\303 !\207" [tar-header-offset tar-buffer-multibyte 1 set-buffer-multibyte] 2)) set-buffer-multibyte insert-buffer-substring abbreviate-file-name detect-coding-region 1 16384 coding-system-eol-type coding-system-change-eol-conversion find-new-buffer-file-coding-system find-operation-coding-system insert-file-contents 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 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-file-name buffer-file-truename coding-system-for-read set-auto-coding-function detected multibyte coding file-coding default-directory] 7 (#$ . 17722) nil]) #@66 *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 (#$ . -19870) nil]) #@69 *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 (#$ . -20037) nil]) #@53 *In Tar mode, view the tar file entry on this line. (defalias 'tar-view #[nil "\300\301!\207" [tar-extract view] 2 (#$ . -20213) 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 (#$ . 20354)]) #@168 *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@\f\\\311\\\211 \\\214~\210\312\n\313\"\314=\203L\312\313\"\314=\203L\314\313=\205FB\313\315\216\316\317\320!\210\313 \320\211\211\321&\210+\322\323\n#. \207" [descriptor tokens name size tar-header-offset start tar-get-descriptor 0 4 -1 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 (#$ . -20822) (list (tar-read-file-name))]) #@113 *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\305W\203[\202\305 \nW\203A\306 !\203-\307\310!\210 \203*\311\202+\312c\210\305W\2037\313\2028\310y\210 T\211\202*m?\205I\314u\207" [p i #1=#:--dotimes-temp--97271 unflag beginning-of-line 0 tar-current-descriptor delete-char 1 " " "D" -1 36] 3 (#$ . -21686) "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 forward. (defalias 'tar-unflag #[(p) "\301\302\"\207" [p tar-flag-deleted t] 3 (#$ . -22151) "p"]) #@126 *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 (#$ . -22373) "p"]) #@54 Expunge the tar-entry specified by the current line. (defalias 'tar-expunge-internal #[nil "\306 \211A@ \307H \310H \311H@>A \203&\307\312 \210`\313\210\313u\210`Z`|\210Z*\314\"~\210\\\315\\\211\316\211\f\317\\\320\"\321\"\\\322\\|\210Z\313\211\203\224@\211\211@Z\240\210A\211\204~. \323}\207" [descriptor tokens line name size link-p tar-current-descriptor 0 4 7 beginning-of-line nil delq -513 ash 511 -9 9 512 1 start tar-parse-info following-descs line-start line-len tar-header-offset data-start data-end data-length desc #1=#:--dolist-temp--97272] 6 (#$ . 22606)]) #@164 *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!\205L\307 \310\311!\210\212eb\210m\204/\312\313!\203)\314 \210 T\202\315y\210\202\316 \210\315\f}\210)\310\n!\210\317 !\203G\320\321!\202K\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 (#$ . -23259) 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 (#$ . 23973) nil]) #@368 *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 (#$ . -24232) (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)))))]) #@370 *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 (#$ . -25183) (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)))))]) #@159 *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) "\301\230\203\n\302\303!\210G\304V\203\302\305!\210\306 A\307I\210\310\307\311\312\307\"P\307\312O\"\207" [new-name "" error "zero length name" 98 "name too long" tar-current-descriptor 0 tar-alter-one-field make-string 99] 6 (#$ . -26136) (list (read-string "New name: " (tar-header-name (tar-desc-tokens (tar-current-descriptor)))))]) #@170 *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 (#$ . -26686) (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@ \\\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 "\302}\210\303 !\210\304\305!\207" [tar-header-offset multibyte 1 set-buffer-multibyte tar-next-line 0] 2)) beginning-of-line 1 tar-header-block-summarize "\n" position-bytes set-buffer-multibyte nil -513 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 \312567\313\312!\210\314 q\210 A8 @98\315H:8\316H;\317\211;\320\\\321\"\322\"< =>\211>A?\n@>\204j\307\323!\210\324\216\212~\210\313\312!\2109A\\\325\\\211B\317\211;\320\\\321\"\322\"\\CBC|\210Bb\210\3267!\210\327B\211\f\\5#\317\211\f\320\\\321\"\322\"DB\f\\b\210\330D\fZ\315\"c\2108\316\fI\210DGZNeb\210\344N!\210\345 \210`\312\346 A\312\223OPQ\347y\210`P\3508\351\"R\352R!\203\216\353\354R!\355\"\210\202\224\353R\355\"\210)QP|\210\356O!A.\357 \210.\n\360\351!\210\361\315!\2107q\210\3136!\210\360\312!\210\362\363\364!\"\210 S.\351\207" [tar-superior-buffer tar-superior-descriptor enable-multibyte-characters buffer-file-coding-system subfile-size descriptor boundp error "This buffer has no superior tar file buffer" "This buffer doesn't have an index into its superior tar file!" nil set-buffer-multibyte buffer-size 0 4 ash 511 -9 9 "Can't find this tar file entry in its parent tar file!" ((byte-code "\302}\210\303 !\207" [tar-header-offset tar-buffer-multibyte 1 set-buffer-multibyte] 2)) -1 insert-buffer encode-coding-region make-string 512 12 format "%11o" 32 tar-octal-time current-time tar-header-block-checksum 8 "%6o" 6 next-line beginning-of-line make-marker 1 tar-header-block-summarize t multibyte-string-p insert-before-markers string-as-unibyte "\n" marker-position tar-pad-to-blocksize set-buffer-modified-p tar-next-line message "Saved into tar-buffer `%s'. Be sure to save that buffer!" buffer-name coding subfile-multibyte subfile tokens start name size size-pad tar-parse-info head following-descs tar-buffer-multibyte tar-header-offset data-start data-end subfile-size-pad difference desc #1=#:--dolist-temp--97273 header-start tar-size-offset tar-update-datestamp tar-time-offset chk tar-chk-offset position m after p line last-coding-system-used] 6 (#$ . 28185) nil]) #@100 If we are being anal about tar file blocksizes, fix up the current buffer. Leaves the region wide. (defalias 'tar-pad-to-blocksize #[nil "\205|~\210 GS 8\211@\nA\211\306H\211\203\307\202!\f\310H \\\311\312\"\211\211S\245_\\\313\206D\307\\b\210\314 T\206R\307\\V\203i\206_\307\\\314 T|\202z\315\206p\307\\\314 TZ\307\"c. \207" [tar-anal-blocksize tar-parse-info last-desc start tokens link-p 7 0 4 ash 9 t buffer-size make-string size data-end bbytes pad-to inhibit-read-only tar-header-offset] 5 (#$ . 30637)]) (defalias 'tar-mode-write-file #[nil "\303\216\212~\210\304\305 \203\306 !\202ed\n\307\310%\210)\311 \210\312\307!\210*\310\207" [coding-system-for-write tar-header-offset buffer-file-name ((byte-code "\301\302!}\207" [tar-header-offset 1 byte-to-position] 3)) no-conversion write-region byte-to-position nil t tar-clear-modification-flags set-buffer-modified-p] 6]) (provide 'tar-mode)