


Version history for FileRunner.
--------------------------------------------------------------------------------
13.4.18.11

Updated the Users_Guide.  Recommended reading for this release:
Utilities run command in section 3.1
Mouse Buttons In the File list section 3.3.5.1
Open command in section 3.4
The Internal Text Viewer Menu section 5.1
File name completion section 9.3
Oh, and Regenerate the configuration and read through the changes there.

Fixed bug in ftp mkdir code, looped instead of doing the deed.

On testing, Windows tcl does a POOR job of determining if a file is executable, especially if CYGWIN is installed.  This messes up the command completion code which tries to only return executable files for the command.  Changed the code to return all candidates for Windows.  It still only returns executables for Linux/unix.

Removed the code to change windows file names to use '\' as windows works just fine with the '/' AND it is ever so much easier to work with.

Changed new 'Open' command to directly execute the file if it is executable.  Otherwise call the 'open cmd' program.

Added 'ViewAsTx' (View as text) to the middle button list.  Same as 'Utilities' menu View as text.

Re-wrote the command buffer string handler to better handle '\' and '\ ' to better deal with Windows file names.

Changed the configure write code to do a better job of listing the more complex lists used in the config file.  Also set up the default start up helper command names to contain the .exe post fix if running in CYGWIN.

Added code to add new buttons to the config(middle_button_list) and to remove unrecognized buttons in that list.

Added a new center button 'Run'.  Does the same thing as the 'Utilities' menu Run command.

Enhanced command completion and the command execute code to deal more reasonably
with file & directory names with spaces embedded in them.

Added the 'Open' command/button.  This is the same as 'View' except it uses a different configured list to pick the program to run.  And if the file extension is not in the config(open,extensions) list, this command calls the program config(cmd,open) which should figure out what to run and run it. On windows, this command should be 'cmd /c start'.  On Mac systems it is 'open'.  On Linux systems there are at least these three possibilities: 'gnome-open', 'kde-open' and 'xdg-open'. 

'View' then is for taking a quick peek at a file, while 'Open' does the full thing.

Changed the color reconfigure code to also set up 'options' for each of the colors.  This means we no longer have to configure a window when we build it.  Instead the window code will just get what it needs from the option list.

Change the menu and bind configuration code to allow parameters to be passed to the called function.  This makes it possible to bind a command to a mouse button that will call a mail composer with a list of files to 'attach'.  To finish this, changed the run command to accept an optional parameter which it uses to find the program to run in the 'runlist'.

Enhanced the command completion code to put up a browse window in response to Button 3 in the entry line.

Added new code around the Run command.  You can now set up a list of programs to choose to run along with syntax and 'nice' names.

Added code to catch menu recursion, i.e. a->b->c->a in user menus.

Made smart_dialog even smarter yet.  You can now set it up to execute a script to populate the 'text' window (or, for that matter do most anything).  Also made its global names include the window name so multiple smart_dialog windows can be up at the same time.

Used the new smart_dialog and command completion code to redo the run command which now will do command completion on the item to run as well as let you choose if you want full file names or working directory related file names.

Made smart_dialog even smarter.  It now can handle any number of 'entry' widgets, checkbuttons and normal buttons as well as all the other wonders.

Did a rather complete rewrite of the command completion code.  It now hangs on Tab and DoubleTab.  Can now select completions with mouse <1> clicks from a list of completions. Also moved it into a separate file (aka library).

Found and fixed problem with mouse wheel delta not being what is configured (the scroll was always larger than requested).

Fixed a bug in the copy code that caused directory copies to a directory that already contains a directory by the same name to create a new directory by that name in the existing directory rather than just continue and update files below that directory.

Added a configuration button to turn on/off expanded error messages, mostly for me :).

Added and implemented configurable button bindings for the list boxes.  You can now build menus and attach them to button clicks.  See the configuration file.

Fixed the bug of trying to 'Alt-Esc' from a view window by trapping the sequence and doing exactly nothing.

Wrote a new Entry_Dialog routine and changed code to use it.

Enhanced replacetearoff.tcl to pick up button colors, deal with separators and cascade menus.

Wrote a replacement for tk_dialog (named smart_dialog) which handles all 'fixed' answer questions (like Yes No OK etc.).  It is now used for all of these, including the About window.  It also has a 'monologue' option that is used for the View messages 'not found', 'nothing to undo' and 'nothing to redo'.  This window is usually removed by the next action and may also be removed with mouse button-1.

Turned on 'undo' in the View, Q-Edit, and configure edit windows.  Put 'undo" and
'redo' commands in the button-3 menu.  (Also Cntl-z does undo and Cntl-Z redo.)

Separated the view search code (used in view and the command windows).  Allow search to go either forward or back at each point.  Allow rollover but we stop at the end and tell you about it.  Changed the not found pop up to be frame-less and flashing. 

Moved FontControl and balloon_help to stand alone routines with standard calling sequences.

Moved ReplaceTearoff to a stand alone routine.  Made it better at what it does.  (It replaces a tearoff menu with one that stays around when the parent looses focus.)

It seems a '&' got lost in the Editor script which causes filerunner to wait for the editor to complete.  Fixed this.

Change to the 'Recurse Command' (under Etc) to properly delimit the command for 'sh -c'.  With out the change you needed to put '"' around the command.

Darn, a bug.  Seems like we miss handle zero length pass words.  Fixed.  Thanks to Peter for the bug report.
--------------------------------------------------------------------------------
12.12.25.15

Added a new 'ftp' mode, aftp.  aftp uses adb to talk to Android devices so you can now look at and modify Android device files.  Due to the way adb works, i.e. the file transfer command is done in user mode, even though you enter in 'root' mode you can not read or write protected files/dirs.  This can be worked around by moving the file in question to a temp dir and then the reading or copying that file where you want it. (This is clumsy and I would like to make it easier.)  As for ftp and sftp, aftp allows commands from the command window when connected.  See the 'users guide' on how to set up the access to adb.

Added "Permission denied" to the list of possible results of a list of a directory in sFTP.  This gives a much cleaner error result.

Changed the Read Config code to (hopefully) reconfigure everything the config file controls each time the config file is read.

