;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 "\301B\306\301!\204\f \307\302B\306\302!\204 \307\303B\306\303!\204$ \307\304B\306\304!\2040 \307\305B\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	 	\"\2119\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) "\301D\207" [x car] 2]))
(defalias 'tar-desc-tokens '(macro . #[(x) "\301D\207" [x cdr] 2]))
(byte-code "\301B\306\302B	\307\\\303B\n\310\\\304B\310\\\305B\f\310\\\311B\312\\	\313B	\312\\\314B\310\\\f\315B\fT\316B\307\\\317B\310\\\320B\321\\\322B\321\\\323B\310\\\324B\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SSH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\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 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\nH\304U\203 \304\207\304	W\203< \nH\305W\203+ \2024 \306_\nH\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\nH\305U\203 \305\211D\207\305\211	W\203J \nH\306Y\203C \f\307_\nH\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./0123\321\3224\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\3442!/G\306U\203\304 1\202\306 /.G\306U\203\323 0\202\325 .5\203\341 \345\f!\202\342 \346\3473\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	\fBB\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 \211A\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\3038:\203 \303\202 \3048)\305	8)!q\210\212\3038:\203) \303\202* \3048)\304	8:\203< \304	8@\202? \304	8)b\210\306 \210*\307\3038:\203T \303\202U \3048)\305	8)!\210\3038:\203l \303\202m \3048)\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 \211A\211\310H\311H\n@5\\\312\\\2116\\7p89:\313 ;\314\f!\315;\316R<=\206; 	>\317;\320\fQ!?\321?!@\322A@\204\\\323<!@\313@!<\324A\325\216~\210\326\322!\210\212@q\2109\203\211 \326\322!\210\327867#\210\326\324!\210\202\222 \327867#\210eb\210?B\330B!CD\206\262 E\205\262 \212E\fd`Z\")9\331\332\333d^\324#FG\211H\203\332 \334H!\247\204\373 \335H\334F!\"H\202\373 \336F!\206\371 \337\340B\"\211I:\203\366 I@\211I\202\370 I)HH\341=\204\342H!\343=\203\326\322!GG\204\344H\345\"H\346\332dH#\210\347H!\210+\2128q\210J)J\350 \210\351<!\210\352\353!\210\352\354!\2108+\n,>=\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 \211A\211\307H	\310H@\f\\\311\\\211\\\214~\210\312\n\313\"\314=\203L \312\313\"\314=\203L \314\313=\205F B\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 \211A@	\307H	\310H	\311H@>A\203& \307\312 \210`\313\210\313u\210`Z`|\210Z*\314\"~\210\\\315\\\211\316\211\f\317\\\320\"\321\"\\\322\\|\210Z\313\211\203\224 @\211\211@Z\240\210A\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\205 g\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\304I\210\305	\306P\"\207\303 A\307I\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\304I\210\305	\306P\"\207\303 A\307I\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!\210G\304V\203 \302\305!\210\306 A\307I\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\303I\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 \211A\n\307\216\212\310 \210`\311y\210\f`|\210\312	!\313\261\210\314d!)~\210\315\316!\210@\\\317\\\211\\b\210``G\\|\210c\210\320\211\321\\{!\\b\210``\322\\|\210\323\324\"c\210\325c\210\326c\210	\327I\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	\312567\313\312!\210\314 q\210A8@98\315H:8\316H;\317\211;\320\\\321\"\322\"<=>\211>A?\n@>\204j \307\323!\210\324\216\212~\210\313\312!\2109A\\\325\\\211B\317\211;\320\\\321\"\322\"\\CBC|\210Bb\210\3267!\210\327B\211\f\\5#\317\211\f\320\\\321\"\322\"DB\f\\b\210\330D\fZ\315\"c\2108\316\fI\210D<ZE?\312F\211G\203\353 G@\211F\211@E\\\240\210GA\211G\204\325 +B\331Z\211HI\\b\210``\332\\|\210\333\334\f\"c\210\335c\210J\203\"HK\\b\210``\332\\|\210\336\337 !c\210\335c\210\340HB{!LHM\\b\210``\341\\|\210\333\342L\"c\210\315c\210\335c\2108\343LI\210*=G>GZNeb\210\344N!\210\345 \210`\312\346 A\312\223OPQ\347y\210`P\3508\351\"R\352R!\203\216\353\354R!\355\"\210\202\224\353R\355\"\210)QP|\210\356O!A.\357 \210.\n\360\351!\210\361\315!\2107q\210\3136!\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\211S\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	!\202 ed\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)
