123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 |
- A free Macintosh Port of Info-ZIP's
- Zip and UnZip
- By Dirk Haase, d_haase@sitec.net
- Home page: www.sitec.net/maczip
- Mirror page:
- www.haase-online.de/dirk/maczip
- ================================
- Abstract:
- ---------
- MacZip is a cross-platform compatible tool that includes
- both Zip (for compression) and UnZip (for extraction).
- Zip is a compression and file packaging utility for Unix,
- VMS, MSDOS, OS/2, Windows 9x, Windows NT, Atari, Macintosh,
- Amiga, Acorn RISC OS, and other systems.
- UnZip unpacks zip archives. The Zip and UnZip programs can
- process archives produced by PKZIP, and PKZIP and PKUNZIP
- can work with archives produced by zip. Zip version 2.2 is
- compatible with PKZIP 2.04.
- If you are new to MacZip please read first the file
- "ReadMe.1st".
- License:
- --------
- Copyright (c) 1990-2001 Info-ZIP. All rights reserved.
- See the accompanying file LICENSE, version 2000-Apr-09 or later
- (the contents of which are also included in unzip.h) for terms of use.
- If, for some reason, all these files are missing, the Info-ZIP license
- also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
- Requirements
- ------------
- 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.
- Installation
- ------------
- 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
- b) using the Dialog box (Menu: File -> Zip/Unzip):
- Please read the file "ReadMe.1st"
- for the description of the items a and b.
- 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 Windows/DOS. This means, if you want to 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", 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 Footnotes: 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] 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] record Fullpath (+ Volname). The complete
- path including volume will be stored. By default
- the relative path will be stored.
- -S [MSDOS, OS/2, WIN32 and ATARI] Include system and
- hidden files.
- [MacOS] Includes finder invisible 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 6 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. ASI's 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.
- - Aladdin DropZip 1999, This is Shareware. Aladdin chose
- the format of ZipIt. Therefore, it has the some drawbacks
- like ZipIt.
- Creator/Type: 'SITx' / 'ZIP '
- - SmartZip 1.0 1999 - by Marco Bambini Vampire Software.
- This is Shareware. SmartZip compresses Macintosh files using the
- Mac Binary. Therefore, it has the same drawbacks like ZipIt.
- Creator/Type: 'dZIP' / 'ZIP '
- 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 is 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 archive 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 data-forks 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; Charsets 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 charsets.
- All filenames stored in the public area (= accessible by
- foreign systems other than MacOS) must be coded in the
- charset 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 charset MacRoman 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 localizations: 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 encodings, 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 encodings 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
- charsets 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.txt). 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 knows 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.06 and is based on the zip code version 2.3 and unzip code
- version 5.42. 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 stuff 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 subdirectories)
- - 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)
- ---------------------------------------------------------------------------
- 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
- doesn't match 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
- ==========
|