Added 'Run Command On Selected & prior' to the Utilities menu.  This command builds a line just like 'Run Command On Selected' and adds any entries in the prior selection. This is the same as the second argument to the Diff command.  Thanks to Gösta for this suggestion.

Fixed bug in DIFF button code when the prior selection is more than one element.

Fixed softlink and softlinkas wrt FTP connections.  Softlink was not allowing the command due to improper switch statment labels and both were not setting the force update flag so, even though the command worked the dir listing was not up dated.  In connection with this, the ftp control code was also changed to invalidate the ftp dir cache on "ln" calls so that a new dir list was obtained rather than just using the cache version.

Fixed Bug when exiting the configuration edit and a file is highlighted.  Thanks to Norman for the bug report.

Made several fixes to error reporting from ftp code.  Found some cases where it hangs and made (hopefully) fixes to get around those.

Added code to allow commands in the command subwindow while in ftp or sftp directories.

Added code to the font selection area to bring up the selection box with the actual fg and bg colors preset.

Kevin Knerr pointed out that the Balloon Help font was not changing when configured.  He even provided a patch to fix the problem.  Thanks Kevin.
--------------------------------------------------------------------------------
12.5.23.16

If you are using the *.exe version of filerunner I need help.  Please see the "To Do" list (under the Help menu). 

Added code to respond to the 'Stop' button on long file transfers or directory reads when using SFTP.

Added popup window to ask permission to add SFTP host to the known hosts list.  No aborts the login, Yes continues the login.

Changed the debug LOG file for Expect to put it in the .fr/tmp/ directory.

Added documentation on the '-db' run time option (turns on debugging).

Cleaned up the (s)ftp login code to recover by asking for password again.  Also fixed it so you can save the multi-part sftp password on successful login.

Added code to keep track of open Log windows and append new Log messages to them in real time.

Changed the code to make sure env(USER) is defined and not %something%.  This is so we can use it as the USER name later.  If not properly defined, define it to be either env(USERNAME) or env(LOGNAME).  If non of these are defined pop up a  message and QUIT!

In an attempt to get the windows wrap version to work with sftp, wrote an Expect replacement.  It does everything we need for sftp except the password and pass-phrase thing.  This means that, if the keys are set up on the server and the local machine, all works.  We don't want to use the real windows Expect code as it is not available in 'wrap'.

Change the find displays code (used by tool-tips to place the tip) to be more robust, I hope.

Expanded the password to 'password info' containing the password, 'ssh private key location' and 'pass-phrase'.  These last two parts are meaningful for sftp.  Expanded section 8.8 of the Users Guide to explain all this.

Added code to the sftp handler to use the two extra parts of the 'password info'.

We now encript the ftp passwords that appear in the config file.  

Made changes to sftp coded to say 'yes" to unknow cpu (not sure if this is the right thing, but... need to allow this at least one time to set up sftp connections.
Changed line wrapping on most 'view' windows to wrap at word boundaries.

Completely rewrote the Tips file.  Want right justified file size, space before the file name... check out the Tips.

Changed the install guide to mention the need to install the 'expect' package and to indicate that we just don't have a good answer for the windows package.  The 'expect' package is not pure tk/tcl and so must be compiled to match your machine.

Changed the ftp login sequence.  We now ask if you want to save the user name and password.  

