home *** CD-ROM | disk | FTP | other *** search
- ----------------------------------------------------------------------------
-
- XFH-Handler 1.39
-
- Copyright (C) 1991, 1992, 1993, 1994 Kristian Nielsen.
- ----------------------------------------------------------------------------
-
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-
- Comments, suggestions and bug reports are welcome. I can be reached as
-
- Kristian Nielsen
- Groenjordskollegiet
- room 6111
- Groenjordsvej
- DK-2300 Koebenhavn S
- Denmark.
-
- E-Mail: bombadil@diku.dk
-
-
- Legal Issues
- ------------
-
- This program as a whole is distributed under the GNU General Public
- License. However, some of the contained material carries different
- legal status. In particular, this product includes software developed
- by the University of California, Berkeley and its contributors.
- Details appear in each individual file in the source directories.
-
- The "XFH" commodity was written by
-
- Nicola Salmoria
- Via Piemonte 11
- 53100 Siena ITALY
-
- E-Mail: MC6489@mclink.it
-
- This program (the commodity with icons and mountlists) is freely
- distributable as long as the archive remains intact, and only a
- nominal fee is charged for its distribution. However, it is still
- provided "AS IS" without warranty of any kind, either expressed or
- implied. By using it, you agree to accept the entire risk as to the
- quality and performance of the program.
-
- Version after 1.32 and "xScan" were done by:
-
- Matthias Scheler
- Schuetzenstrasse 18
- 33178 Borchen
- Federal Republic of Germany
-
- E-Mail: tron@lyssa.pb.owl.de
-
- Changes since the previous versions
- -----------------------------------
-
- Changes since last release V1.34:
- - more 2.0 packets including support for hard- and softlinks
- - extended builtin support for xScan
- - XFH is now distributed with full source code for SAS/C Release 6.51.
- - kludge to get XFH to work on top of Envoy FS
-
- Changes since last release V1.32:
- - After using the supplied tool "xScan" XFH will read directories MUCH
- faster. Read "xScan.doc" for information about that.
- - XFH now supports ACTION_PARENT_FH. Now MultiView and "amigaguide.datatype"
- have no more problems to use links between different AmigaGuide files.
- - XFH is now distributed with full source code for SAS/C Release 6.
-
- Important changes include since V1.12:
- - XFH is now distributed with full source code (for GCC).
- - The dreaded 'ExNext() / ExAll() bug with filenotes has been fixed.
- - Much improved user interface: Gui 'front panel' (by Nicola
- Salmoria), improved mountlist control.
- - Arexx interface for setting options after mounting the handler.
- - Support for MODE_READWRITE (appending to files).
-
- Overview
- --------
-
- XFH-handler is a DOS handler which uses xpkmaster.library to provide
- transparent access to compressed files in a given directory or partition.
- All compression/decompression is done automatically by the handler when files
- are read or written. Compression is optional and may be switched at any time,
- allowing for fine control over storage of data. The compression method may be
- changed at will. Decompression is always automatic, you don't have to care
- about which compressor was used to create the files.
-
- This version of XFH is designed to work with Xpk, the data compression
- standard. You will need Xpk to use XFH. Most users should receive XFH as part
- of the Xpk distribution.
-
- [Notes for users of previous versions of XFH: The way the handler is mounted
- has changed somewhat since v1.12 in order to make it simpler to use; you
- cannot just replace the binary in L: and go. This doc file does not mention
- the old option files, but they can still be used if you want to. Refer to the
- file "advanced_usage.doc". Also note that XFH now supports updating of
- existing files, something that a lot of users have requested.]
-
-
- Installation
- ------------
-
- This doc file is intended for Workbench 2.0 or later. If you are using
- Wb 1.x, refer to "advanced_usage.doc". That file contains also information
- which may be useful to the advanced user.
-
- We have tried to make the installation of XFH as easy as possible, but it
- still isn't a trivial task. Please read this paragraph carefully.
-
- First of all, you will need to have xpkmaster.library installed
- (xpkmaster.library is distributed as part of Xpk). Refer to xpkmaster
- documentation for installation. Version 2.2 (or any later version) of
- xpkmaster.library is suggested, since previous versions contain some bugs
- which may make XFH behave incorrectly.
-
- Then, copy "XFH-Handler" to your L: directory, and drag "XFH" into the
- Wbstartup drawer. XFH is a commodity, so as usual you will want to change
- the CX_POPUP ToolType from YES to NO to avoid having the window open
- everytime you boot.
-
- Now you have to decide which partition you want to install XFH upon. Of
- course you can choose more than one partition, but with this version of XFH
- you shouldn't use the boot partition unless you really know what you are
- doing.
- >> NEVER COMPRESS XFH-HANDLER, XPKMASTER.LIBRARY, MOUNT, OR ANY OTHER FILE
- NEEDED TO MAKE XFH WORK!!!!!! <<
-
- You are not limited to install on full partitions; you can choose any
- directory, but usage on a whole partition is probably the more immediate and
- useful. Here, we will assume installation on a whole partition. Installation
- over a directory is accomplished in a similar way, or by modifying the
- mountlist entry as explained in "advanced_usage.doc".
-
- If you are using Workbench 2.1 or later, drag the icon "XDH1" from the
- "Workbench2.1+" drawer to the "Devs/DOSDrivers" drawer in your boot
- partition. As its name suggests, XDH1 will work on your DH1 partition.
- To choose a different partition, just rename the icon; for example, "XJH2"
- will refer to JH2:, and so on (in fact any letter will work, not just
- 'X'). You can also use assigned names; for example, let's say you have
- assigned DOCS: to DH2:text/docs, then a copy of the icon named "XDOCS"
- will create an XFH task using that directory. To create multiple XFH
- partitions, use the Workbench 'Copy' command to duplicate the "XDH1" icon
- and rename it appropriately (ie. to "XDH2"). No other changes are needed.
-
- If you are not using Wb 2.1 yet, you will have to append the sample entry
- "devs/mountlist.xdh1" to your "DEVS:Mountlist" file (appending one copy for
- each XFH partition you wish to use). The same considerations made before
- apply: to change the target partition, edit the mountlist and change the
- XDH1: line appropriately. Then edit the file "S:User-Startup" and add lines
- like
-
- Mount XDH1:
-
- to automatically mount the XFH partitions at boot time.
-
- If you don't like names like XDH1, refer to "advanced_usage.doc" for a way
- to use a name of your choice (by modifying the mount entry).
-
-
- When mounted, XFH will display a new icon on your Workbench screen. For
- example, let's say that your DH1: partition is labelled "DATA"; XFH will call
- its partition XFH_DATA. After the first installation, you may relabel the
- volume as usual (XFH will use a file called '.xfhrc' in its root
- directory to preserve the volume name across reboots).
-
- The first step of installation is completed. Now reset and check that
- everyting works correctly. Next steps assume that you have rebooted and
- everything was ok.
-
-
- By default, XFH doesn't compress files. To do that, invoke the XFH commodity
- by using the hotkey (default is control alt x) or by double-clicking its
- icon. You will be shown a list of all mounted XFH partitions. Choose one,
- and activate the "Compression" checkbox. Now click on "Select Compressor..."
- button, and you will see a list of available Xpk compressors. Select your
- favourite compressor and efficiency and click on "OK". Currently, the best
- choice is probably NUKE, since it features good compression percentage and
- very fast decompression.
-
- The "Low Memory" checkbox, when activated, tells XFH to reduce memory usage
- as much as possible, even if that means reducing speed or compression
- efficiency (this option is not fully implemented in the current version of
- XFH-Handler).
-
- When you have set up all the partitions, select "Save" from the
- "Project" menu if you want to make the changes permanent, and click in the
- close gadget to hide the window ("Save" will store the settings in the .info file of the commodity).
-
- Now installation should be finished! Try to copy something to XDH1:, and try
- from CLI to 'list' it in DH1: and in XDH1: to see if it has actually been
- compressed (of course the file in DH1: should be shorter than the file which
- is seen thru XDH1:).
-
- Hint: if you want to compress all the files in your new XFH partition, the
- faster way is to make a backup and restore of XDH1:.
-
-
- Limitations
- -----------
-
- It should be stressed that a given XFH partition binds to a volume,
- not to a device. This has consequences if XFH is used on a removable
- media like a floppy disk. For example, trying to use XDF0 to access DF0
- will work, but it will use the disk that was in the drive at the time
- it was mounted and will not recognise a newly inserted disk.
-
- The figures reported by the shell 'Info' command are somewhat
- strange. The problem is that it isn't really possible to give
- sensible figures for 'NumBlocks' and 'NumBlocksUsed' (except scanning
- the entire XFH partition which would be ridicously slow). Currently,
- their values are the same as those for the underlying file system.
-
-
- Suggestions
- -----------
-
- Remember that, in this release of XFH-Handler, the decompressed file has to
- stay in memory for all the time the file is open. If you are low on memory,
- do not compress large files.
- Do not compress files which stay open for a long time.
- If you are using a printer spooler which creates temporary files on the hard
- disk (like PrintManager by Nicola Salmoria), make sure they are not
- automatically compressed by XFH (either turn compression off, or use DH1:
- instead of XDH1:).
-
- You may not want to have both DATA and XFH_DATA displayed as volumes on the
- Workbench. To avoid that, edit "S:User-Startup" and add the line
-
- Assign DATA: DISMOUNT
-
- Moreover, since you may have references to DATA: (for example some assigns)
- you may want to add this line also
-
- Assign DATA: XDH1:
-
- which will reroute every later access to the XFH partition. Note that to do
- this trick, the label of DH1: must *NOT* be DH1 or any other name conflicting
- with a device name. If it is your case, relabel the volume. After the
- DISMOUNT trick, you will always access the XFH partition from Workbench, but
- you will still be able to use both DH1: and XDH1: from CLI.
-
- When doing backups, use DH1:, not XDH1:. This way you will use the
- compressed data, thus requiring less disks. If your backup program provides
- compression, turn the option off, since it will only slow things down.
- Remember also to RESTORE to DH1:, or you will end up with a useless
- partition!
-
-
- Future Enhancements
- -------------------
-
- The following are a few loose ideas that may sometime be realised in future
- versions of XFH:
-
- - Support for other file formats. XFH is currently dependent on Xpk for
- operation; however original aim was (and still is) a general compressor
- front-end supporting Xpk, Zoo, Lharc, Lha etc.
-
- - Support for custom formats through AREXX. This would make it possible to
- write simple AREXX scripts that are called by XFH each time a request is made
- to open a file that XFH does not recognise. The script can then take over if
- it can handle the file and call the appropriate conversion programs. Thus,
- one could take for example a standard gif-to-iff converter and write a simple
- AREXX script that would make DeluxePaint suddenly read GIF pictures
-
- - Setting of options individually for specific directories and/or
- files (using AmigaDOS pattern matching). This would make it possible
- to specify that files named '#?.lzh' must not be compressed, or that
- directory listnings of ':net/uucp/news/' should not report the correct
- file sizes (for speedup).
-
- - Making the handler multi-treaded (like the ROM file systems)
- (multi-treadedness means that a large Read()-request won't block a simple CD
- command).
-
- - Implementing asyncronous I/O for compression and decompression
- (overlapping CPU time with IO time for large speedups).
-
-
- Acknowledgments
- ---------------
-
- XFH owes a lot to all the people that have helped me during development with
- discussions, criticism, suggestions, bug reports etc. (not to mention the
- steady demands for new versions when I was a bit slow bringing them out...).
- I am especially indebted to Nicola Salmoria who wrote the nice gui front-end
- to XFH, wrote most of this doc file and spent a lot of time discussing the
- user interface of XFH with me. Many of the improvements in user-friendliness
- since XFH 1.0 should be attributed to Nicola; any remaining inconveniences or
- bugs are entirely due to me. My thanks should also go to Urban D. Müller for
- helping me start the whole concept of the XFH back in the summer of 1991 -
- without his help the XFH is not likely to have been realised.
-
- XFH has been developed concurrently with my studies at the University of
- Copenhagen, Department of Computer Science. The institute kindly provides
- students with access to electronic mail and news; this also has been
- essential in the creation of XFH.
-
- Program history
- ---------------
-
- (In the list, an asterix ('*') denotes BETA version that have not been
- released and should not be used).
-
- V1.00 Initial release.
- V1.00a Bug in XObjExamine() fixed (it sometimes got the name of the root
- dir wrong). Thanks to Matthias Scheler for reporting this bug.
- V1.00b XFH: now obtains the values returned by ACTION_INFO and
- ACTION_DISK_INFO from the underlying file system. This should
- help problems with 'zero size file system' as experienced with
- earlier versions of MFR for example. Thanks to Keith H. Brown
- for pointing my attention to this problem.
- V1.10* Beta version implementing option files and automatic compression.
- V1.11* Beta with Xpk password support.
- V1.12 New XPKPRIORITY option. Also fixes bugs with bad volume names and a
- msgport that was unnessesarely public; thanks to Nicola Salmoria
- for telling me about these problem.
- V1.20* First beta with GUI and Arexx support.
- V1.21* - Bug fix: Write() to a compressed file opened for reading now
- fails with a return value of -1L (it used to return 0). Thanks to
- Stefan Boberg for pointing me to this problem.
- - Bug fix: Very nasty bug with file notes that caused XFH to crash
- the system (happened because dos.library does not preserve the
- fib->fib_Comment field between calls to ExNext()). Thanks to
- Anders Holmér for taking the bother sending me "snail mail" to
- let me know of this problem.
- V1.22* Enhanced GUI support. XFH now mounts as a handler (instead of as a
- disk-device based file system). Setting of options in mountlist.
- V1.23* Minor bugfixes; some options to help compatibility with various
- programs.
- V1.30* First version with support for MODE_READWRITE. XFH will now retain
- protection flags, filenotes and file dates when compressing files.
- ALLOWAPPEND and COMPRESSREADWRITE option. Write() to MODE_OLDFILE
- files.
- V1.31* ACTION_RENAME_DISK; PORTNAME option; minor bug fixes.
- V1.32 Full source provided now under GNU GPL. Source now uses RCS.
- Changed default for option ALLOWAPPEND to ON. Also changed
- option KILLSTARTUP to ON per default (the enforcer hits in
- Format etc. were too bad).
- V1.33* ACTION_PARENT_FH required for "MultiView" and "amigaguide.datatype"
- done by Matthias Scheler
- V1.34 support for xScan, source now for SAS/C Release 6
- done by Matthias Scheler
- V1.35* ACTION_EXAMINE_FH required for "gzip". Reduced code size (sprintf()
- via exec.library), source now for SAS/C Release 6.51. Debugging output
- is now done via KPrintF() so you can use "sushi" to intercept it.
- done by Matthias Scheler
- V1.36* ACTION_MAKE_LINK and ACTION_READ_LINK for hard- and softlink support
- done by Matthias Scheler
- V1.37* comments for fast directory scan are now created automatically
- (option XSCAN)
- done by Matthias Scheler
- V1.38 added work arround for Envoy's buggy ACTION_FH_FROM_LOCK
- (option ENVOYKLUDGE)
- done by Matthias Scheler
- V1.39 Fixed bug in builtin XSCAN support (V1.37) which caused XFH to crash
- with error 87000004 sometimes. Thanks to Michael Sülmann for the final
- hint about this bug.
- done by Matthias Scheler
-