README file for tess, tar extraction simplification script.

This file documents tess version 2.0.

Please send comments, suggestions, bug-reports, etc to
	pcoad@crl.com
Any feedback is welcome!

If you use tess please let me know.  I want only to track the distribution 
of tess.  User lists will not be sold.  No salesmen will call.    

1. Legal Stuff:

Copyright 1994, Paul E Coad
The author disclaims all warranties with regard to this software, including
all implied warranties of merchantability and fitness.  In no event
shall the author be liable for any special, indirect or consequential 
damages or any damages whatsoever resulting from loss of use, data or 
profits, whether in an action of contract, negligence or other 
tortuous action, arising out of or in connection with the use or 
performance of this software.

This package is being released under the terms of Larry Wall's 
"Artistic license".

2. Files:

README          this file
tess    	the tar extractor
Artistic	Larry Wall's "Artistic license"
library/
  disjoint.tk         DISJOINT.TK v1.1 - by Paul Raines
  fileselect.tcl      file select box - by Mario Jorge Silva (modified)
  tessdlg.tk	      common dialog routine.
  tclIndex            index file of procedures in the above files


3. General:

tess attempts to simplify the extraction of tar archives by providing a 
graphical interface to the tar command.  tess provides for automatic 
decompression of compressed or gziped archives.  Since tess requires
tar and compress it may not work under any operating system which is
not unix-like.  To make use of tess' uncompress facilities the programs
zcat and/or gzcat are required.  

tess is totally based on tcl/tk.  There is no c-code and so should be easy
to install.   

4. Installation:

No compilation is required.  Extract by typing: 

	zcat tess.2.0.tar.gz | tar oxvf -

If you already has tess you would type:

	tess tess.2.0.tar.gz

and select List/Extract -> Extract All.

One variable needs to be set, tess_lib, which should be set to the path of
the directory containing disjoint.tk, fileselect.tcl, tessdlg.tk, and tclIndex.

5. Use:

tess is started from the command line.  If an argument is specified, it
is used as the Device entry (see below).  Like any description of a GUI
the following is best used as a reference.  IMHO tess is fairly simple
to use (few moving parts!)  Try it out then look at the docs.

Device: (button) opens the Select File window.  Selecting a file in the
	list (double clicking, or pressing the List button ) will list 
	the file in the tess' listbox.  See the description of the Select
	File window below for more details.

Device: (entry) enter the name of the device (file) from which to extract 
	the archives.  Pressing the Enter key in this field will cause
	the archive to be listed in the listbox.

List/Extract: 
	List Archive: reads the named archive and displays a list of
		      the contents in the listbox.

	Extract All:  extracts all files from the named archive.

	Extract Selected: extracts the files selected in the listbox.

	About: shows the legal stuff in a window.

	Quit: quit.

Options:
	Owner Perms: when set "on" the extracted files take the owner
		     and group ID of the user running the program.

	Update Mod Time: when set "on" the extracted files will have
	 		 a modification time of the time of extraction.

Select File window:

Device: enter the name of the device (file) from which to extract
        the archives.

scrolling list: lists files in the current directory initially, selecting 
	        .. or will list the contents of the parent directory 
		in the list, and selecting a directory will list the
		contents of the selected directory in the list.
		Double clicking on a file name or selecting a file and
		pressing the List button will list the contents 
		of the file in the list in the tess window.

OK: selecting a file in the list and pressing the OK button will place the
    full path name of the file in the device entry in the tess window.

List: selecting a file in the list and pressing the List button will list
      the contents of the file in the tess window.

Cancel: pressing the cancel button will close the Select File window without
	changing the contents of the device entry in the tess window.

path: the current directory is displayed at the bottom of the Select File 
      window.
 
Defaults for several options can be set within tess:

default_device - sets the default value to appear in the Device entry.
default_owner_perms - sets the Owner Perms flag.
default_update_mod_time - sets the Update Mod Time flag
tarlist - sets the name of the temporary file 
have_gzip - specifies existence of gzip and friends
have_gzcat - specifies a non-standard installation of gzip.
have_funky_tar - specifies that tar writes everything to stdout.

All of the above should need to be set only once so are not changed through
menu options or settings.

6. Changes 

Changes since 1.1

Enhancements:
- Disjoint selections of files inside of the archive are now allowed
  thanks to Paul Raines' DISJOINT.TK v1.1.
- The archive file now can be selected (from the Device: button) by
  means of the fileselect box thanks to Mario Jorge Silva's fileselect.tcl.
- Files ending in ".tgz", ".taz", and ".taZ" are now recognized as being
  zipped/compressed tar files.  (This enhancement really requires gzip.
  If you don't have it, it can be obtained at prep.ai.mit.edu in /pub/gnu.)
Bugs:
- One portability problem has been fixed.  At least one version of tar
  writes everything to stderr, a redirector was added to cover this.
  If you have this kind of tar, set the variable have_funky_tar to 1.
Nits:
- Windows are automatically resized to display the longest line in the list.
- Some typos in tess and the README file have been fixed.
- Moved tessdlg to the library so it can be used elsewhere.

Changes since 1.0

- Added options in the code for setting the defaults on the Options menu.
- Removed the zcat is gzcat option from the options menu and added a 
  configuration option to specify non-standard gzip installations.
- Fixed 2 bugs related to extracting a subset of files.
- Changed the list boxes to have fixed size fonts.
- Added an "About" window  to show legal stuff. 

7. To Do:

tess attempts to provide a simple interface to the tar command, and so
does not deal with the less used options of the tar command.  tess does
not even deal with creating an archive.  (I have been thinking about this
though... drag-n-drop from a file manager?)  

Things to do:

* Replace fileselect or modify it further so that directories are visibly 
  different from files.  Now they all look the same.  (See below.)

* Add a good way of changing the working directory.  (This could have been
  done with fileselect but tess needs something different (I am not knocking 
  fileselect, it has saved me much work! :-))

* Add support for GNU tar.

* Document more of the code.

* Add support for drag and drop, busy, and bgexec and other cool BLT stuff.  

* Find ways to minimize the annoyances listed below.

8. Annoyances:

* On SVR3.2 systems with short (14 character) file names, tar does not
  properly extract files with long file names when it is extracting from
  stdin.  This may be true on other systems.

* On my system occasionally the message "child killed: write on pipe with no
  readers" is displayed.  All of the files are listed and can be extracted
  but the annoying message is displayed.  Related to this when tar files
  contain archived directories (e.g. src/, src/port/, src/port/sun) an
  error dialog is displayed stating that the directories can't be created.
  I think this is a problem when the tar file was created on a BSD system
  and is being read on a (old?) SYSV system.  The messages are annoying
  but in most cases can be ignored.

9. Bug reports and suggestions:

pcoad@crl.com

10. Thanks:

Dr. John Ousterhout and the UCB for such a fun free language/toolkit.
My wife for her saintly patience.
Harold A Pagenkopf, for a lifetime of inspiration.
All of those who sent me bug reports, suggestions, and code including:
John Harres, Jens Henrik Jensen, Dimitry Kloper, and Pat Niemeyer.