Made changes to how configure 'format' strings are handled.  These are the strings in the configure file with '%s' in them.  The problem is that format output does not (and can not be made to) distinguish spaces that need to be kept from those that separate parameters.  This lead to problems with command (and file) names that have spaces in them.  This, in turn lead to needing to know how many evaluation steps were to be done so as to 'quote' the spaces properly to keep them.  The solution was to define a new sequence of characters (called config(space)) to replace spaces in the strings going into the format command and then to replace this string with spaces in the format command output.  The result is that you (dear user) need not have any knowledge, beyond how to quote spaces, to set up almost all of the config strings.  For details see the comments in the configuration file related to 'space' (near the top of the file, search for 'config(space)'.

Change to allow packages to be included in the distribution (so you don't need to expand your tcl library just for filerunner).  Now include the packages 'ftp' and 'log' (required by ftp).  Packages are in the sub-directory 'packages'.  

Minor changes to the command line script to put 'most' errors in the  command window (as opposed to a popup) and to put failing lines in the history buffer (so you can fix them with out a total retype).  Mostly this helps the '%' commands.

Added comments in the Users Guide on how to set environment variables.
--------------------------------------------------------------------------------
12.3.30.12

This is a future feature flash:
As part of the sftp changes, started implementing a general Xftp handling feature.
The idea is that the user supplies a tcl script named Xftp which handles 
(even if it is only to message that the feature is unsupported) each of the
required ftp calls.  One then opens the Xftp connection by entering Xftp in the
dir line (just like ftp).  A work in progress is to do this with adb (the android
debug bridge).

And now back to the present:

Added a line in the Quick Start guide to get you started browsing a secure
FTP site.

Defined a new debug routine (frputs) this is present if '-db' is in the command
line.  For details see the very end of the 'fr' file.
  
Added an extended message that is printed when the inotify library is not found.
The message details how to build the library required to turn on the inotify
feature.

Removed "Hay Dimwitt" from a few error messages.  

Changed the FTP directory caching to selectively delete entries.  Prior code
deleted all entries on any dir change.  This can be a savings for large dirs
on FTP connections.

Added code to support Chmod in ftp/sftp directories.  Depending on the server
some of the chmod options (such as recursive, add and delete) may not work.

Fixed a couple of bugs in the directory tree command where we want to use a font
but forgot to declare the global container for it.  Also made the directory 
menu that comes up be to the right of the tree button so that even very long
directories will not cover the button and thus confuse the menu button
release with a selection in that menu.

The main point of this release is to add sftp capability.  We can do as much
and sometimes more (links are supported, for example) as we could with ftp.
This support requires the Expect package and uses the external sftp program.
This all started with changing to use the tcl library ftp package.  This made
it very clear what was needed to expand to sftp.

Add a separate inotify flag set for non-local file systems.  Need this to limit
the network (and remote system) traffic.

Add rate limit code to the inotify option.  The maximum update rate (min time
between updates) is now configurable in seconds.  This limits the system 
overload that could otherwise be generated.

Made minor changes in the multicolumn code.  We seem to miss the button-up
event on re-sizing if an update is in progress or occurs during button down.  
While I don't know how to restore this event, I changed the button-up on 
column reorder to also run the button-up on column re-size so we can get 
back in sync.

Made changes to the ftp code to just stay in the current directory if we can not
cd to a new one and the user says cancel.

Change the command line "%" (i.e. do a tcl command) to work even in ftp dirs and
to always have the global 'glob' defined (if you work on filerunner this helps).

Fixed the ShowListOnKey routine (which positions a directory listing when you
type a character in a directory listing window) to not croak on special
characters either as file names or search characters.

Expanded the 'inotify' capability adding configurability and, when possible, 
just updating the affected files line in the directory listing rather than 
redoing the whole listing.

Fixed the Show commands routine (it is supposed to allow you to move the command
buttons up and down) to work correctly again.  It was doubly broken, 1st by the
commands list not actually being the actual button list and then by the small 
size of the new <-=-> command buttons.

Added an 'update idletasks' to the panel update code.  This fixes the problem of
not returning to the same place when poping a directory from the stack.
--------------------------------------------------------------------------------
11.12.25.15

Made changes to the Arc (archive button) code to accept three %s things.  This
allows creation of the archive in some other directory (see configure Arc info).

Changed font update to always update the listbox fonts as the Gui font changes
were also being picked up by the Gui font change.  This keep the fonts separate.

Changed all the menus to have the Gui Font.  This was not specified before.

Fixed the 'reverse' search to start before the last found string so 'Search
Again' works correctly.

Changed the popup that asks if you want to create a directory to take carriage
return as a create request.

Added options 'from here' 'reverse' 'casefold' & 'regexp' (as check boxes) to 
the search query.

Changed the tearoff menu code to actualy build a text box to do the same thing.
This to get around the tcl/tk wanting to iconify the tearoff menu on loss of focus in the master window.

Added "Save&Quit" to the "View" pop up window.

The big reason for this release is the multi column directory list boxes.  Each
column has a header and an optional scroll bar.  Column widths and order as
well as existence at all are configurable.  The left and right directory list
boxes may be locked such that each has the same column order and width or they
may be independent.  Simple buttons control this linkage between the two list
boxes. For those that care, the heart of the multi-listbox code is in a
separate file...

Fixed a problem in GetDisplays (a routine to find and size all display heads)
we we needed to wait a bit longer for the window manager.  Failure mode was
'id not defined on first balloon pop up.

Implemented new sort options 'ascii, nocase & dictionary'.  Changed the code
that positions a directory on a charter typed in the list box to use the 
same sort option.  We added popup in to change the 'sort on' option to 'name
only' when doing this position as it depends on sorting by name. Added a check
box to change it to position directory entries and made this a possible fast
check box.

Implemented 'highlight' background and foreground colors for the second file
to be passed to the DIFF command.  These are, of course, configurable.  Thanks
to Gösta for the suggestion.  He also suggested some help on long file names so
we now position lines in the directory window and all the request windows such
that the end of the line is visible.

Changed the sort routines to make the dirs first/last independent of the 
rest of the sort.  So now dirs first/ mixed/ last is independent of other
sort items.  Also did a 'real' fix on the issue of sorting files with 
blanks in their name.  Also changed to do a better sort on extensions.

Changed the "toggle selection" button (that 'S' in the lower right of the 
file list panel) to actually toggle the selections.

Fixed color editor to (hopefully) find the rgb.txt file and then to properly
build a selection box of named colors.

Changed how we load the inotify package to just directly load it.  This allows
us to check the machine word size and load either a 32 or a 64 bit version.  
Now include both versions (32 & 64) for x86 and x86_64 machines.

Bug fix, was checking the configured 'ask to delete directory' instead of the 
'ask to delete file' flag on file delete.
 
Since Windows platforms can not do relative links, changed code to not
allow setting this flag.
--------------------------------------------------------------------------------
11.2.20.13

Added an option to the right mouse popup on 'view' windows to convert UTF-16.
This simply removes null (X00) characters in the displayed text.  It does not
change the file itself (unless you then select 'save as').

Change the getDisplays (the code that figures out the screen size(s)) to be
call only if needed (its needed by the balloon help code) and then only
once.  There is some minor flashing on the call, in case you are wondering.
This is because we need to actually put up windows on the display and then
measure what appears.

Change the 'term' configuration to accept a position for the working dir.
Term is started in the current working dir (for the selected panel) and 
now the invocation will also accept a working dir value.  See 'term' 
in the configuration section.

Added more mescat calls to prep for localization.  Set it up so that only
the main window translation code needs to be loaded initially.  Other
translations will be loaded as needed.

Added code to figure out the dimensions of the Display(s).  Tk thinks of 
the Screen as the composite of all the displays.  The code figures out the 
dimensions and locations of the Displays (up to 6) and builds a list
of the info for each display (glob(displays)). Each element is:
{xmin xmax ymin ymax} where xmin,ymin define the top left corner in
screen pixels.

Modified the Balloon code to use the above info to position the balloon
help box so that it is on the same display as the mouse and is completely
on that display.

Fixed commands run from middle buttons which ask for more info to put
the inquiry window on top of the main window.  Most annoying when using a two
head display to have the inquiry window show up on the other display.

Fixed 'For each' command (under 'Etc' menu) to display the pattern rather
than just '*'es.

Fixed error in 'bgerror', missing ']' introduced with message catalog changes.

Changed the get dir list code to:
 a.) get hidden (i.e. '.x') links.  Turns out the 'glob -type hidden' will 
     not return links.  
 b.) To correctly process files beginning with '~'.  We were quietly
     deleting them from the list.
--------------------------------------------------------------------------------
10.12.28.23

Cleanup for release.  Notify is now working correctly..  Since I modified
the inotify tcl interface code I am including it in the release.

Changed the PopError code to use the same window for all errors, just
appending the new error text at the end.  This should prevent the flood
of windows when, for example, a copy of a directory fails.  Also added
an option to clear the error window.

Added code to use the Linux kernel inotify command to trigger dir updating.
The timed update is still there, but can be shut off (always could be) with
the 'Autoupdate' entry under 'Miscellaneous'.

