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-expungeProgram and its options to run in order to delete 7z file members.
archive-7z-extractProgram and its options to run in order to extract a 7z file member.
archive-7z-updateProgram and its options to run in order to update a 7z file member.
archive-alternate-displayNon-nil when alternate information is shown.
archive-alternate-hidden-columnsColumns hidden when ‘archive-alternate-display’ is used.
archive-arc-expungeProgram and its options to run in order to delete arc file members.
archive-arc-extractProgram and its options to run in order to extract an arc file member.
archive-arc-write-file-memberProgram and its options to run in order to update an arc file member.
archive-extract-hookHook run when an archive member has been extracted.
archive-file-list-endPosition just after last contents line.
archive-file-list-startPosition of first contents line.
archive-file-name-indentColumn where file names start.
archive-filesVector of ‘archive--file-desc’ objects.
archive-hidden-columnsColumns hidden from display.
archive-local-nameName of local copy of remote archive.
archive-lzh-expungeProgram and its options to run in order to delete lzh file members.
archive-lzh-extractProgram and its options to run in order to extract an lzh file member.
archive-lzh-write-file-memberProgram and its options to run in order to update an lzh file member.
archive-member-coding-systemCoding-system of archive member.
archive-mode-mapLocal keymap for archive mode listings.
archive-proper-file-startPosition of real archive’s start.
archive-read-onlyNon-nil if the archive is read-only on disk.
archive-remoteNon-nil if the archive is outside file system.
archive-remote-regexpRegexp recognizing archive files names that are not local.
archive-squashfs-extractProgram and its options to run in order to extract a squashsfs file member.
archive-subfile-modeNon-nil in archive member buffers.
archive-subtypeSymbol describing archive type.
archive-superior-bufferIn archive members, points to archive.
archive-tmpdirDirectory for temporary files made by ‘arc-mode.el’.
archive-visit-single-filesIf non-nil, opening an archive with a single file visits that file.
archive-zip-case-fiddleIf non-nil, then all-caps names of zip file members will be down-cased.
archive-zip-expungeProgram and its options to run in order to delete zip file members.
archive-zip-extractProgram and its options to run in order to extract a zip file member.
archive-zip-updateProgram and its options to run in order to update a zip file member.
archive-zip-update-caseProgram and its options to run in order to update a case fiddled zip member.
archive-zoo-expungeProgram and its options to run in order to delete zoo file members.
archive-zoo-extractProgram and its options to run in order to extract a zoo file member.
archive-zoo-write-file-memberProgram and its options to run in order to update a zoo file member.

Defined functions (123)

