;ELC   
;;; Compiled by handa@melange.gnu.org on Fri Jul 24 22:01:02 1998
;;; from file /fs/gd/1/gnu/emacs/lisp/tar-mode.el
;;; in Emacs version 20.2.97.10
;;; with bytecomp version 2.48
;;; 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 '(#$ . -700) :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 '(#$ . -1338) :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 '(#$ . -1917) :type 'boolean :group 'tar)
(byte-code "\306\300!\204 \307\300	B\306\302!\204 \307\302	B\306\303!\204  \307\303	B\306\304!\204, \307\304	B\306\305!\2048 \307\305	B\310\300\311\312#\210\310\302\311\312#\210\310\303\311\312#\210\310\304\311\312#\207" [tar-parse-info current-load-list 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 (#$ . 2541)]))
#@73 syntax: (dolist (var-name list-expr &optional return-value) &body body)
(defalias 'tar-dolist '(macro . #[(control &rest body) "@A@AA@\305\306\nDC\307\306\305\310DC\311\f\312\306\313\306DEC\"BBE	F+\207" [control val init var body let _dolist_iterator_ while (car _dolist_iterator_) append setq cdr] 12 (#$ . 3002)]))
#@74 syntax: (dolist (var-name count-expr &optional return-value) &body body)
(defalias 'tar-dotimes '(macro . #[(control &rest body) "@A@AA@\305\306\nD\307DD\310\311\306E\312\f\313\314DEC\"BB	F+\207" [control val n var body let _dotimes_end_ 0 while < append setq 1+] 10 (#$ . 3332)]))
(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 "\306\300	B\307\\\302	B\n\310\\\303	B\310\\\304	B\f\310\\\305	B\311\\\n\312	B\n\311\\\313	B\310\\\f\314	B\fT\315	B\307\\\316	B\310\\\317	B\320\\\321	B\320\\\322	B\310\\\323	B\310\\\324	B\306\207" [tar-name-offset current-load-list tar-mode-offset tar-uid-offset tar-gid-offset tar-size-offset 0 100 8 12 tar-time-offset tar-chk-offset tar-linkp-offset tar-link-offset tar-magic-offset tar-uname-offset 32 tar-gname-offset 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\204	SSSSHSO\211\312\230\206@ \313\230\307\314\315#\203X \n\310\225S^\315 #\203h \f\310\225S^\315#\203z \310\225S^\315#\203\213 \310\225S^\nO\310U\206\235 \316U?\205\245 \316Z\211\204\266 \315\317\"\203\266 \320\321\322	!S#\322!\"S#\322\"#S#\322#$S#\323$%S#\322%S# \fO\211\205\373 O\205O\322&S#\322&'S#&.	\207\324\207" [string tar-mode-offset name-end tar-magic-offset link-end tar-gname-offset 512 nil 0 101 "ustar  " "GNUtar " "[^ ]* " string-match 48 "/$" 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 nulsexp tar-name-offset tar-link-offset tar-uid-offset tar-gid-offset tar-size-offset tar-time-offset tar-chk-offset tar-dmin-offset tar-end-offset] 19 (#$ . 5734)])
(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 _dotimes_end_ 0 error "empty string" 48 55 "`%c' is not an octal digit" 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\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 (#$ . 7692)])
#@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 (#$ . 8013)])
#@59 Modifies the given string to have a valid checksum field.
(defalias 'tar-header-block-recompute-checksum #[(hblock) "\306!\307\310	\"\211G\311\312I\210\313\314I\210\312\fW\2034 \315\fZ\n\fZ\316ZHI\210\fT\211\202 -\207" [hblock chk chk-string l i _dotimes_end_ tar-header-block-checksum format "%6o" 154 0 155 32 153 1] 6 (#$ . 8322)])
(defalias 'tar-clip-time-string #[(time) "\302!\211\303\304O	\305\306OP)\207" [time str current-time-string 4 16 19 24] 5])
#@123 Store `-rw--r--r--' indicating MODE into STRING beginning at START.
MODE should be an integer which is a file mode value.
(defalias 'tar-grind-file-mode #[(mode string start) "	\303\n\304\"\305U\203 \306\202 \307I\210	T\303\n\310\"\305U\203\" \306\202# \311I\210	\312\\\303\n\313\"\305U\2036 \306\2027 \314I\210	\315\\\303\n\316\"\305U\203J \306\202K \307I\210	\317\\\303\n\320\"\305U\203^ \306\202_ \311I\210	\321\\\303\n\322\"\305U\203r \306\202s \314I\210	\323\\\303\n\317\"\305U\203\206 \306\202\207 \307I\210	\324\\\303\n\312\"\305U\203\232 \306\202\233 \311I\210	\322\\\303\n\325\"\305U\203\256 \306\202\257 \314I\210\303\n\326\"\305U\204\301 	\312\\\327I\210\303\n\330\"\305U\204\321 	\321\\\327I\210\207" [string start mode logand 256 0 45 114 128 119 2 64 120 3 32 4 16 5 8 6 7 1 1024 115 2048] 5 (#$ . 8805)])
#@53 Returns 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\3133\3204\3205\32067\203G \321\202H \306834\\S\21195\\6\\\211:\310\\\211;8\\<\322<2G\\\n\203x 	G\315\\\202y \306\\\323\"=\317H>=\306?\203\217 \324\202\220 \323I\210=\307>\325=\204\243 >\306=\203\247 \326\202>\307=\203\262 \327\202>\310=\203\275 \330\202>\311=\203\310 \331\202>\314=\203\323 \332\202>\315=\203\336 \333\202>\316=\203\351 \334\202>\335=\203\364 \324\202>\336=\203\377 \337\202>\340=\203\n\341\202>\342=\205\343I\210\3441=\310#\210.G\306U\203+\3450!\202-.0-G\306U\203>\345/!\202@-/\345!\346\f!4S0G^\306@A@AW\203z=9@Z0\211G@Z\307ZHI\210@T\211@\202X*=9T\347I\2105S/G^\306@A@AW\203\260=9\310\\@\\/@HI\210@T\211@\202\221*6G^\306@A@AW\203\336=:@Z\211G@Z\307ZHI\210@T\211@\202\275*7\203\n\fG\306@A@AW\203	=;@\\\f@HI\210@T\211@\202\355*2G\306@A@AW\2031=<@\\2@HI\210@T\211@\202*\n\307=\204>\n\310=\203\237\311\306@A@AW\203r=<2G\\@\\\307\\\n\307U\203c\350\202d\351@HI\210@T\211@\202F*	G\306@A@AW\203\236=<2G\\@\\\315\\	@HI\210@T\211@\202|*\352<=G\353\354=%\210=.\207" [tar-hblock link-name link-p ck time size 0 1 2 3 10 11 4 5 6 7 8 18 make-string 32 42 nil 45 108 115 99 98 100 112 20 29 77 35 83 38 86 tar-grind-file-mode int-to-string tar-clip-time-string 47 "==>" "-->" put-text-property mouse-face highlight gname uname gid uid mode name left namew groupw sizew tar-mode-show-date datew slash lastdigit datestart namestart string type mod-p i _dotimes_end_] 13 (#$ . 9645)])
#@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\311\312 \313Z]\311\n\314\245]\310	\315\\dX\203y \316	\211\315\\{!\211\317=\204y 	\315\\\306\320	\245\"\210\f\321H\322=\203D 	\315\\\f\323H\211\324W\203V \325\326\f\324H#\210	\fBB\f\321H\204u \324V\203u 	\327\211S\330\"\331\"\\\315\\)\202 \332\333!\210\237\f\317=\203\216 \306\334!\210\202\222 \306\335!\210-\212eb\210\310\211%&\336!''\203\302 '@(\337(A!\340%BB%'A')\202\243 )\341\342%\"c\210\332\343!\210`#\311#}\210\344\310!+\207" [result pos bs bs100 tokens size message "Parsing tar file..." nil 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 tar-header-offset set-buffer-modified-p summaries buffer-read-only _dolist_iterator_ tar-desc] 6 (#$ . 11430)])
#@38 *Local keymap for Tar mode listings.
(defvar tar-mode-map nil (#$ . -12648))
(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" tar-quit "" [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\314\315\316!\210\317\320!\210\307\321!\210\322~\210\323\310!\203L \203L \324}\210\202S \325 \210\326\320!\210\327\330!\207" [require-final-newline revert-buffer-function local-enable-local-variables next-line-add-newlines major-mode mode-name kill-all-local-variables make-local-variable tar-header-offset tar-parse-info nil tar-mode-revert tar-mode "Tar" use-local-map auto-save-mode 0 write-contents-hooks (tar-mode-write-file) boundp 1 tar-summarize-buffer tar-next-line run-hooks tar-mode-hook tar-mode-map] 2 (#$ . 15155)])
#@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 (#$ . 16574) "P"])
(defalias 'tar-mode-revert #[(&optional no-autosave 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\303y\210`)\"8\206 	?\205 \304\305!\207" [tar-parse-info noerror count-lines 0 error "This line does not describe a tar-file entry"] 3 (#$ . 17823)])
(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\n\324U\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" 0 "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)\211@)!q\210\212\3038:\203( \303\202) \3048)\211A@:\203; 	A@@\202> 	A@)b\210\305 \210*\306\3038:\203S \303\202T \3048)\211@)!\210\3038:\203j \303\202k \3048)\211A@:\203} 	A@@\202\200 	A@)b\210\307 \207" [event position window-buffer 2 1 tar-get-descriptor select-window tar-extract] 4 (#$ . 18600) "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\313\314 !9\313\f!\3159\316R:;\2069 	<\317:!=\320>=\204,\321:!=\322>\323\216~\210\212=q\210\324867#\210\310b\210\3259\326\fQ!\f\327\f!?@\205\202 \212@\fd\")A\330\331\332d^\322#BC\211D\203\252 \333D!\247\204\313 \334D\333B!\"D\202\313 \335B!\206\311 \336\337\f\"\211E:\203\306 E@\211E\202\310 E)DD\340=\204\333 \341D!\342=\203\340 \343\320!CC\204\354 \344D\345\"D\346\331dD#\210\347D!\210+\2128q\210F)F\350 \210\351:!\210\352\353!\210\352\354!\2108+\n,<;\355\320!\210\356\331!\210)8q\210)	\203=\357=>\2059\360\"\202Y\361=\203J\362=!\202Y\203U\363=!\202Y\364=!.\207" [other-window-p view-p descriptor tokens name size view tar-get-descriptor 0 4 -1 file-name-nondirectory buffer-file-name " (" ")" get-buffer nil get-buffer-create t ((narrow-to-region 1 tar-header-offset)) insert-buffer-substring expand-file-name "!" 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 set-buffer-multibyte 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 tarname bufname buffer-read-only read-only-p buffer just-created buffer-file-truename set-auto-coding-function enable-multibyte-characters detected multibyte coding file-coding default-directory] 7 (#$ . 19060) 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 (#$ . -20965) 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 (#$ . -21132) nil])
#@53 *In Tar mode, view the tar file entry on this line.
(defalias 'tar-view #[nil "\300\301!\207" [tar-extract view] 2 (#$ . -21308) 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 (#$ . 21449)])
#@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=\203H \312\313\"\314=\203H \314\313=\205B B\313\313#\210)\315\316\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 message "Copied tar entry %s to %s" end inhibit-file-name-handlers inhibit-file-name-operation to-file] 5 (#$ . -21917) (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) "\304y\210\304W\203 [\202 \304	\nW\203A \305!\203- \306\307!\210\203* \310\202+ \311c\210\304W\2037 \312\2028 \307y\210	T\211\202 *m?\205I \313u\207" [p i _dotimes_end_ unflag 0 tar-current-descriptor delete-char 1 " " "D" -1 36] 3 (#$ . -22595) "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 (#$ . -23029) "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 (#$ . -23251) "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\307y\210`\312\210\312u\210`Z`|\210Z*\313\"~\210\\\314\\\211\315\211\f\316\\\317\"\320\"\\\321\\|\210Z\203\222 @\211\211@Z\240\210A)\202w .\f\322}\207" [descriptor tokens line name size link-p tar-current-descriptor 0 4 7 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 _dolist_iterator_ desc] 6 (#$ . 23484)])
#@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 \303\304!\205B \305\212\305b\210m\204) \306\307!\203# \310 \210	T\202 \311y\210\202 \312 \210\311\n}\210)	\305U\203= \313\314!\202A \313\315	\")\207" [noconfirm n tar-header-offset y-or-n-p "Expunge files marked for deletion? " 0 looking-at "D" tar-expunge-internal 1 tar-pad-to-blocksize message "Nothing to expunge." "%s files expunged.  Be sure to save this buffer."] 3 (#$ . -24101) nil])
#@49 Remove the stars at the beginning of each line.
(defalias 'tar-clear-modification-flags #[nil "\212\301b\210`W\205 g\302=\204 \303\301!\210\304c\210\301y\210\202 )\207" [tar-header-offset 1 32 delete-char " "] 2 (#$ . 24723) 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 (#$ . -24965) (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 (#$ . -25916) (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 (#$ . -26869) (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 (#$ . -27419) (list (tar-parse-octal-integer-safe (read-string "New protection (octal): ")))])
(defalias 'tar-alter-one-field #[(data-position new-data-string) "\306 \211A\307\216\212\310y\210`\311y\210\n`|\210\312	!\313\261\210d)~\210@\\\314\\\211\\b\210``G\\|\210c\210\315\f\211\316\\{!\f\\b\210``\317\\|\210\320\321\"c\210\310c\210\322c\210	\323I\210\324\f\211\316\\{	\310H#.\207" [descriptor tokens p tar-header-offset start data-position tar-current-descriptor ((byte-code "\301}\210\302\303!\207" [tar-header-offset 1 tar-next-line 0] 2)) 0 1 tar-header-block-summarize "\n" -513 tar-header-block-checksum 512 8 format "%6o" 32 6 tar-header-block-check-checksum 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\"\310	\315\"$c*\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\312 \n	1q\210A2@32\313H42\314H5\315\2115\316\\\317\"\320\"67>\2118A98\204] \307\321!\210\322\216\212~\2103:\\\323\\\211;\315\2115\316\\\317\"\320\"\\<;<|\210;b\210\3241!\210\325;\211\\\f#\315\211\316\\\317\"\320\"=;\\b\210\326=Z\313\"c\2102\314I\210=6Z>9??\203\327 ?@\211@\211@>\\\240\210?A?)\202\274 *;\327Z\211AB\\b\210``\330\\|\210\331\332\"c\210\333c\210C\203AD\\b\210``\330\\|\210\334\335 !c\210\333c\210\336A;{!EAF\\b\210``\337\\|\210\331\340E\"c\210\313c\210\333c\2102\341EI\210*7G8GZG\342b\210\343G!\210\313y\210`\344\345 :\344\223HIJ\342y\210`I\346\3472\350\"\351\"\210JI|\210\352H!:.\353 \210.	\354\350!\210\355\313!\2101q\210\354\344!\210\356\357\360!\"\210\nK-\350\207" [tar-superior-buffer tar-superior-descriptor buffer-file-coding-system descriptor coding subfile-size boundp error "This buffer has no superior tar file buffer" "This buffer doesn't have an index into its superior tar file!" buffer-size 0 4 ash 511 -9 9 "Can't find this tar file entry in its parent tar file!" ((narrow-to-region 1 tar-header-offset)) -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 1 next-line nil make-marker insert-before-markers tar-header-block-summarize t "\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 subfile tokens start name size size-pad tar-parse-info head following-descs tar-header-offset data-start data-end subfile-size-pad difference _dolist_iterator_ desc header-start tar-size-offset tar-update-datestamp tar-time-offset chk tar-chk-offset position m after p last-coding-system-used] 6 (#$ . 28738) 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 (#$ . 30855)])
(defalias 'tar-mode-write-file #[nil "\302\216\212~\210\303\206 ed	\304\305%\210\306 \210\307\304!\210*\305\207" [tar-header-offset buffer-file-name ((narrow-to-region 1 tar-header-offset)) write-region nil t tar-clear-modification-flags set-buffer-modified-p] 6])
#@30 Kill the current tar buffer.
(defalias 'tar-quit #[nil "\300\301!\207" [kill-buffer nil] 2 (#$ . 31687) nil])
(provide 'tar-mode)
