By Dirk Haase, d_haase@sitec.net
Home page: www.sitec.net/maczip
27. March 1999
================================
Some notes about this port:
===========================
MacZip requires at least System 7 and a Macintosh with
a minimum of a
Motorola 68020 or PowerPC 601 processor. Other configurations
may work
but it is not tested at all.
The application is distributed as a fat binary with
both regular 68K
and native PowerPC versions included.
Move the executable(s) somewhere--for example, drag
it (or them) to your
Applications folder. For easy access, make an alias
in the Launcher Control
Panel or directly on your desktop.
The GUI is very simple. It was not my intention to make
a full-blown GUI,
however I think it is comfortable enough to use it as
regular tool.
This port supports also Apple-event.So you can install
it in your
WWW-Browser as a helper app.
For more Info about the contents of this package, take
a look into
the "macos/Contents" (or :macos:Contents)
file. Some notes on how to
rebuild the Macintosh applications can be found in INSTALL.
Usage:
------
Basically there are four ways to start MacZip:
a) Drag'n Drop
To extract an archive, drop an archive on MacZip.
To compress files drop a file, folder or volume on
MacZip.
Note: You can not drop more than one item at the
same time.
b) using the Dialog box (Menu: File -> Zip/Unzip):
* Compression (Zip):
- Go to "File -> Zip"and the "Zip
Options" Dialog Box appears.
- Click on "Location of the compressed File"
- The "Select an archive" dialog box appears
a) select a existing zip archive
-> Your files will be added to that zip
archive.
b) select a folder and name your new zip archive
-> a new zip archive will be created with
your files.
- Select one or more check boxes if you want.
see Zip.txt for more information.
- Click on "File or Folder to Compress"
- The "Select a File or Folder" dialog
box appears
a) select a file
-> This file will be compressed.
b) select a folder
-> the contents of the folder will be
compressed.
- Click on "Start Unzip" to start the task.
* Extraction (Unzip):
- Go to "File -> Unzip"and the "Unzip
Options" Dialog Box appears.
- Click on "Location of the compressed File"
- The "Select an archive" dialog box appears
- select a existing zip archive
- Select one or more check boxes if you want.
see Unzip.txt for more information.
- Click on "Location of the extracted Files"
- The "Select a Folder" dialog box appears
a) select a file
-> This file will be compressed.
b) select a folder
-> the contents of the archive will be
extracted
into this folder.
- Click on "Start Unzip" to start the task.
c) Using the Command line (Menu: File->Command Line):
The zip & unzip tools are command line tools.
So the behavior is exactly
the same like the zip & unzip tools on unix or
win. This means if you
want zip some files you have to write a command line
like this:
"zip [switches] path_to_zip_archive path_to_files_folders"
- Go to "File" and select "Command
Line" and the "MacZip Entry box"
Dialog Box appears.
An example:
a: your zip may be created at
Macintosh HD:applications:archive.zip
b: your files may be found at
Macintosh HD:somewhere:my_folder_to_archive:*
Note: At the end of the path there must be a filename
or a wild card !
(see Footnote: 1 wild card, 2 Mac path names)
So the command line should look like (one line!):
zip "Macintosh HD:applications:archive.zip"
"Macintosh HD:somewhere:my_folder_to_archive:*"
- Click on "Enter" to start the task.
Since you can not set a default folder you have to
enter always a
full qualified path names. Full-qualified path names
are path names
including the Volume name ! (see Footnote: 2 Mac
path names)
d) Using Applescript:
There is only one additional event defined: "do_cmd".
You can enter
every valid command line. The first word must be "zip"
or "unzip" to
select the action (compress or extraction).
See sample Applescript:
tell application "MacZip (PPC)"
activate
with timeout of 90000 seconds
do_cmd "zip -rjjN Volume:archive \"My
Volume:*\" "
end timeout
end tell
This script opens MacZip, brings it to the foreground
on the Mac, starts the zip
action with the command line: zip -rjjN Volume:archive
"My Volume:*" .
A short introduction is also available online:
http://www.sitec.net/maczip/How-To-Do/
It's possible to stop the run of Zip/Unzip with the
well
known shortcut [Command] + [.].
---------------------------------------------------------------------------
There are some Mac specific switches available.
Zip Module:
-df [MacOS only] Include only data fork
of files
zipped into the archive. Good for exporting
files
to foreign operating systems. Resource
forks will
be ignored at all.
-jj [MacOS only] record Full path (+ Volname).
The com-
plete path including volume will
be stored. By
default the relative path will be stored.
-S Include system and hidden files. This
option is
effective on some systems only; it
is ignored on
Unix. On MacOS, this option includes
finder invis-
ible files, which are ignored otherwise.
Unzip Module:
-E [MacOS only] display contents of MacOS
extra field
during restore operation.
-i [MacOS only] ignore filenames stored in
MacOS extra
fields. Instead, the most compatible
filename
stored in the generic part of the entry's
header is
used.
-J [MacOS only] ignore MacOS extra fields.
All Macin-
tosh specific info is skipped. Data
fork and
resource-fork are restored as separate
files.
Select [File]->[Get Help on Zip/Unzip] for a complete
list
of switches.
Limitations / Problems:
-----------------------
- Aliases are not supported. I tried, but I got
broken aliases
This port will silently ignore all aliases.
It's on my to-do list for future releases.
- Zip needs much memory to compress many files:
You may need to increase the 'Preferred Size'
in 'Get Info'.
Values of 12 Megabytes or more are possible
- Unzip needs about 500 Kbytes of memory to unzip
no matter
how many files were compressed and expanded.
- and finally one big macintosh-related problem:
This port has one weak point: It's based on path
names.
As you may be already know: Path names are not
unique on a Mac !
The main reason is that an attempt to implement
support exact saving of
the MacOS specific internal file structures would
require a throughout
rewrite of major parts of shared code, probably
sacrifying compatibility
with other systems.
I have no solution at the moment. The port will
just warn you if you try
zip from / to a volume which has a duplicate name.
MacZip has problems to find the archive or the
files.
My (Big) recommendation: Name all your volumes
with a unique name and
MacZip will run without any problem.
Known Bugs:
- crypted files in a zip archive are sometimes corrupt:
I get an error message: invalid compressed data
to inflate.
Appearance of this error is purely be chance:
I did a small test: Unzipping an archive containing
3589 files
56 files fails to unzip, so about 1.5%.
Root cause is completely unclear to me :(
I strongly recommend to test your archive (e.g.. unzip
-t archive).
Zip Programs / Macintosh Extra-Data:
-----------------------------------------
A brief overview:
Currently, as far as I know, there are 4 Zip Programs
available
for the Macintosh platform.
These programs build (of course) different variants
of Zip Files:
- Info-Zip's first Port of Zip. Ported by Johnny
Lee
This Port is rather outdated and no longer supported
(since 1992).
68K only. Only minimal Mac-info is stored (Creator/Type,
Finder attributes). Creator/Type: '????' / '????'
Until year 1998, Only Unzip 5.32 survived.
- ZipIt by Tom Brown. This is Shareware and still
supported I think.
ZipIt has a nice GUI, but I found it can't handle
large Zip files
quite well. ZipIt compresses Macintosh files using
the Mac Binary
format. So, transferring files to other platforms
is not so easy.
Only minimal Mac-info is stored (Creator/Type,
Finder attributes).
Mac filenames are changed to a most compatible
filename.
Creator/Type: 'ZIP ' / 'ZIP '
- PKZIP/mac v2.03/210d. This is Shareware.
This Zip implementation for the Mac can be found
on ASI's web site
(http://www.asizip.com/products/products.htm).
The name of this
program is misleading, it is NOT a product from
PKWARE. AS last
release version is v2.03, and they also offer
a newer beta version
PKZIP/mac 210d. But even the Beta version is rather
outdated (1995).
Only minimal Mac-info is stored (Creator/Type,
Finder attributes).
The Zipfile format looks like incompatible to
other platforms.
(More details about the compatibility issue can
be found in
proginfo/3rdparty.bug!). Type: 'PKz1'
Mac filenames are restored without any change.
and finally:
- Info-Zip's latest Port of Zip. MacZip 1.0. Ported
by me :-)
It is supported (of course) and up to date. Full
set of macintosh
info is stored: Creator/Type, Finder attributes,
Finder comments,
MacOS 8.0 Folder settings, Icon/Folder Positions
...
Mac filenames are restored without any change.
Creator/Type: 'IZip' / 'ZIP '
Compatibility of my port; Extraction:
- Archives from Info-Zip's first port (by Johnny
Lee) are still compatible.
- Extraction of ZipIt archives are supported. This
support is not
complete: Filenames are correct but Directory names
are sometimes mangled
to a dos compatible form. Segmented archives are
not supported.
- PKZiP/mac archives files are extracted without
resource-forks
and without any Finder info. I have no information
about that zip format.
Compatibility of my port; Compression:
- My port supports only the new Info-Zip format
(introduced with this port). Therefore archives
created by MacZip 1.0
(March 1999) must be extracted with this version
or later releases
of Info-ZIP's UnZip to restore the complete set
of Macintosh attributes.
Note: This port is complete unrelated to the shareware
ZipIt. Even more,
handling of special Macintosh attributes is incompatible
with ZipIt.
This port (MacZip) may be used to extract archives created
by ZipIt,
but make sure that you get the result as you expected.
Macintosh Files; File Forks:
----------------------------
All Macintosh files comprise two forks, known as the
data fork and the
resource fork. Unlike the bytes stored in the resource
fork, the bytes in
the data fork do not have to exhibit any particular
internal structure.
The application is responsible for interpreting the
bytes in the data fork
in whatever manner is appropriate. The bytes in the
resource fork usually
have a defined internal structure and contain data object
like menus,
dialog boxes, icons and pictures.
Although all Macintosh files contain both a data fork
and a resource fork,
one or both of these forks may be empty.
MacZip stores datafork and resource-forks separately.
The Zipfile Format
does not allow to store two archive entries using exactly
the same name.
My solution is to modify the Path name of the resource-fork.
All resource-fork
names are prepended with a leading special directory
named "XtraStuf.mac".
So, when extracting on a Mac, you should never see this
directory
"XtraStuf.mac" on your *disk*.
On all foreign systems that support directories in filenames
(e.g.: OS/2, Unix,
DOS/Windows, VMS) you will get a directory "XtraStuf.mac"
when extracting
MacZip archives.
You can delete the complete directory "XtraStuf.mac"
since Mac resources
do not make much sense outside the MacOS world.
Text encoding; Char sets of the Filenames:
----------------------------------------
The following information is only important if you plan
to transfer
archives across different platforms/language systems:
A typical Zip archive does not support different char
sets. All filenames
stored in the public area (= accessible by foreign systems
other
than MacOS) must be coded in the char set ISO-8859-1
(CP1252 in the Microsoft
Windows world) or CP850 (DOSLatin1). The latter should
only be used by
Zip programs that mark the archive entries as "created
under DOS".
Apart from Macs, the commonly used platforms either
support ISO-8859-1
directly, or are compatible with it.
To achieve maximum compatibility, MacZip convert filenames
from the
Mac OS Roman character set to ISO-8859-1 and vice versa.
But not every char of the char set Mac Roman has their
equivalent
in ISO-8859-1. To make the mapping in most cases possible,
I chose
most similar chars or at least the MIDDLE DOT.
Mac OS Roman character set is used for at least the
following Mac OS
localization's:
U.S., British, Canadian French, French, Swiss French,
German, Swiss German, Italian, Swiss Italian, Dutch,
Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
Portuguese, Brazilian, and the default International
system.
In all Mac OS encoding's, character codes 0x00-0x7F
are identical to
ASCII, except that
- in Mac OS Japanese, yen sign replaces reverse solidus
- in Mac OS Arabic, Farsi, and Hebrew, some of the
punctuation in this
range is treated as having strong left right directionality,
although the corresponding Unicode characters have
neutral
directionality
So, for best compatibility, confine filenames to the
standard
7-bit ASCII character set.
If you generate a filename list of your archive (unzip
-l), you will
see the converted filenames. Your can also extract the
archive with
the switch '-i' (= ignore mac filenames), and test your
result.
This Maczip port uses its own filename stored in the
archive.
At the moment, the filename will be not converted. However,
I'm planning to add support for Unicode.
Currently, the following Mac OS encoding's are NOT supported:
Japanese, ChineseTrad, Korean, Arabic, Hebrew, Greek,
Cyrillic,
Devanagari, Gurmukhi, Gujarati, Oriya, Bengali, Tamil,
Telugu
Kannada, Malayalam, Sinhalese, Burmese, Khmer, Thai,
Laotian,
Georgian, Armenian, ChineseSimp, Tibetan, Mongolian,
Ethiopic,
Vietnamese, ExtArabic and finally:
Symbol - this is the encoding for the font named "Symbol".
Dingbats - this is the encoding for the font named "Zapf
Dingbats".
If you extract an archive coded with one of these char
sets
you will probably get filenames with funny characters.
These problems apply only to filenames and NOT to the
file
content.
of course: The content of the files will NEVER be converted
!!
File-/Creator Type:
-------------
This port uses the creator type 'IZip' and it is registered
at Apple
(since 08. March 1998). File types can not be registered
any more.
This port uses 'ZIP ' for Zip archive files.
The creator 'IZip' type should be used for all future
versions of
MacZip.
Hints for proper restoration of file time stamps:
------------------------------------------------
UnZip requires the host computer to have proper time
zone information in
order to handle certain tasks correctly (see unzip.doc).
To set the
time zone on the Macintosh, go to the Map Control Panel
and enter the
correct number of hours (and, in a few locales, minutes)
offset from
Universal Time/Greenwich Mean Time. For example, the
US Pacific time zone
is -8 hours from UTC/GMT during standard (winter) time
and -7 hours from
UTC/GMT during Daylight Savings Time. The US Eastern
time zone is -5 hours
during the winter and -4 hours during the summer.
Discussion of Daylight Savings Time
-----------------------------------
The setting in the Date & Time control panel for
Daylight Savings time
is a universal setting. That is, it assumes everybody
in the world is
observing Daylight Savings time when its check box is
selected.
If other areas of the world are not observing Daylight
Savings time when
the check box is selected in the Date & Time control
panel, then the Map
control panel will be off by an hour for all areas that
are not recognizing
Daylight Savings time.
Conversely, if you set the Map control panel to an area
that does not observe
Daylight Savings time and deselect/uncheck the check
box for Daylight Savings
time in the Date & Time control panel, then time
in all areas celebrating
Daylight Savings time will be off by an hour in the
Map control panel.
Example:
In the case of Hawaiians, sometimes they are three
hours
behind Pacific Standard Time (PST) and sometimes
two hours
behind Pacific Daylight Time (PDT). The Map control
panel
can only calculate differences between time zones
relative
to Greenwich Mean Time (GMT). Hawaii will always
show up as
three hours past the Pacific time zone and five
hours past
the Central time zone.
When Hawaiians are not observing Daylight Savings
time, but
the rest of the country is, there is no combination
of
settings in Map and Date & Time control panels
which will
enable you to display Hawaiian local time correctly
AND
concurrently display the correct time in other
places that
do observe Daylight Savings time.
The knowledge about which countries observe Daylight
Savings
time and which do not is not built into the Map
control
panel, so it does not allow for such a complex
calculation.
This same situation also occurs in other parts
of the world
besides Hawaii. Phoenix, Arizona is an example
of an area of
the U.S. which also does not observe Daylight Savings
time.
Conclusion:
MacZip only know the GMT and DST offsets of the current
time, not
for the time in question.
Projects & Packages:
--------------------
A Note to version numbers: Version of MacZip is currently
1.00 and
is based on the zip code version 2.3 and unzip code
version 5.4.
See About Box for current version and compiler build
date.
Because of the amount of sources I splitted this port
into
several projects. See http://www.sitec.net/maczip for
updates.
- core source parts:
unzxxx.zip
zipxxx.zip
These archives contains the main parts of the
port. You can build
libraries and a standalone App with Metrowerks
standard console SIOUX.
They contain only sources, no executables.
These archives are exact copies of the standard
Info-ZIP source
distributions; they were only repackaged under
MacOS using MacZip,
with one minor addition: For those files that
are stored in BinHex'ed
format in the Info-ZIP reference source archives,
unpacked version
that are ready for use have been added.
- additional source part:
MacZipxxx.zip: contains all the GUI staff and the
project files to
build the main-app. Only sources of the GUI,
no zip- or unzip code.
To build MacZip successfully you will need to
also download the zip-
and unzip packages.
- executables:
MacZipxxxnc.hqx: contains only executables and 'README.TXT',
This version is without en-/decryption
support !
MacZipxxxc.hqx: contains only executables and 'README.TXT',
This version supports en-/decryption
!
- encryption sources:
zcryptxx.zip: To build crypt versions of MacZip.
download from ftp://ftp.icce.rug.nl/infozip/ (and
sub directories)
- documentation:
MacZipDocu.zip: contains some further docus about the
algorithm,
limits, info-zip's appnote and a How-to-do
Webpage.
Credits:
--------
Macstuff.c and recurse.c: All the functions are from
More Files.
More Files fixes many of the broken or underfunctional
parts of the file system. Thanks to Jim Luther.
(see morefiles.doc)
MatWild.c: Originally C++ code written by JJS (jstrout@ucsd.edu).
---------------------------------------------------------------------------
Footnotes:
1. wild card:
The '*' is a wild card and means 'all files'
Just in case you don't know wild cards:
'*' is a place holder for any character.
e.g.:
"this*" matches with "this_file"
or "this_textfile" but it
don't matches with "only_this_file" or
"first_this_textfile"
"*this*" matches with "this_file"
or "this_textfile" AND
matches with "only_this_file" or "first_this_textfile"
2. Mac pathnames:
The following characteristics of Macintosh pathnames
should be noted:
A full pathname never begins with a colon, but must
contain at
least one colon.
A partial pathname always begins with a colon separator
except in
the case where the file partial pathname is a simple
file or
directory name.
Single trailing separator colons in full or partial
pathnames are
ignored except in the case of full pathnames to
volumes.
In full pathnames to volumes, the trailing separator
colon is required.
Consecutive separator colons can be used to ascend
a level from a
directory to its parent directory. Two consecutive
separator colons
will ascend one level, three consecutive separator
colons will ascend
two levels, and so on. Ascending can only occur
from a directory;
not a file.
---------------------------------------------------------------------------
Dirk Haase
==========
This page was created using TextToHTML. TextToHTML is a free software for Macintosh and is (c) 1995,1996 by Kris Coppieters