Added a new configure option to configure check boxes into the main (top) menu.
By changing the configure option 'fast_checkboxes' you can now specify up to
7 different check boxes.  Chose Edit Configuration in the Configuration menu,
then Fast Checkboxes (under Miscellaneous) to read all about it.  Thanks to
Peter Vollmar for this idea.

Added the middle_button_list to the configure options.  You can now configure
the middle button list, i.e. disable (i.e. disappear) a button, or change
the button order.  You can even put the same button in more than once.

Fixed the code that reads in user command buttons to work correctly.  It 
was reading the code and then just throwing it away.  Also changed the example
in the user guide to do the correct call to EntryDialog.  This code was
changed to require the window as the first parameter (see below change to
EntryDialog).

Fixed the dir list heading to scroll (left & right) with the dir list.

Fixed the view window tearoff menu to be a slave to its master window.

Focus follows mouse introduced a problem with the MkDir and Select buttons in
that they could not find the changes in the dir list dir line.  Fixed this.

Changed EntryDialog code to pop up the window in the proper place and to make
the dialog window part of the window requesting dialog.  For example when 
saving a file just 'viewed'.

Initialized the hotlist for windows with the volume list, i.e. /a /c etc.

Added code to make the popup that asks about creating <home>/.fr appear
near the middle of the screen, least it get lost on an edge.

Minor change to give a higher probability of getting all the config info
in view when clicking on the item in the left hand edit configuration window.
--------------------------------------------------------------------------------
10.9.21.13

Fixed a bug that prevented FTP setup.  Also a problem with USER vs USERNAME
env variables (first is for non-windows, second is windows).
--------------------------------------------------------------------------------
10.9.20.14   <- That too is a date, but a nicer looking one :)

Changed to use env(USERNAME) instead of env(USER) for windows. Fixes the
first line in the window.

Added the Makefiles dir to the release..

Fixed the 'Clone' code to work correctly for windows as well as linux and
(hopefully all platforms).  This also involved fixing the handling of file
names (and paths) with blanks in them.  Also changed the 'wish' call from 
'exec wish "$0" "$*"' to exec wish "$0" "$@" so the parameters are separate.

Added code to pop up the 'Hotlist' if the up button '^' is pushed and the
result is the same dir (trying to go back from '/' or, more to the point
'c:/').  The notion is that one could put a volume list in the Hotlist.

Noticed that Henrik put a few bells and such in the Hotlist code so we 
expanded the info in the Configuration file to explain how to use them.

Added code to properly sort the file list if it includes file names with blanks
in them.

Added a configuration option for hard links (HardLnk button) so it is not
dependent on an option to the cp command.

Separated the configuration for copy (cp) for files and dirs.  Added an option
to use the internal Tcl file copy instead of a helper.  This will not allow
back-grounding the copy, but eliminates the need for a helper cp program.

Changed to a more 'regular' version code.  It is still a date...

Added Focus Follows Mouse option.

Changed the "About" popup to die when the window manager is told to kill it
(i.e. the "X" is clicked).

Change to root dir display in Windows from e.g. C:/ to C: to match other dirs
and thus eliminate the "//" in the window label when viewing files in the 
root dir.

Fixed bug in finding free space while in 'RECYCLER' dir where 'cmd /C dir'
errors out.  Now use '??' as free space when this happens.
--------------------------------------------------------------------------------
<20100903....>
Changes to the Installation file (aka README) to reflect the current name
and remove references to the "old" C files.

Changes to text files referencing how to get filerunner and how to 
join the new mailing list and how to contact me.

Added tip (Help: Tips) on blanks in path/file names in configuration file.
--------------------------------------------------------------------------------
<20100817....> (that's a date, by the way)

Changes to produce "\" file names for the windows version.  Required
changes to copy and editor commands to properly escape the "\".

Set to default to xcopy and cmd /C for windows cp and sh commands,
wordpad for the default editor (if env(EDITOR) is not defined).
--------------------------------------------------------------------------------
<20100812....>

Fixed FTP rename request and then implemented FTP move using the
FTP rename code.

Extensive changes to the font and color selection code.  These now
bring up windows which, in the case of color, change the windows as
you do the modify.  You can have active color changes windows for each
configurable item at the same time.

Adopted the balloon help code from the imported font code.  Still need
to set it up for the main windows. 

Added a "header" line for the dir list box windows.  Still needs work to
properly track horizontal scroll...
--------------------------------------------------------------------------------
<20100228....> 

Added the ability to abort a shell command run from the drop down window.
Just do a Control-C in the command line.  If the command line is empty,
the oldest active command will be aborted.  If the line is not empty, it 
will be cleared.

The multi-command ability was enhanced to truly allow multiple commands
to be active at the same time.

(May want to add a selection window to the abort to choose which to abort.)

Added position to the directory history.  If you revisit a directory
and it is the top of the list, the window will be position to where it 
was when you left that directory.  Works (always) for the <- button and 
for any other way you can get back (cd .., ^, cd full path).

Fixed the ftp commands to properly handle "." and ".." on copies and 
directory deletes.

--------------------------------------------------------------------------------
2.5.1 - 1999-12-30

  Fixes

  - Y2K bug fixed! :-) Year 2000 would show up as 100 instead of 00...

  - When you click in a text window and then pressed pageup/pagedown
    you would scroll two pages. Fixed.

  - Dialogs are now placed in the middle of the FileRunner window
    instead of in the middle of the screen (which was very annoying
    when running a Xinerama setup and the dialogs would pop up smack
    in the middle between the two displays...)

  - Executes 'wish' instead of 'wish8.0'

  - Sorry, did not have the opportunity to create Solaris binaries in
    this release. Will fix that in a week or so.

  I hope to make a more full featured release soon with some other
  stuff I want to get fixed/added but at least this release will get
  rid of that stupid Y2K bug (hopefully)...

