Overview
========

uzip is a module for the extfs Virtual File System (VFS) in
Midnight Commander. It allows browsing, extraction and
modification of zip archives.

uzip was written by Oskar Liljeblad. If you find a bug, or know
of an improvement, please email me at osk@hem.passagen.se.

License and Copyright
=====================

uzip is released under the terms of the GNU General Public License.
uzip is copyright (C) 2000-2001 by Oskar Liljeblad.

Requirements
============

Info-Zip mode:
  Info-ZIP unzip 5.41 (for listing and extracting files)
  Info-ZIP zip 2.30 (for adding and deleting files)

otherwise:
  any unzip
  any zip

History
=======

2001-08-07  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.4.0.
	* Fixed so that files with filenames containing *, ?, [, ]
	and \\ can be extracted or added to zip archives etc. These
	characters has to be escaped once more, because Info-ZIP zip
	and unzip interprets them as wildcards (despite the fact that
	the shell already expands wildcards).

2001-03-01  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.3.0.
	* Caching of files when listing archives has been fixed. (MC
	would list a directory twice in some cases.)
	* 'strict' is now used. (This is why global variables
	are now initialized using 'my'.)
	* Some code simplifications thanks to more understanding
	of perl :)
	* Minor documentation clarifications.

2001-02-21  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.2.0.
	* The 'rmdir' extfs command of uzip was modified not to fail
	when deleting directories that doesn't exist. (A different/
	better solution would be to recreate the automaticly deleted
	directories, but that's slower and harder to implement.)
	Strangely, the zip man page does not mention this delete-
	empty-directories behavior.

2000-10-31  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.1.0.
	* mczipfs_copyin: Fixed order of arguments.
	* safesystem, safeticks: Improved error handling.
	* mczipfs_copyout: Now allows error code 11, and redirects
	stderr to /dev/null.

2000-10-29  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.0.1.
	* Fixed bug causing files with special permission not to
	  be listed.

2000-10-29  Oskar Liljeblad  <osk@hem.passagen.se>

	* Release 1.0.0: First version.

Differencies between new (Perl) and old (sh/AWK) uzip
=====================================================

The script is written purely in Perl, which (hopefully) means
faster execution and cleaner code.

Listing is done only with either zipinfo or unzip,
not both at the same time. Previously unzip would be used
if the archive contained non-unix file listings (after
zipinfo was run). Now there is an option to choose which
one to use (zipinfo is the default and preferred). This
should make listing of non-unix archives faster.

Files appearing before their parent directories in the listings
are now cached and printed later. This fixes a bug that would
cause some directories to be listed twice.

Temporary filenames are choosen better. That is, they are
generated using tmpnam(3). Previously, hardcoded filenames
(in the current directory) would be used.

The error messages are much better. Errors are checked for
(hopefully) all functions that can fail.

The copyin command no longer makes a copy of the file before
adding it. Instead it makes a temporary directory in which
a symlink to the original file is placed. This should speed
up addition considerably.

The run command is supported.

The theoretic commands "mklink" and "linkout" are supported.
However, MC extfs doesn't support these so they are rather
useless at the moment.

Known problems and Unsupported features
=======================================

Files added to the archive get listed with a+x permissions in MC.
This appears to be a problem with the MC extfs, and (probably) not uzip.
(It is only temporary though. When restarting MC and reading the
archive, the files will no longer be listed as executable.)

Extracted files do not have the same modification/access date as
in the archive. The same applies for permissions and ownership.
Fortunately MC extfs will set these attributes based on the file
listings.

Interpretation of special information ("central-directory extra field")
in zip archives. This is used to store information such as universal
time and unix UID/GID on files.

It would be nice if listing archives with symbolic links was faster.
Unzip has to be executed once for each link. This is because the
symbolic link file must be extracted in order to get the link
destination.

-
