;ELC   
;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue May 30 19:50:47 1995
;;; from file /gd/gnu/emacs/19.0/lisp/tar-mode.el
;;; emacs version 19.28.92.13.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.28.90")))
    (error "`tar-mode.el' was compiled for Emacs 19.29 or later"))


#@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.
(defvar tar-anal-blocksize 20 (#$ . -480))
#@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.
(defvar tar-update-datestamp nil (#$ . -1050))
#@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.
(defvar tar-mode-show-date nil (#$ . -1582))
(byte-code "ÀÁ!„ ÂÁBÀÄ!„ ÂÄBÀÅ!„  ÂÅBÀÆ!„- ÂÆBÀÇ!„: ÂÇBÈÁÉÊ#ˆÈÄÉÊ#ˆÈÅÉÊ#ˆÈÆÉÊ#‡" [boundp tar-parse-info nil current-load-list tar-header-offset tar-superior-buffer tar-superior-descriptor tar-subfile-mode put permanent-local t] 4)
#@49 A mind-numbingly simple implementation of setf.
(defalias 'tar-setf '(macro . #[(form val) "À	ÂÃ!…	 \"‰9ƒ Å\fE‚^ \f:„$ ÇÈ	\"‚^ \f@É=ƒ8 Ê\fA@Ë\f8F‚^ \f@Ì=ƒI Í\fA@E‚^ \f@Î=ƒZ Ï\fA@E‚^ ÇÐ	\")‡" [macroexpand form boundp byte-compile-macro-environment mform setq val error "can't setf %s" aref aset 2 car setcar cdr setcdr "don't know how to setf %s"] 5 (#$ . 2026)]))
#@73 syntax: (dolist (var-name list-expr &optional return-value) &body body)
(defalias 'tar-dolist '(macro . #[(control &rest body) "@A@AA@ÄÅ\nDCÆÅÄÇDCÈ	ÊÅËÅDEC\"BBE	F+‡" [control val init var let _dolist_iterator_ while (car _dolist_iterator_) append body setq cdr] 12 (#$ . 2407)]))
#@74 syntax: (dolist (var-name count-expr &optional return-value) &body body)
(defalias 'tar-dotimes '(macro . #[(control &rest body) "@A@AA@ÄÅ\nDÆDDÇÈÅEÉ\nËÌDEC\"BB	F+‡" [control val n var let _dotimes_end_ 0 while < append body setq 1+] 10 (#$ . 2701)]))
(defalias 'make-tar-header '(macro . #[(name mode uid git size date ck lt ln magic uname gname devmaj devmin) "À	\n\f	\n\f¯‡" [vector name mode uid git size date ck lt ln magic uname gname devmaj devmin] 15]))
(defalias 'tar-header-name '(macro . #[(x) "À	ÂE‡" [aref x 0] 3]))
(defalias 'tar-header-mode '(macro . #[(x) "À	ÂE‡" [aref x 1] 3]))
(defalias 'tar-header-uid '(macro . #[(x) "À	ÂE‡" [aref x 2] 3]))
(defalias 'tar-header-gid '(macro . #[(x) "À	ÂE‡" [aref x 3] 3]))
(defalias 'tar-header-size '(macro . #[(x) "À	ÂE‡" [aref x 4] 3]))
(defalias 'tar-header-date '(macro . #[(x) "À	ÂE‡" [aref x 5] 3]))
(defalias 'tar-header-checksum '(macro . #[(x) "À	ÂE‡" [aref x 6] 3]))
(defalias 'tar-header-link-type '(macro . #[(x) "À	ÂE‡" [aref x 7] 3]))
(defalias 'tar-header-link-name '(macro . #[(x) "À	ÂE‡" [aref x 8] 3]))
(defalias 'tar-header-magic '(macro . #[(x) "À	ÂE‡" [aref x 9] 3]))
(defalias 'tar-header-uname '(macro . #[(x) "À	ÂE‡" [aref x 10] 3]))
(defalias 'tar-header-gname '(macro . #[(x) "À	ÂE‡" [aref x 11] 3]))
(defalias 'tar-header-dmaj '(macro . #[(x) "À	ÂE‡" [aref x 12] 3]))
(defalias 'tar-header-dmin '(macro . #[(x) "À	ÂE‡" [aref x 13] 3]))
(defalias 'make-tar-desc '(macro . #[(data-start tokens) "À	\nE‡" [cons data-start tokens] 3]))
(defalias 'tar-desc-data-start '(macro . #[(x) "À	D‡" [car x] 2]))
(defalias 'tar-desc-tokens '(macro . #[(x) "À	D‡" [cdr x] 2]))
(byte-code "ÀÁ\nB	Ã\\Ä\nB\fÅ\\Æ\nBÅ\\Ç\nBÅ\\È\nBÉ\\\nÊ\nB\nÉ\\Ë\nBÅ\\\fÌ\nB\fÍ\\Î\nBÃ\\Ï\nBÅ\\Ð\nBÑ\\Ò\nBÑ\\Ó\nBÅ\\Ô\nBÅ\\Õ\nBÀ‡" [0 tar-name-offset current-load-list 100 tar-mode-offset 8 tar-uid-offset tar-gid-offset tar-size-offset 12 tar-time-offset tar-chk-offset tar-linkp-offset 1 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ÁWƒ	 Â‡ÃHÃUƒ ÄHÃU„'SS	S\nS\fHSO‰Ñ˜†E Ò˜ÂÕ×#ƒ_ Ã•S^×#ƒq Ã•S^×#ƒƒ \nÃ•S^\n×	#ƒ• \fÃ•S^\fOÃU†¨ ÚU?…° ÚZ‰„Á ×Û\"ƒÁ ÜÝÞS#Þ S#Þ !S#Þ!\"S#ã\"$S#Þ$S#O‰…\nO…	\fOÞ%S#Þ%&S#&.	‡ç‡" [string 512 nil 0 101 tar-mode-offset name-end tar-magic-offset link-end tar-gname-offset uname-end tar-dmaj-offset gname-end tar-linkp-offset link-p tar-uname-offset magic-str "ustar  " "GNUtar " uname-valid-p name "[^ ]* " nulsexp string-match tar-name-offset tar-link-offset 48 "/$" 5 vector tar-parse-octal-integer tar-uid-offset tar-gid-offset tar-size-offset tar-time-offset tar-parse-octal-long-integer tar-chk-offset tar-dmin-offset tar-end-offset empty-tar-block] 19 (#$ . 4854)])
(defalias 'tar-parse-octal-integer #[(string &optional start end) "„ Á\n„ GHÁUƒ Á‡Á\nWƒ< HÅWƒ+ \f‚4 \fÆ_HÅZ\\T‰‚ \f)‡" [start 0 end string n 48 8] 4])
(defalias 'tar-parse-octal-long-integer #[(string &optional start end) "„ Á\n„ GHÁUƒ Á‰D‡Á‰\nWƒJ HÆYƒC Ç_HÆZ\\\fÇ_ÈÉ\"\\ÊË\"T‰‚ \f*D‡" [start 0 end string hi lo 48 8 ash -16 logand 65535] 5])
(defalias 'tar-parse-octal-integer-safe #[(string) "G‰ÂUƒ ÃÄ!ˆ	ÂWƒ4 HÇW„) HÈVƒ- ÃÉ!ˆT‰‚ +Ê!‡" [string L 0 error "empty string" i _dotimes_end_ 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) "‰Â\\ÄÄÄ	Wƒ\" H\\T‰‚\f ‰ÈWƒ< H\\T‰‚& É\\,‡" [tar-chk-offset chk-field-start 8 chk-field-end 0 sum i string 512 256] 4 (#$ . 6449)])
#@57 Beep and print a warning if the checksum doesn't match.
(defalias 'tar-header-block-check-checksum #[(hblock desired-checksum file-name) "Á\n!U?… Ã ˆÄÅ\"‡" [desired-checksum tar-header-block-checksum hblock beep message "Invalid checksum for file %s!" file-name] 3 (#$ . 6726)])
#@59 Modifies the given string to have a valid checksum field.
(defalias 'tar-header-block-recompute-checksum #[(hblock) "À	!ÃÄ\n\"‰G	ÇÈIˆ	ÉÊIˆÈ\f\fWƒ? 	ÍZZÎZHIˆT‰‚  -	‡" [tar-header-block-checksum hblock chk format "%6o" chk-string l 154 0 155 32 i _dotimes_end_ 153 1] 6 (#$ . 7015)])
(defalias 'tar-clip-time-string #[(time) "À	!‰ÃÄO\nÅÆOP)‡" [current-time-string time str 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) "	ÂÄ\"ÅUƒ Æ‚ ÇIˆ	È\\ÂÉ\"ÅUƒ# Æ‚$ ÊIˆ	Ë\\ÂÌ\"ÅUƒ7 Æ‚8 ÍIˆ	Î\\ÂÏ\"ÅUƒK Æ‚L ÇIˆ	Ð\\ÂÑ\"ÅUƒ_ Æ‚` ÊIˆ	Ò\\ÂÓ\"ÅUƒs Æ‚t ÍIˆ	Ô\\ÂÐ\"ÅUƒ‡ Æ‚ˆ ÇIˆ	Õ\\ÂË\"ÅUƒ› Æ‚œ ÊIˆ	Ó\\ÂÈ\"ÅUƒ¯ Æ‚° ÍIˆÂÖ\"ÅU„Â 	Ë\\×IˆÂØ\"ÅU„Ò 	Ò\\×Iˆ‡" [string start logand mode 256 0 45 114 1 128 119 2 64 120 3 32 4 16 5 8 6 7 1024 115 2048] 5 (#$ . 7433)])
#@53 Returns a line similar to the output of `tar -vtf'.
(defalias 'tar-header-block-summarize #[(tar-hblock &optional mod-p) "ÁHÂHÃHÄHÅHÆHÇHÈHÉHÊHËH\fÆËËËƒL Ü‚M Á\\S‰\\\\‰Ã\\‰ \\!â!Gƒ~ \fGÈ\\‚ Á\\\\ã\"$ÊH%$Á&ƒ– ç‚— ãIˆ$Â%è=„ª %Á=ƒ® é‚%Â=ƒ¹ ê‚%Ã=ƒÄ ë‚%Ä=ƒÏ ì‚%Ç=ƒÚ í‚%È=ƒå î‚%É=ƒð ï‚%ð=ƒû ç‚%ñ=ƒò‚%ó=ƒô‚%õ=…öIˆ÷$Ã#ˆGÁUƒ2ø!‚4GÁUƒEø!‚Gø!ù!SG^Á:;:;Wƒ…$:Z‰G:ZÂZHIˆ:T‰:‚c*$TüIˆSG^Á:;:;Wƒ»$Ã\\:\\:HIˆ:T‰:‚œ*G^Á:;:;Wƒë$:Z‰G:ZÂZHIˆ:T‰:‚É*ƒGÁ:;:;Wƒ$ :\\:HIˆ:T‰:‚û*GÁ:;:;Wƒ@$!:\\:HIˆ:T‰:‚#*Â=„OÃ=ƒ³ÄÁ:;:;Wƒ„$!G:Â\\\\\\ÂUƒuý‚vþ:HIˆ:T‰:‚W*\fGÁ:;:;Wƒ²$!G:È\\\\\\\f:HIˆ:T‰:‚�*ÿ!$G�@ �A $%ˆ$.‡" [tar-hblock 0 1 2 3 10 11 4 5 6 7 8 link-name link-p ck time size gname uname gid uid mode name left namew groupw sizew tar-mode-show-date 18 datew slash lastdigit datestart namestart make-string 32 string type mod-p 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 i _dotimes_end_ 47 "==>" "-->" put-text-property mouse-face highlight] 13 (#$ . 7957)])
#@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 "ÀÁ!ˆÂÄÄÆ ÇZ]ÄÉ¥]\nÂÌ\\dXƒˆ Í‰Ì\\{!‰Î=„ˆ Ì\\ÀÏ\n¥\"ˆÐHÑ=ƒK Ì\\ÒH‰ÔWƒa ÕÖÔH#ˆBBÐH„„ ÔVƒ„ ×‰SØ\"Ù\"Ì\\\\)‚ ÚÛ!ˆŸÎ=ƒž ÀÜ!ˆ‚¢ ÀÝ!ˆ-ŠebˆÂƒÍ @ áâ A!!ˆáã!ˆA)‚® )Úä!ˆ`$Ä$}ˆåÂ!*‡" [message "Parsing tar file..." nil result 1 pos buffer-size 1024 bs 100 bs100 tokens 512 tar-header-block-tokenize empty-tar-block "Parsing tar file...%d%%" 7 20 4 size 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" buffer-read-only _dolist_iterator_ tar-desc insert-string tar-header-block-summarize "\n" tar-header-offset set-buffer-modified-p] 6 (#$ . 9236)])
#@38 *Local keymap for Tar mode listings.
(defvar tar-mode-map nil (#$ . -10183))
(byte-code "„› Á Â!ˆÃÄÅ#ˆÃÆÇ#ˆÃÈÉ#ˆÃÊÉ#ˆÃËÌ#ˆÃÍÌ#ˆÃÎÌ#ˆÃÏÐ#ˆÃÑÒ#ˆÃÓÔ#ˆÃÕÅ#ˆÃÖÅ#ˆÃ×Ø#ˆÃÙÚ#ˆÃÛÚ#ˆÃÜÝ#ˆÃÞß#ˆÃàá#ˆÃâã#ˆÃäå#ˆÃæØ#ˆÃçè#ˆÃéê#ˆÃëì#ˆÃíî#ˆÃïðñð!B#ˆÃòó#ˆÃôõ#ˆÃö÷#ˆÃøù#ˆÃúûñû!B#ˆÃüý#ˆÃþÿ#ˆÃ�@ �A #ˆÃ�B �C ñ�C !B#ˆÃ�D �E #ˆÃ�F �G #ˆÃ�H �I #ˆÃ�J �K #ˆÃ�L �M #ˆÃ�N �O #ˆ�P �Q �R �S #ˆ�P �T �R �S #‡" [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" "" "o" tar-extract-other-window "p" tar-previous-line "" "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-file) [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 "À ˆÁÂ!ˆÁÃ!ˆÁÄ!ˆÅÁÆ!ˆÇÁÈ!ˆÅÁÉ!ˆÅ	ÊÌÎ!ˆÐÑ!ˆÁÒ!ˆÓ~ˆÔÂ!ƒO \nƒO Õ\n}ˆ‚R Ö ˆ×Ø!‡" [kill-all-local-variables make-local-variable tar-header-offset tar-parse-info require-final-newline nil revert-buffer-function tar-mode-revert enable-local-variables next-line-add-newlines tar-mode major-mode "Tar" mode-name use-local-map tar-mode-map auto-save-mode 0 write-contents-hooks (tar-mode-write-file) boundp 1 tar-summarize-buffer run-hooks tar-mode-hook] 2 (#$ . 12046)])
#@229 Minor mode for editing an element of a tar-file.
This mode redefines the save-buffer command to save the current buffer back
into its associated tar-file buffer.  You must save that buffer to actually
save your changes to disk.
(defalias 'tar-subfile-mode #[(p) "ÀÁ!ƒ\n 	„ ÂÃ!ˆÄÅ!ˆ„ ?‚\" Ç!ÈV‰ƒ9 ÄÉ!ˆÊ	ËÌ!ˆÌÎÏ!‡ÐÉ!‡" [boundp tar-superior-buffer error "This buffer is not an element of a tar file" make-local-variable tar-subfile-mode p prefix-numeric-value 0 local-write-file-hooks (tar-subfile-save-buffer) auto-save-mode nil buffer-auto-save-file-name run-hooks tar-subfile-mode-hook kill-local-variable] 3 (#$ . 13293) "P"])
(defalias 'tar-mode-revert #[(&optional no-autosave no-confirm) "ÀÀÃÄ\"ˆ~ˆ)Æ ‡" [nil tar-header-offset revert-buffer-function revert-buffer t no-confirm tar-mode] 3])
(defalias 'tar-next-line #[(p) "yˆm?… 	ƒ Â‚ Ãu‡" [p tar-mode-show-date 54 36] 1 nil "p"])
(defalias 'tar-previous-line #[(p) "À	[!‡" [tar-next-line p] 2 nil "p"])
#@69 Return the tar-descriptor of the current line, or signals an error.
(defalias 'tar-current-descriptor #[(&optional noerror) "ÀeŠÁyˆ`)\"\n8† ?… ÄÅ!‡" [count-lines 0 tar-parse-info noerror error "This line does not describe a tar-file entry"] 3 (#$ . 14275)])
(defalias 'tar-get-descriptor #[nil "À ‰A‰ÃH\nÅH‰ƒO ÇÈÉ=ƒ  Ê‚M Ë=ƒ+ Ì‚M Í=ƒ6 Î‚M Ï=ƒA Ð‚M Ñ=ƒL Ò‚M Ó\"ˆ\fÔUƒY ÇÕ!ˆ	,‡" [tar-current-descriptor descriptor tokens 4 size 7 link-p 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) "ŠÀ	Â	8:ƒ Â‚ Ã	8)‰@)!qˆŠ	Â	8:ƒ( Â‚) Ã	8)‰A@:ƒ; \fA@@‚> \fA@)bˆÅ ˆ*Æ	Â	8:ƒS Â‚T Ã	8)‰@)!ˆ	Â	8:ƒj Â‚k Ã	8)‰A@:ƒ} \fA@@‚€ \fA@)bˆÇ ‡" [window-buffer event 2 1 position tar-get-descriptor select-window tar-extract] 4 (#$ . 14922) "e"])
#@70 In Tar mode, extract this entry of the tar file into its own buffer.
(defalias 'tar-extract #[(&optional other-window-p) "Á=Ã ‰A‰ÆHÈH	\f@\nË\\\\‰\f	\\pÏÐ !Ï!ÒÓR†= \n×!Ù„® Û!ÜÝŽ~ˆŠqˆÞ\f#ˆÆbˆßàQ!á!\"Šqˆ#)#ä ˆå!ˆæç!ˆæè!ˆ'\f(éê!ˆëÙ!ˆ)qˆ)\nƒÃ ì!ˆ…ß í‰.‚ß ï=ƒÐ ð!‚ß ƒÛ ñ!‚ß ò!.‡" [other-window-p view view-p tar-get-descriptor descriptor tokens 0 name 4 size tar-header-offset -1 start end tar-buffer file-name-nondirectory buffer-file-name tarname " (" ")" bufname buffer-read-only read-only-p get-buffer buffer nil just-created get-buffer-create t ((narrow-to-region 1 tar-header-offset)) insert-buffer-substring expand-file-name ":" abbreviate-file-name buffer-file-truename default-directory normal-mode rename-buffer make-local-variable tar-superior-buffer tar-superior-descriptor tar-subfile-mode 1 set-buffer-modified-p view-buffer kill-buffer view-exit-action display display-buffer switch-to-buffer-other-window switch-to-buffer] 5 (#$ . 15263) nil])
#@66 *In Tar mode, find this entry of the tar file in another window.
(defalias 'tar-extract-other-window #[nil "ÀÁ!‡" [tar-extract t] 2 (#$ . -16310) nil])
#@69 *In Tar mode, display this entry of the tar file in another window.
(defalias 'tar-display-other-window #[nil "ÀÁ!‡" [tar-extract display] 2 (#$ . -16468) nil])
#@53 *In Tar mode, view the tar file entry on this line.
(defalias 'tar-view #[nil "ÀÁ!‡" [tar-extract view] 2 (#$ . -16635) nil])
#@57 Read a file name with this line's entry as the default.
(defalias 'tar-read-file-name #[(&optional prompt) "„ ÁÂÃ AÄH!ÂÆÇ!È$!	Ê	!Ë˜„* Ì	!ƒE ÍÎ	\"ƒ< 	Ä‰•SO‚> 	ÏÊ!Q		*‡" [prompt "Copy to: " expand-file-name tar-current-descriptor 0 default-file read-file-name file-name-directory nil target file-name-nondirectory "" file-directory-p string-match "/$" "/"] 6 (#$ . 16767)])
#@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) "À ‰A‰ÃH\nÅH	@È\\\\‰	\\\nŒ~ˆË	\n\f#ˆ)ÍÎ\f\f#.‡" [tar-get-descriptor descriptor tokens 0 name 4 size tar-header-offset -1 start end write-region to-file message "Copied tar entry %s to %s"] 5 (#$ . -17162) (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) "Àyˆ	ÀWƒ 	[‚ 	À\nWƒA Ä!ƒ- ÆÇ!ˆƒ* È‚+ Écˆ	ÀWƒ7 Ê‚8 Çyˆ\nT‰‚ *m?…I Ëu‡" [0 p i _dotimes_end_ tar-current-descriptor unflag delete-char 1 " " "D" -1 36] 3 (#$ . -17629) "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) "À	Â\"‡" [tar-flag-deleted p t] 3 (#$ . -17980) "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) "À	[Â\"‡" [tar-flag-deleted p t] 3 (#$ . -18193) "p"])
#@54 Expunge the tar-entry specified by the current line.
(defalias 'tar-expunge-internal #[nil "À ‰A	@\nÄH\nÆH\nÈH		@\n	>A\f	ƒ* ÄÄyˆ`ÎˆÎuˆ`Z`|ˆZ*Ñ	\"~ˆ\nÒ\\\\‰Ô‰Õ\\Ö\"×\"Ø\\\\|ˆZ\fƒ— @‰‰@Z ˆA)‚| .\fÝ}‡" [tar-current-descriptor descriptor tokens line 0 name 4 size 7 link-p start tar-parse-info following-descs line-start nil line-len tar-header-offset delq -513 data-start ash 511 -9 9 512 data-end data-length _dolist_iterator_ desc 1] 6 (#$ . 18417)])
#@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) "„\n ÁÂ!…C ÃŠÃbˆm„) ÅÆ!ƒ# Ç ˆ\fT‚ Èyˆ‚ É ˆÈ\n}ˆ)\fÃUƒ> ËÌ!‚B ËÍ\f\")‡" [noconfirm y-or-n-p "Expunge files marked for deletion? " 0 n looking-at "D" tar-expunge-internal 1 tar-pad-to-blocksize tar-header-offset message "Nothing to expunge." "%s files expunged.  Be sure to save this buffer."] 3 (#$ . -18943) nil])
#@49 Remove the stars at the beginning of each line.
(defalias 'tar-clear-modification-flags #[nil "ŠÀbˆ`	W… gÂ=„ ÃÀ!ˆÄcˆÀyˆ‚ )‡" [1 tar-header-offset 32 delete-char " "] 2 (#$ . 19479) 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) ";ƒ Á AÂIˆÃ\fÅP\"‡Á AÆIˆÃÈÉ\"ÊËOÌP\"‡" [new-uid tar-current-descriptor 10 tar-alter-one-field tar-uname-offset " " 2 tar-uid-offset format "%6o" 0 6 "  "] 5 (#$ . -19676) (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) ";ƒ Á AÂIˆÃ\fÅP\"‡Á AÆIˆÃÈÉ\"ÊËOÌP\"‡" [new-gid tar-current-descriptor 11 tar-alter-one-field tar-gname-offset " " 3 tar-gid-offset format "%6o" 0 6 "  "] 5 (#$ . -20577) (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) "Á˜ƒ\n ÂÃ!ˆGÄVƒ ÂÅ!ˆÆ AÇIˆÈÇÉÊÇ\"PÇÊO\"‡" [new-name "" error "zero length name" 98 "name too long" tar-current-descriptor 0 tar-alter-one-field make-string 99] 6 (#$ . -21480) (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) "À AÁ\nIˆÃ\fÅÆ\n\"ÇÈOÉP\"‡" [tar-current-descriptor 1 new-mode tar-alter-one-field tar-mode-offset format "%6o" 0 6 "  "] 5 (#$ . -21964) (list (tar-parse-octal-integer-safe (read-string "New protection (octal): ")))])
(defalias 'tar-alter-one-field #[(data-position new-data-string) "À ‰AÃŽŠÄyˆ`Æyˆ`|ˆÇ\n!È±ˆd	)~ˆ	@	Ê\\\\‰\f\\bˆ``G\\|ˆcˆÎ‰Ï\\{!\\bˆ``Ò\\|ˆÓÔ\"cˆÄcˆÕcˆ\nÖIˆ×‰Ï\\{\nÄH#.‡" [tar-current-descriptor descriptor tokens ((narrow-to-region 1 tar-header-offset)) 0 p 1 tar-header-block-summarize "\n" tar-header-offset -513 start data-position new-data-string tar-header-block-checksum 512 chk tar-chk-offset 8 format "%6o" 32 6 tar-header-block-check-checksum] 6])
(defalias 'tar-octal-time #[(timeval) "@A@ÃÄÅ\nÆ\"ÇÅÈ\nÉ\"Ê\"È	Ë\"ÌV\"È	Í\"$c*‡" [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 "ÀÁ!ƒ\n 	„ ÂÃ!ˆÀÄ!ƒ \f„ ÂÅ!ˆŠpÆ \f		qˆA\n@\nÌH\nÎHÐ‰Ñ\\Ò\"Ó\">‰A„` ÂØ!ˆÙŽŠ~ˆÛ\\\\‰Ð‰Ñ\\Ò\"Ó\"\\|ˆbˆÞ	!ˆÐ‰Ñ\\Ò\"Ó\"\\bˆàZÌ\"cˆ\nÎIˆZ!\"\"ƒÕ \"@‰#‰@!\\ ˆ\"A\")‚º *äZ‰%&\\bˆ``ç\\|ˆèé\"cˆêcˆ+ƒ%,\\bˆ``ç\\|ˆíî !cˆêcˆï%{!0%1\\bˆ``ò\\|ˆèó0\"cˆÌcˆêcˆ\nô0Iˆ*GGZ5öbˆ÷5!ˆÌyˆ`øù ø“:;<öyˆ`;ýþ\nÿ\"�@ \"ˆ<;|ˆ�A :!.�B  ˆ.	�C ÿ!ˆ	qˆ�C ø!ˆ�D �E �F 	!\"ˆ,ÿ‡" [boundp tar-superior-buffer error "This buffer has no superior tar file buffer" tar-superior-descriptor "This buffer doesn't have an index into its superior tar file!" buffer-size descriptor subfile-size subfile tokens start 0 name 4 size ash 511 -9 9 size-pad tar-parse-info head following-descs "Can't find this tar file entry in its parent tar file!" ((narrow-to-region 1 tar-header-offset)) tar-header-offset -1 data-start data-end insert-buffer subfile-size-pad make-string difference _dolist_iterator_ desc 512 header-start tar-size-offset 12 format "%11o" 32 tar-update-datestamp tar-time-offset tar-octal-time current-time tar-header-block-checksum chk tar-chk-offset 8 "%6o" 6 position 1 next-line nil make-marker m after p insert-before-markers tar-header-block-summarize t "\n" marker-position tar-pad-to-blocksize set-buffer-modified-p message "Saved into tar-buffer `%s'.  Be sure to save that buffer!" buffer-name] 6 (#$ . 23059) 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 "??… ~ˆ	GS	8‰@\nA‰ÅH‰ƒ! Ç‚$ \fÈH		\\\nËÌ\"‰‰\nS¥_\\Ï†G Ç\n\\bˆÒ T†U Ç\\Vƒl †b Ç\\Ò T|‚} Ó†s Ç\\Ò TZÇ\"c.	‡" [tar-anal-blocksize tar-parse-info last-desc start tokens 7 link-p 0 4 size data-end ash 9 bbytes pad-to t inhibit-read-only tar-header-offset buffer-size make-string] 5 (#$ . 24699)])
(defalias 'tar-mode-write-file #[nil "ÀŽŠ~ˆÁ\ndÄÅ%ˆÆ ˆ*Å‡" [((narrow-to-region 1 tar-header-offset)) write-region tar-header-offset buffer-file-name nil t tar-clear-modification-flags] 6])
(provide (quote tar-mode))