--------------------------------------------------------------------------------
2.5 - 1998-06-02

  News

  - Created new configuration browser, to ease browsing and editing
    the rather long list of options. Invoked with Configuration->Edit
    Configuration.

  - Automatically saves configuration (incl. hotlist) on
    exit. Configurable through config(save_conf_at_exit) in the
    configuration browser.

  - Mouse buttons used for wheel on wheelie-mice are now configurable
    through config(mwheel,neg) and config(mwheel,pos) in the
    configuration browser. These default to 4 and 5, respectively and
    corresponds nicely with the following kind of "Pointer" section in
    an Xfree 3.3.2 (or later) XF86Config file:

      Section "Pointer"
        Protocol        "Auto"
        Device          "/dev/mouse"
        # Choose button events for wheel up/down actions
        ZAxisMapping 4 5
        BaudRate        1200
        Resolution      100
      EndSection

  - FileRunner will now create relative links (as default) instead of
    absolute links when using the S-Link and S-LnAs
    buttons. Configurable via the config(create_relative_links)
    option. (A relative link is one that points to something of the
    form "../../foo". An absolute link looks like "/a/b/c/foo").
    Thanks to Norbert Erkeland for this code.

  - FileRunner now has the option of whether or not to run "pwd" after
    cd'ing to a new directory to check where it ended up. This is
    controlled by the variable config(cd_pwd) which is per default on
    (which mimics the behavior of older FileRunner releases). If you
    set it to off, FileRunner will infer the new path from the old
    path. This makes a difference if you cd to a link that points to a
    directory. There is a similar config option config(ftp,cd_pwd) for
    the FTP case.

  - You can now colorize the middle command buttons in a supported
    way. Look at the config(middle_button_colors) in the configuration
    browser.

  - Added FTP resume background (async) download. See Utilities menu.

  - Added ForEach button that runs a command for each selected file.
    This command is very close to "Utilities->Run Command On Selected..."
    but instead of running one command on many files it runs one command
    per file.

  - Added "Etc->Recurse Command...". This runs a command recursively
    in the current directory and downwards using the Unix find utility.


  Fixes

  - ~/.fr/tmp is now used for temporary FTP files (primarily used when
    you "view" a file in an FTP directory). Using /tmp/USER_fr_tmp was
    a security risk, since anyone could create /tmp/USER_fr_tmp and
    put soft links in here that would get wiped when the user viewed a
    file by that name.

  - FileRunner no longer does a CD to the root directory when logging
    in to a remote FTP site.

  - Last downloaded filename through HTTP is saved for next download.


  Changes

  - FileRunner is now explicitly a part of the Open Source movement,
    as shown when choosing "File->About...".

  - "Settings" is now called "Configuration" consistently within 
    FileRunner. I've done a search/replace in the User Guide but
    I'm sure it's not perfect...

--------------------------------------------------------------------------------
2.4.2 - 1998-02-15

  Fixes
  - Bug: "Error in start up script: can't read "glob(gui,color_cursor)": no such
    element in array"
  - Wrong date displayed in FTP listings sometimes.

--------------------------------------------------------------------------------
2.4.1 - 1998-01-04

  News
  - FileRunner is now distributed under the GNU General Public License.
    Let's hope it turns up in even more places. Redhat, are you listening? :-)
    (Btw: No one ever bothered to pay $20 for a commercial license, but I have 
    received a bunch of cool postcards. Keep 'em coming :-)
  - Support for "wheel"-mice. Scroll lists and text using the mouse wheel. 
    Thanks to Colas Nahaboo for this. Config parameter: config(mwheel,delta)
    determines how many lines to scroll for each wheel click. Shift-wheel
    scrolls one line.
  - You can now change the color of the cursor.

  Fixes
  - Fixed "checkowner" function when copying/deleting files.
  - Can now parse FTP site reactor.actlab.com (yucky WinNT host :-).
    Doesn't read dates from this site correctly, but who cares...
  - Various minor stuff.

--------------------------------------------------------------------------------
2.4 - 1997-09-07

  News
  - Supports Tcl/Tk 8.0 only. Get it! :-)
  - Added Batch FTP download. This is useful when you want to select a
    number of files for downloading when the files are not in the same
    directory or even on the same site. You can now browse any FTP site,
    add the selected files to the batch list, then later start the batch
    download and go do something else while the files download. See the 
    Etc menu.
  - HTTP downloading. This was just too easy to implement for me to be 
    able to resist :-) Just choose "Etc->HTTP Download" and enter an 
    URL to download. You don't have to bother with adding "http://"
    if you don't want to. Then choose a filename to save the download to. 
    You can also enter an HTTP proxy in the config(http,proxy) parameter.
    (Do a "Settings->Save Settings..." followed by a "Settings->Edit 
    Settings..." to see this parameter)
  - Added Help->Tips menu. This contains a few tips on usage, like how to 
    color your command buttons if you want to.
  - Foreground color for selection is now configurable.
  - User-configurable button commands now get an extra argument: The mouse
    button that was used to press the button. This means you can let your
    buttons do different things if pressed with different mouse buttons.
    Unfortunately this also means you need to add a new argument to the
    command. (Values: 1:Left 2:Right 3:Middle) See chapter 7 in the User's 
    Guide.
  - Added the following entry to the config(view,extensions) parameter:
      { {rpm -qilp {%s}}
        {*.rpm}
        -viewtext }
    This lets you view .rpm files. You'll have to put this in yourself 
    if you already have a config file.

  Fixes
  - FileRunner now handles file names with any characters allowed by the 
    file system. EXCEPTION: When copying directories the directory names 
    (source and destination) must not contain tick-marks "'" since this 
    is used as an escape character. I doubt this will be a problem in 
    the real world, though.
    FileRunner used to have a real problem with file names containing ", }, 
    ], $ etc. You don't want to know what a headache Tcl gave me with its 
    evaluation rules... AARGH!
  - "Show All Files" now also correctly shows file beginning with a dot . in the
    hyper-menu.
  - Miscellaneous fixes.

  Changes
  - Because of the new improved file name handling I've had to change the
    config(cmd,arc) command. This is now gone and replaced with
    config(cmd,archive). (The change was made only so I could enforce 
    a new default value for this variable, which I cannot if people already 
    have this variable in their .fr/config file.) The format for this command
    is now simply "archive-command {%s}" where {%s} will be substituted with
    the directory name at runtime. Do a Save Settings followed by Edit Settings
    and see the config file for more info on this.
  - The system wide config file is now called "config" and should be placed
    directly under the FileRunner installation directory.

  Stupid stunts
  - There are bits and pieces here and there in the code referring to WIN32...
    Well, I started to port FileRunner to Windows but I just got rather fed up 
    with it after having received a prolonged exposure to Windows programming...
    It shouldn't be too hard to finish, though.