arc-insert-unibyte(&rest ARGS)
archive-*-expunge(ARCHIVE FILES COMMAND)
archive-*-extract(ARCHIVE NAME COMMAND)
archive-*-write-file-member(ARCHIVE DESCR COMMAND)
archive--act-files(COMMAND FILES)
archive--enabled-p(COLUMN)
archive--ensure-extension(ARCHIVE ENSURE-EXTENSION)
archive--expunge-maybe-force(FORCE)
archive--extract-file(EXTRACTOR ARCHIVE ENAME)
archive--file-desc
archive--file-desc--cmacro
archive--file-desc-case-fiddled(FD)
archive--file-desc-ext-file-name(archive--file-desc-ext-file-name X)
archive--file-desc-ext-file-name--inliner(INLINE--FORM X)
archive--file-desc-gid(archive--file-desc-gid X)
archive--file-desc-gid--inliner(INLINE--FORM X)
archive--file-desc-int-file-name(archive--file-desc-int-file-name X)
archive--file-desc-int-file-name--inliner(INLINE--FORM X)
archive--file-desc-mode(archive--file-desc-mode X)
archive--file-desc-mode--inliner(INLINE--FORM X)
archive--file-desc-p(X)
archive--file-desc-p--inliner(INLINE--FORM X)
archive--file-desc-pos(archive--file-desc-pos X)
archive--file-desc-pos--inliner(INLINE--FORM X)
archive--file-desc-ratio(archive--file-desc-ratio X)
archive--file-desc-ratio--inliner(INLINE--FORM X)
archive--file-desc-size(archive--file-desc-size X)
archive--file-desc-size--inliner(INLINE--FORM X)
archive--file-desc-time(archive--file-desc-time X)
archive--file-desc-time--inliner(INLINE--FORM X)
archive--file-desc-uid(archive--file-desc-uid X)
archive--file-desc-uid--inliner(INLINE--FORM X)
archive--file-summary(TEXT NAME-START NAME-END)
archive--file-summary--cmacro(CL-WHOLE-ARG TEXT NAME-START NAME-END)
archive--file-summary-name-end(archive--file-summary-name-end X)
archive--file-summary-name-end--inliner(INLINE--FORM X)
archive--file-summary-name-start(archive--file-summary-name-start X)
archive--file-summary-name-start--inliner(INLINE--FORM X)
archive--file-summary-p(X)
archive--file-summary-p--inliner(INLINE--FORM X)
archive--file-summary-text(archive--file-summary-text X)
archive--file-summary-text--inliner(INLINE--FORM X)
archive--fit(STR LEN)
archive--fit2(STR1 STR2 LEN)
archive--maybe-rename(NEWNAME NEED-RENAME-P)
archive--mode-revert(ORIG-FUN &rest ARGS)
archive--need-rename-p(&optional ARCHIVE)
archive--summarize-descs(DESCS)
archive--with-ensure-extension(ARCHIVE PROC-FN)
archive-7z-extract(ARCHIVE NAME)
archive-7z-write-file-member(ARCHIVE DESCR)
archive-add-new-member(ARCBUF NAME)
archive-alternate-display()
archive-ar--name(NAME)
archive-ar-extract(ARCHIVE NAME)
archive-ar-write-file-member(ARCHIVE DESCR)
archive-arc-rename-entry(NEWNAME DESCR)
archive-calc-mode(OLDMODE NEWMODE)
archive-chgrp-entry(NEW-GID)
archive-chmod-entry(NEW-MODE)
archive-chown-entry(NEW-UID)
archive-copy-file(FILES NEW-NAME)
archive-delete-local(NAME)
archive-display-other-window()
archive-dosdate(DATE)
archive-dostime(TIME)
archive-expunge()
archive-extract(&optional OTHER-WINDOW-P EVENT)
archive-extract-by-file(ARCHIVE NAME COMMAND &optional STDOUT-TEST)
archive-extract-by-stdout(ARCHIVE NAME COMMAND &optional STDERR-TEST)
archive-extract-other-window()
archive-file-name-handler(OP &rest ARGS)
archive-flag-deleted(P &optional TYPE)
archive-get-descr(&optional NOERROR)
archive-get-marked(MARK &optional DEFAULT)
archive-goto-file(FILE)
archive-hideshow-column(COLUMN)
archive-int-to-mode(MODE &optional FILETYPE)
archive-l-e(STR &optional LEN)
archive-lzh-chgrp-entry(NEWGID FILES)
archive-lzh-chmod-entry(NEWMODE FILES)
archive-lzh-chown-entry(NEWUID FILES)
archive-lzh-exe-extract(ARG1 ARG2)
archive-lzh-exe-summarize()
archive-lzh-extract(ARCHIVE NAME)
archive-lzh-ogm(NEWVAL FILES ERRTXT OFS)
archive-lzh-rename-entry(NEWNAME DESCR)
archive-lzh-resum(P COUNT)
archive-lzh-summarize(&optional START)
archive-mark(P)
archive-maybe-copy(ARCHIVE)
archive-maybe-update(UNCHANGED)
archive-mode(&optional FORCE)
archive-name(SUFFIX)
archive-next-file-displayer(FILE REGEXP N)
archive-next-line(P)
archive-previous-line(P)
archive-rar-exe-extract(ARCHIVE NAME)
archive-rar-extract(ARCHIVE NAME)
archive-rar-summarize(&optional FILE)
archive-rename-entry(NEWNAME)
archive-resummarize()
archive-set-buffer-as-visiting-file(FILENAME)
archive-squashfs-extract(ARCHIVE NAME)
archive-squashfs-extract-by-stdout(ARCHIVE NAME COMMAND &optional STDERR-TEST)
archive-squashfs-summarize(&optional FILE)
archive-summarize(&optional SHUT-UP)
archive-summarize-files(FILES)
archive-undo()
archive-unflag(P)
archive-unflag-backwards(P)
archive-unique-fname(FNAME DIR)
archive-unixdate(LOW HIGH)
archive-unixtime(LOW HIGH)
archive-unmark-all-files()
archive-view()
archive-write-file(&optional FILE)
archive-zip-chmod-entry(NEWMODE FILES)
archive-zip-extract(ARCHIVE NAME)
archive-zip-write-file-member(ARCHIVE DESCR)
archive-zoo-extract(ARCHIVE NAME)
copy-archive--file-desc(ARG)
copy-archive--file-summary(ARG)

Defined faces (0)