File: arc-mode.el.html
NAMING: "arc" is short for "archive" and does not refer specifically to files whose name end in ".arc"
This code does not decode any files internally, although it does
understand the directory level of the archives. For this reason,
you should expect this code to need more fiddling than tar-mode.el
(although it at present has fewer bugs :-) In particular, I have
not tested this under MS-DOS myself.
-------------------------------------
INTERACTION: arc-mode.el should play together with
* ange-ftp.el: Remote archives (i.e., ones that ange-ftp has brought
to you) are handled by doing all updates on a local
copy. When you make changes to a remote file the
changes will first take effect when the archive buffer
is saved. You will be warned about this.
* dos-fns.el: You get automatic ^M^J <--> ^J conversion.
arc-mode.el does not work well with crypt++.el; for the archives as
such this could be fixed (but wouldn't be useful) by declaring such
archives to be "remote". For the members this is a general Emacs
problem that 19.29's file formats may fix.
-------------------------------------
ARCHIVE TYPES: Currently only the archives below are handled, but the
structure for handling just about anything is in place.
Arc Lzh Zip Zoo Rar 7z Ar Squashfs
---------------------------------------------------------------
View listing Intern Intern Intern Intern Y Y Y Y
Extract member Y Y Y Y Y Y Y Y
Save changed member Y Y Y Y N Y Y N
Add new member N N N N N N N N
Delete member Y Y Y Y N Y N N
Rename member Y Y N N N N N N
Chmod - Y Y - N N N N
Chown - Y - - N N N N
Chgrp - Y - - N N N N
Special thanks to Bill Brodie <wbrodie@panix.com> for very useful tips on the first released version of this package.
This code is partly based on tar-mode.el from Emacs.
-------------------------------------
ARCHIVE STRUCTURES:
(This is mostly for myself.)
ARC A series of (header,file). No interactions among members.
LZH A series of (header,file). Headers are checksummed. No
interaction among members.
Headers come in three flavors called level 0, 1 and 2 headers.
Level 2 header is free of DOS specific restrictions and most
commonly used. Also level 1 and 2 headers consist of base
and extension headers. For more details see
http://homepage1.nifty.com/dangan/en/Content/Program/Java/jLHA/Notes/Notes.html
http://www.osirusoft.com/joejared/lzhformat.html
ZIP A series of (lheader,fil) followed by a "central directory"
which is a series of (cheader) followed by an end-of-
central-dir record possibly followed by junk. The e-o-c-d
links to c-d. cheaders link to lheaders which are basically
cut-down versions of the cheaders.
ZOO An archive header followed by a series of (header,file).
Each member header points to the next. The archive is
terminated by a bogus header with a zero next link.
-------------------------------------
HOOKS: foo means one of the supported archive types.
archive-mode-hook archive-foo-mode-hook archive-extract-hook
Defined variables (38)
archive-7z-expunge | Program and its options to run in order to delete 7z file members. |
archive-7z-extract | Program and its options to run in order to extract a 7z file member. |
archive-7z-update | Program and its options to run in order to update a 7z file member. |
archive-alternate-display | Non-nil when alternate information is shown. |
archive-alternate-hidden-columns | Columns hidden when ‘archive-alternate-display’ is used. |
archive-arc-expunge | Program and its options to run in order to delete arc file members. |
archive-arc-extract | Program and its options to run in order to extract an arc file member. |
archive-arc-write-file-member | Program and its options to run in order to update an arc file member. |
archive-extract-hook | Hook run when an archive member has been extracted. |
archive-file-list-end | Position just after last contents line. |
archive-file-list-start | Position of first contents line. |
archive-file-name-indent | Column where file names start. |
archive-files | Vector of ‘archive--file-desc’ objects. |
archive-hidden-columns | Columns hidden from display. |
archive-local-name | Name of local copy of remote archive. |
archive-lzh-expunge | Program and its options to run in order to delete lzh file members. |
archive-lzh-extract | Program and its options to run in order to extract an lzh file member. |
archive-lzh-write-file-member | Program and its options to run in order to update an lzh file member. |
archive-member-coding-system | Coding-system of archive member. |
archive-mode-map | Local keymap for archive mode listings. |
archive-proper-file-start | Position of real archive’s start. |
archive-read-only | Non-nil if the archive is read-only on disk. |
archive-remote | Non-nil if the archive is outside file system. |
archive-remote-regexp | Regexp recognizing archive files names that are not local. |
archive-squashfs-extract | Program and its options to run in order to extract a squashsfs file member. |
archive-subfile-mode | Non-nil in archive member buffers. |
archive-subtype | Symbol describing archive type. |
archive-superior-buffer | In archive members, points to archive. |
archive-tmpdir | Directory for temporary files made by ‘arc-mode.el’. |
archive-visit-single-files | If non-nil, opening an archive with a single file visits that file. |
archive-zip-case-fiddle | If non-nil, then all-caps names of zip file members will be down-cased. |
archive-zip-expunge | Program and its options to run in order to delete zip file members. |
archive-zip-extract | Program and its options to run in order to extract a zip file member. |
archive-zip-update | Program and its options to run in order to update a zip file member. |
archive-zip-update-case | Program and its options to run in order to update a case fiddled zip member. |
archive-zoo-expunge | Program and its options to run in order to delete zoo file members. |
archive-zoo-extract | Program and its options to run in order to extract a zoo file member. |
archive-zoo-write-file-member | Program and its options to run in order to update a zoo file member. |