--------------------------------------------------------------------------------
2.3 - 1997-03-30

  New stuff
  - FileRunner will now cache reads from FTP directories. (If you go to a 
    previously visited FTP directory, it will fetch it from the cache.) The 
    cache (all of it) will be invalidated when you press the refresh button (the 
    one with two arrows chasing each other). The number of directories 
    cached is configurable via the config(ftp,cache,maxentries) parameter. 
    I have a feeling this feature will come back and bite me... Tell me if 
    you see something fishy. :-)
  - Shows estimated time of arrival in both relative and absolute time.
    (I discovered relative time estimate wasn't very useful when it showed
    something like 1200 minutes...:-). Estimate is now calculated over the
    average transfer speed during the last two minutes.
  - New command line argument "-iconified" will start FileRunner in iconified
    mode.
  - Config files are now saved under ~/.fr/ (which is now a directory). The 
    .fr file is called .fr/config, the .fr_cmds file is called .fr/cmds and
    so on.

  Fixes
  - Couldn't handle files with the characters " { } in the file name. This
    fix unfortunately will have the effect of incorrectly sorting files with
    spaces in them last in the list.
  - If you run FR as root, having done "su" in a user shell, FilerRunner now 
    shows the correct "user@machine" in the top status line.
  - Doesn't barf anymore if it detects a socket or a pipe in an FTP listing.
  - I got a question on how to use the "-remote openFile()" argument to netscape
    if you wanted to have a default rule for viewing .html files. The answer was
    trickier than I though because of tclsh's hairy quotation and evaluation 
    rules. Anyway, here is how you do it: First, add the following to your
    config(view,extensions) variable:

      { {viewhtml {%s}}
        {*.html} }

    Then create a script called viewhtml that looks like this:

    #!/bin/csh -f
    netscape -remote openFile\("$argv"\)

    That should do it. The problem was that tclsh won't do the normal evaluation
    on lists inside ( ). That's why you have to do this work-around with the 
    external script.
  - Should now correctly work with Windows based ftp deamons. Thanks to 
    Colas Nahaboo for this fix.
  - Misc bugs fixed.


--------------------------------------------------------------------------------
2.2.1 - 1997-01-18

  Fixes
  - The "Find file" function now behaves better. It was stupid sometimes.
  - Now handles trouble converting FTP dates gracefully. If you have the
    timezone set to GMT+xx on your computer, there seems to be a bug in
    "clock scan" that prevents it from converting date strings with GMT+xx 
    in them. The result is that dates might be wrong. Work-around: Use
    another way of denoting the time zone, like MET or PST or whatever.
  - Select-all button didn't update the status line with selected/total...
  - A couple of other small bugs fixed.


--------------------------------------------------------------------------------
2.2 - 1997-01-14

  Features
  - "Find file" function added both for unix files and ftp sites. (Uses the
    "site exec locate" command to search FTP sites).
  - Added chmod button and GUI requester. Should be fairly intuitive.
  - Copy with resume for FTP added. Let's you continue an FTP transfer that
    was aborted. Great when Netscape drops an FTP download for no reason...
  - History is now saved to disk between invocations of FileRunner.
  - Shell commands are now always executed in the background. A small
    "R" to the right of the command line will turn red when one or more
    commands are executing. More than one command can be executed 
    simultaneously, output will be intermixed in the output window.

  Changes
  - FTP transfer speed measurement is now more correct.
  - New chapter on which files FileRunner uses added to the online guide. (10.2)
  - Minor smaller things mainly affecting the GUI.

  Bug fixes
  - Fixed: Mixes dates for ftp files (thinks some files are created 1997, when
    they were created late 1996).
  - Fixed: "Copy As" for directories: "can't read "destfile": no such variable"
  - Fixed: Error when copying FTP files that are links.
  - Fixed: Searching in the viewer or internal editor affected the selection.

  Notes
  - Don't run FileRunner 2.1.3 on Tcl/Tk 8.0a1. It's too buggy. Tcl/Tk that is.

--------------------------------------------------------------------------------
2.1.2 - 1996-12-08

  Features
  - Fully user-defined bindings for to the View, UnPack and UnArchive 
    operations. Re-generate the .fr settings file and see how they work.
    Warning: your old changes to the config(cmd,unarc,xx), config(cmd,unpack,xx)
    and config(cmd,arclist,xx) variables will not be used any more. See also 
    below on "New config default values".
  - You can now FTP to non-default ports. The format is 
      ftp://ftp.foo.com:8080/pub/bar
    Just leave the port stuff (:8080) out if you connect to port 21 
    (normal FTP).

  Bug fixes
  - Stupid "Can't find $USER variable" bug should be gone. FR will now look
    for the $LOGNAME variable if $USER cannot be found.
  - FR now correctly resets iconname after an aborted FTP transfer.
  - Matching on file name extensions are now case insensitive.
  - FTP file listings now a little more robust. (Couldn't handle wuarchive
    listings before).
  - Sometimes FR came up with incorrect left/right start directories.
  - Won't run the file panel updater if you're entering text in a text
    entry. (Since this will take the focus away from the entry widget
    and you don't notice you'll start typing keyboard shortcuts for 
    FR commands... Bad :-)

  New config default values:
  - You HAVE to fix your config(view,extensions) variable to reflect the new
    settings in this variable. For example, the rule for viewing .tar.gz 
    files is now in this variable. If you just want to get the default
    value for this variable into your .fr file, 1: edit the FR settings,
    2: delete the parameter and 3: save, then 4: exit. 5: restart FR, 6:
    save settings. Now the default value for this parameter will be in your 
    .fr file. If you're running FR for the first time you don't have to 
    bother with this.

      set config(view,extensions) {
        { {xmikmod {%s}}
          {*.mod.gz *.s3m *.mtm *.stm *.xm *.uni *.mod} }
        { {timidity {%s}}
          {*.midi.gz *.midi *.mid.gz *.mid} }
        { {xv -gamma 2.0 {%s}}
          { *.bmp *.iff *.jpg *.pbm *.pgm *.png *.ppm *.tga 
            *.tif *.tiff *.xbm *.xpm *.gif} }
        { {gzip -dc {%s} | ghostview -}
          { *.ps.gz } }
        { {ghostview {%s}}
          { *.ps } }
        { {xanim {%s}}
          {*.avi *.fli *.flc *.mpg} }
        { {gzip -cd {%s} | tar tvf -} 
          { *.tgz *.taz *.tar.z *.tar.gz }
          -viewtext }
        { {tar tvf {%s}}
          {*.tar}
          -viewtext }
        { {unzip -lv {%s}}
          {*.zip}
          -viewtext }
        { {lha -v {%s}}
          {*.lha}
          -viewtext }
        { {gzip -cd {%s}}
          {*.gz}
          -viewtext }
      }

  - The new parameter for unarchiving stuff.

      set config(cmd,unarc,extensions) {
        { {gzip -cd {%s} | tar xfBp -}
          {*.tgz *.taz *.tar.z *.tar.gz} }
        { {tar xfBp {%s}}
          {*.tar} }
        { {unzip -oqq {%s}}
          {*.zip} }
        { {lha -x {%s}}
          {*.lha} }
      }

  - The new parameter for unpacking stuff.
      
      set config(cmd,unpack,extensions) {
        { {gzip -d {%s}}
          {*.gz} }
      }



--------------------------------------------------------------------------------
2.1.1 - 1996-11-03

  Small features/other
  - Changed to use Tcl/Tk 7.6/4.2. You can still run on 7.5/4.1 but 
    you'll have to edit the scripts.
  - Sort on reverse time added.
  - New platform support: AIX.
  - Support for system wide .fr file. (Sourced before the user's .fr file).
  - FTP sorting on time now implemented.
  - FTP: Selecting "show all files" now works.

  Bug fixes
  - Editing shell command color works.
  - Usage of "tar" internally now doesn't use the -B flag (for HPUX).
  - Using Tcl/Tk 7.6/4.2 seems to have fixed the infamous "grab failed" problem.
  - Misc fixes.

  Documentation
  - Added a FAQ file with know bugs and common Q's and A's.



--------------------------------------------------------------------------------
2.1 - 1996-10-27

  Features
  - You can now copy both to and from an FTP site.
  - Recursive copying of directories both to and from an FTP site.
  - Makedir, Delete and Rename works in FTP. Recursive delete of FTP
    directories implemented too.
  - Rule based configuration of FTP site logins. For example always
    login with username X and password Y to sites matching *.Z.com using
    proxy P etc. See more in the online guide, chapter 8.8.
  - Icon name now shows estimated time of arrival (ETA) for FTP transfers.
  - Select All/Select None toggle button added to the lower right
    of the file list panes. This is the button with letter S on it.
  - If you enter a directory that doesn't exist you get the choice 
    of editing the faulty directory or create it. This is a convenient 
    way of creating new directories.
  - The middle mouse button in the file list now work the same way
    as mouse button 1 + ctrl. It doesn't deselect anything but just
    toggles the previous selection. Try it. See chapter 3.3.4.1
    for a list of available mouse operations.

  Smaller features/changes
  - When a new directory is created, all it's parent directories are created
    also if they don't already exist.
  - The escape button now works to exit the text viewer and editor.
  - The Page up/down, Home/End keys work in the text viewer and editor without
    first clicking in it.
  - Default colors are changed to a cool metallic green. Just change it if you
    don't like it...
  - The Abort button is called Stop now.

  Documentation
  - Reworked chapter 8 about FTP.
  - Reworked chapter 3.3.4.1 about mouse buttons in the file list. Here you
    can now find a list of mouse operations available.
  - Misc. changes.

  Bug fixes
  - User defined bindings from file extensions to action (e.g. .jpg -> 
    launch image viewer) are now searched before the built-in bindings.
  - FTP now correctly handles file names with spaces in them,
  - Hopefully the infamous "grab failed: application already has grab" 
    will be a little less frequent. There is still a bug inside the Tk 
    menu code that can trigger this bug.
  - Move on FTP file crashed FR. (It can't move FTP files yet, but it 
    shouldn't crash...)
  - The recursive directory menu now correctly handles file names with   
    spaces in them.
  - More misc. bug fixes.

  There are new default values for the some parameters. If you already 
  have a .fr file, you can see below what the new defaults are:
    set config(gui,color_select) "#f1a9ec43aa9d"
    set config(gui,color_scheme) "#d1f0dfbebd10"
    set config(view,extensions) {
        { {xmikmod {%s}}    { *.mod.gz *.s3m *.mtm *.stm *.xm *.uni *.mod } }
        { {timidity {%s}}   { *.midi.gz *.midi *.mid.gz *.mid } }
        { {xv -8 {%s}}      { *.bmp *.iff *.jpg *.pbm *.pgm *.png *.ppm 
          *.tga *.tif *.tiff *.xbm *.xpm *.gif } }
        { {gzip -dc {%s} | ghostview - } { *.ps.gz } }
        { {ghostview {%s}} { *.ps } }
      }
    set config(cmd,touch) "touch"
    set config(cmd,du) "du -s"

  Known bugs
  - There is still a problem with the grab failed thing that can pop up here 
    and there. It seems to be a problem in the Tk menu implementation.
    Anyone have any ideas how to get around this?



--------------------------------------------------------------------------------
2.0 - 1996-09-24

  Features:
  - Added shell windows. Activated by the button to the right of the up-dir
    button at the top of the file list panes. This pops up a small built-in 
    shell that lets you run commands inside FileRunner. Like a simple xterm/
    shell session. The "current directory" of the left and right shell is 
    always synchronized with the "current directory" of the respective file 
    list panels. See the online guide for more on this.
  - Asynchronous file operations added. Instead of pressing the left mouse 
    button over the command buttons (like copy, delete etc...) you press the 
    right mouse button over the buttons and the command is executed 
    asynchronously (in the background).
    For some buttons, this is not implemented (where the operation is very fast 
    anyway, like doing soft links). This IS implemented for FTP,
    which means you can mark 25 files and press the right mouse button
    over the Copy button and have 25 parallel copyings going to the same
    server... Be careful with this!
    The drawback with asynchronous operations is that it won't tell you 
    if things go wrong during a copy, etc (for some operations, though
    it will print this to the standard error output for FileRunner). 
    It will also increase the risk that the file panels aren't showing 
    correct information (you'll have to use the Update button). For
    ftp transfers, it will usually take longer since it has to start
    another ftp session for every file it copies (in parallel).
  - New config option [config(view,extensions)] that holds general rules for
    which viewer to invoke on which file. For example *.jpg launches the 
    image viewer and *.avi launches the movie viewer. This is now fully
    user-configurable.
  - Abort button added. This tries to abort the current command. For normal
    file access commands (copy, move etc) it can only abort between two 
    files, not in the middle of operating on a file (in the middle of copying 
    a file). For FTP, you can abort in the middle of a transfer. The FTP 
    link will be closed when you do this, but reopened the next time you 
    access an FTP file.
  - In conjunction with the abort button, added the clone button. Only these
    two buttons may be pressed during execution of a command, like a long
    FTP transfer, for example. The clone operation is gone from the File menu.
  - Added back button (arrow left). Works just as the back button in 
    Netscape.
  - Added "Settings->Edit xxx color". Changes GUI colors on the fly.
  - Added "Settings->Edit xxx font". Changes GUI fonts on the fly.
  - New interface for User-defined buttons. See online guide.

  Small features:
  - Selection in file list panes now produce list of files when exported
    to other apps (or inside FileRunner).
  - Close button added to text viewer and text editor. (The little cross)
  - "normal" Save option added to text editor menu. Don't use "save", 
    then "quit" when editing config settings, use "save&quit" 
    instead... (Or the config won't be read back in)
  - File list panes now show selected / total entries.
  - Added geometry config options that let's you set the size and position 
    (in normal X11 syntax) for the main window, the text viewer window and 
    the Quick-editor window, respectively.
    [config(geometry,main), config(geometry,textviewer), 
    config(geometry,qedit)] 
  - Added "Settings->Set left start dir", "Setttings->Set right start dir"
    that saves your position in the file list panels for next time 
    you start. Quicker than editing the settings file by hand. You have 
    to save your settings to store it to the .fr file.
  - Added "Settings->Set window pos/size". Sets the config variable for
    the main window geometry [config(geometry,main)]. You have to save 
    your settings to store it to the .fr file.
  - Added command "Utilities->Check Size of selected..." that counts the
    size of selected files and directories and shows the result
    in kilobytes. Note that this uses the du -s command and you might
    have to add the -k flag here to get the answer in kilobytes on some
    platforms (like Solaris 2.x). Do that in the Settings->Edit Settings
    command [config(cmd,du)].
  - Added "Utilities->Swap Windows" that swaps the left and right directories
    shown.
  - Added a "little" keyboard support. If you set the config variable
    config(keyb_support) to 1, FileRunner activates keyboard support.
    Currently this is not very extensive. See online guide for more
    info on this.
    Config variable config(keyb_listb_support) has changed name to 
    config(keyb_support) and changed semantics to mean general 
    keyboard support on/off.
  - If you press the right mouse button in the directory entry, a requester
    pops up asking you to type a new path. This is sometimes faster than
    going to the directory entry and then clearing it, and then entering
    the new directory.
  - Changed the Update button to an iconized button. Due to lack of
    space. Sorry for this, it makes it harder to understand...

  Bugfixes:
  - Commands will now tell you if there are stuff they cannot do, like 
    doing a soft link from an FTP file. (Instead of just doing nothing)
  - Window is repainted correctly during long FTP transfers. This also makes
    the window react to the quit-window (delete) command sent to it from the
    window manager during transfers.
  - Bugfix: When history got longer than xx entries, it got truncated 
    to 0... Now only the oldest entries are deleted (as it should be)
  - Exiting FTP connections is now faster/more reliable.
  - FTP client now changes server socket for data connections on every command.
    Sometimes FTP servers had problems with using the same server socket
    every time, giving error codes 425 and 500 (?).
  - Bugfix: When deleting a directory displayed by FileRunner, it would
    crash. (Stupid bug, since it was designed to handle this...)
  - Bugfix: Sometimes FR would fail with "grab failed: another application 
    has grab" It looks like the grab fails for a reason I cannot determine. 
    It shouldn't fail. A workaround for this is that you now get a warning if 
    a grab fails. If you don't do anything stupid (like trying to start another
    command before the first one is finished) you should be OK. Anyone got an
    idea why this happens and how to handle it better?



--------------------------------------------------------------------------------
1.2 - 1996-08-24
  - Default "unzip {%s}" command changed to "unzip -oqq {%s}"
    You have to change this in your .fr file if you already have a .fr file.
  - No more crashes when FileRunner tries to stat a file that disappeared 
    between getting the directory list and the actual stat'ing.
  - Viewing .gz files now works. (Just right-click on any gzipped text file)
  - RunCmd and C-Select button moved to Utilities menu. 
  - S-LnAs (Soft-Link As..) command button added.
  - Copying links: Copying a link to a file will copy the file, not the 
    link. Copying a link to a directory will copy the directory, not the 
    link. This is new behavior.
  - Fixed Makefile.cc and ext.c so it will compile on Unixware and IRIX
  - Color for selection in listbox now configurable.  
    [config(gui,color_select)]
  - Fixed: Choosing a list of files, then pressing Edit or View(Image).
    (This is supposed to pass the whole list of files to the editor/image 
    viewer)
  - Added mod and midi extensions and mod and midi player commands.
    [config(cmd,play,sound,mod) and config(cmd,play,sound,midi)]
  - Added config option to allow listboxes to take focus when clicked. Gives
    some more control over keyboard access to the file list. Default off.
    [config(keyb_listb_support)]
  - Added config options to decide whether you want FileRunner to ask "Are
    you sure?" when deleting directories or files, respectively.
    [config(ask,dir_delete) and config(ask,file_delete)]
  - FTP transfers now show total average speed at the end of the transfer.



--------------------------------------------------------------------------------
1.1 - First public release 1996-08-11


--------------------------------------------------------------------------------
1.0 - Internal release



