© Copyright Clive E. Chapman 2004. All rights reserved.

Changes in FL Tools 4.08

Version 4.08 (2004-10-18)


Contents

This page Other pages
Summary of Changes Main Page
Changes in FL Licence
Changes in FLCUST Summary of History
Changes in FLFIND Changes in 4.07
Changes in TEE Changes in 5.00
Problems Fixed User Guides
Other Points  


Summary of Changes

FL

  1. New 32-bit version for Windows XP (also runs on 95/98/98SE/ME/NT/2000)
  2. Support for wide screens (wider than 80 cols) introduced
  3. Maximum number of files increased
  4. /- (Attributes) invocation option renamed to /A and enhanced
  5. /DA, /DD, /DF (Date) invocation options renamed to /D and simplified
  6. /ZA, /ZD, /ZF (Size) invocation options renamed to /Z and simplified
  7. /T (Tree) invocation option enhanced
  8. "-" accepted as option-prefix character
  9. #- (Attributes) command withdrawn
  10. #L (Load) command withdrawn
  11. #A (Add), #R (Refresh), and #W (Window) commands enhanced
  12. #G (Goto) command introduced
  13. #L (Locate) command introduced
  14. Command stack initialised with #R command equivalent to FL invocation args
  15. Processing of "!" line prefix enhanced
  16. Heights of replace-mode and insert-mode cursors revised
  17. Processing for upper/lower case in file names revised
  18. Processing of ALT, CTRL, and SHIFT keys revised
  19. Restrictions on use of RIGHT-ALT (ALT-GR) key explained
  20. Support for #C command starting new command window on OS/2 withdrawn
  21. Use of temporary directory revised
  22. Error processing when output directed to file revised
  23. 16-bit OS/2 version withdrawn
  24. DET.EXE withdrawn (but still available)

FLCUST

  1. New 32-bit version for Windows XP (also runs on 95/98/98SE/ME/NT/2000)
  2. Support for tall screens (taller than 25 rows) and wide screens (wider than 80 cols) introduced
  3. Heights of replace-mode and insert-mode cursors revised
  4. Blinking cursor re-instated
  5. Color of selected subfields on "Other Settings" panel revised

FLFIND

  1. Versions provided for all supported operating systems
  2. "-" accepted as option-prefix character
  3. Processing of absent file extension made consistent with FL

TEE

  1. Versions provided for all supported operating systems
  2. "-" accepted as option-prefix character
  3. Error checking and diagnostics improved

Problems Fixed

  1. (FL) Inaccessible system directory on NTFS drives
  2. (FL) Up directory from root directory displays empty list line
  3. (FL) Wrong date shown for directories after command executed
  4. (FL) #Q command on DOS not consistent with #Q on OS/2 and Windows
  5. (FL) R and S attributes interchanged when list output to file

Other Points

  1. FL User guide not updated for this release

[Back to Contents]


Changes in FL

  1. FL version 4.07 introduced a 16-bit Windows 95 version of FL that supported long file names on Windows systems. This worked reasonably well on Windows 95/98/98SE/ME, but had very-poor keyboard response on Windows XP. (Users of Windows NT/2000 could avoid this problem by using the 16-bit OS/2 version of FL on those systems.) In the new release the Windows 95 version has been withdrawn, and is replaced by a true 32-bit Windows version. Key features of this new version are:

    • Supports long file names
    • Can list a large number of files
    • Has normal keyboard response
    • Receives the return code from commands (Windows NT/2000/XP only)

    This new version is recommended for all versions of Windows from Windows 95 to Windows XP, and should be used in preference to the DOS, Windows 95, or 16-bit OS/2 versions. Please note the following points:

    1. On Windows 95/98/98SE/ME, FL is unable to obtain the return code resulting from commands passed to the operating system. This is a limitation of the Windows command processor on those systems.

    2. All of the FL tools are provided in OS-specific versions, with the exception of FLTREE, which for this release is available only in DOS and 16-bit OS/2 versions. The DOS version should be used for DOS and Windows 95/98/98SE/ME/XP, and the 16-bit OS/2 version for OS/2 and Windows NT/2000. It is hoped to provide OS-specific versions of FLTREE in a future release.

    [Back to Summary of Changes]

  2. This release of FL adds support for wide screens (FL already supported tall screens). The smallest screen on which FL will run has been formalised at 10 rows by 80 columns, but FL will run on any screen taller or wider than this, and adjust its output appropriately. On the more-recent versions of Windows it is possible to define a command window to be any size you like – you are no longer restricted to the few screen sizes supported by the original PC hardware.

    Note: in this release the mode-2 screen does not exploit wide screens; that capability is planned for a future release.

    [Back to Summary of Changes]

  3. The limit on the number of files that can be listed has been relaxed; for the 32-bit OS/2 and 32-bit Windows versions, the limit is now circa one billion files (approximately two to the power of thirty).

    The limit on the maximum number of files depends on the version of FL being used:

    • The DOS version of FL does not use a DOS extender, and so is restricted to memory below 640KB. In a relatively empty DOS machine (that is, few device drivers loaded below 640KB), FL can list 4000-5000 files, but that leaves no memory available to execute any programs from the FL command line.

    • The Windows 95 version of FL was a DOS version in disguise, but supporting long file names. It had a much lower limit – about 1300 files.

    • The 16-bit OS/2 version of FL runs in a segmented address space, with the segment size being 64KB. As a result FL is limited to about 16375 files (approximately two to the power of fourteen).

    • The 32-bit OS/2 version in previous releases was limited to 100K files, but that was a purely arbitrary limit which has been relaxed in the new release.

    Although the implementation limit is now one billion files for the 32-bit versions of FL, that is not the same as the practical limit. The author has successfully listed 4.2 million files on Windows XP, on a machine with 2GB of RAM. The list occupied 1.55GB of memory, and so did not provoke swapping of memory pages to disk. If the list is too big to accommodate entirely in memory, page swapping is likely to be the limiting factor. Generating the list creates memory pages in a sequential order, but sorting the list accesses the pages in an order that is effectively random, and it is the swapping of memory pages to and from disk during the sort that is likely to result in unacceptable performance.

    As a rough guide, FL can list about 3000 files per MB of memory; use this figure to judge whether you will be able to create a list without provoking swapping of memory pages.

    Having created a list containing one billion files, you then need to navigate it. See later items for ways to do this.

    [Back to Summary of Changes]

  4. The /- (Attributes) invocation option has been renamed, and its function enhanced. Option names are easier to remember if they have some mnemonic value. Sadly, the /- option had no mnemonic value, and has been renamed to /A (Attribute). In addition, its function has been extended to allow negative as well as positive specification of attributes. The full syntax is as follows ([ ]=optional):

    /A[:][[+]attrs1][-attrs2]

    where the attributes prefixed with "+" are attributes that the files and directories must have in order to be included in the list, and the attributes prefixed with "-" are the attributes that the files and directories must not have in order to be included in the list. For example, "/A:+FHS" includes only files that have the hidden and system attributes, whereas "/A:+F-HS" includes only files that do not have the hidden or system attributes.

    If an attribute appears in neither the "+" nor "-" list, that attribute is ignored when deciding whether to include or exclude a file or directory.

    The "+" and "-" symbols apply to the list of attributes that follows the symbol; if neither symbol is specified, "+" is assumed. The "+" and "-" can be specified in any order, and can be intermingled. The following are all equivalent:

    /A:F-HS
    /A:-SH+F
    /A:-H+F-S
    /A:-DH-S
    

    The following attribute codes can be specified in upper or lower case (each letter can be specified no more than once):

    Attr code Attribute name Applies to
    A archive files only
    D directory directories only
    F file files only
    H hidden files and directories
    R read-only files and directories
    S system files and directories

    [Back to Summary of Changes]

  5. The /DA, /DD, and /DF (Date) invocation options have been revised as follows:

    • The /DD (Date Directories) and /DF (Date Files) options have been removed; their function can be obtained in a different way.

    • The /DA (Date All) option has been renamed to /D.

    Note that the /D option applies to both files and directories. If you want to list only files or only directories, use the /A option to indicate this. Example: if today is 2004-08-04, then:

    FL C:\ /T /A:F /D:20040804

    lists all files that have been created or changed since midnight, but no directories are listed.

    FL C:\ /T /A:D /D:20040804

    lists all directories that have been created since midnight, but no files are listed.

    FL C:\ /T /D:20040804

    lists all files and directories that have been created since midnight, plus all files that have been changed since midnight. Note that on NTFS drives, directory dates are more volatile, and are not preserved by XCOPY.

    [Back to Summary of Changes]

  6. The /ZA, /ZD, and /ZF (Size) invocation options have been revised as follows:

    • The /ZA (Size All) and /ZD (Size Directories) options have been removed, as they did nothing useful.

    • The /ZF (Size Files) option has been renamed to /Z.

    Note that the /Z option applies only to files, and if it is specified with an explicit minimum and/or maximum size, the list will not contain any directories. Example:

    FL C:\ /T /Z:10M

    This command lists all files that are 10 million bytes or larger, but no directories appear in the list. If the /Z option is specified with neither a minimum nor a maximum value, size filtering does not occur and the list can include directories. Example:

    FL C:\ /T /Z

    This command produces a list that includes both files and directories. Specifying /Z with neither a minimum nor maximum value is useful when the current list has size filtering enabled, but you want to refresh the list with size filtering turned off (see later).

    [Back to Summary of Changes]

  7. The /T (Tree) invocation option has been enhanced, to allow tree mode to be enabled, disabled, or toggled. The full syntax is ([ ]=optional):

    /T[:][0|1|+|-]

    /T:0 turns tree mode off, /T:1 turns tree mode on, and /T:+ and /T:- toggle tree mode ("next tree mode" and "previous tree mode", but since there are only two states, /T:+ and /T:- have the same effect). /T is still valid, and is a synonym for /T:1. The real value of these enhancements will become apparent when the enhanced #A, #R, and #W commands are described (see later).

    [Back to Summary of Changes]

  8. Programs running on DOS, OS/2, and Windows conventionally use the "/" character to prefix options. However, programs running on Linux conventionally use the "-" character for this purpose. Programs that run on all of those systems often accept either character, and FL has been changed to do this, that is, you can specify the FL options using either the "/" or "-" characters, or a mixture of both.

    Note: if you want to use "/" as your command prefix character, remember that you must double-up every occurrence of "/" where you want a real one, and that includes for options on FL commands and operating-system commands. For FL commands you have the alternative of using the "-" character to prefix options. The following are all valid and equivalent:

    Command
    prefix
    Sample command
    # #r e:\*.* /t /d:2006 /z:100k
    / /r e:\*.* //t //d:2006 //z:100k
    / /r e:\*.* -t -d:2006 -z:100k

    Note: all FL options are blank-delimited; they cannot be abutted. Examples:

    FL /A:F-S /T /Z:10M            (valid)
    FL /A:F-S/T/Z:10M              (not valid)
    

    [Back to Summary of Changes]

  9. The #- command (refresh with different attribute criteria) has been withdrawn. Use instead the #R command with the /A option (see below).

    [Back to Summary of Changes]

  10. The #L (Load) command has been withdrawn, as #L is required for a different command. The Load command may be re-introduced in a future release, with a different name.

    [Back to Summary of Changes]

  11. The #A, #R, and #W commands can be viewed as variations of the command that invokes FL. So in this release these commands have been enhanced to support the appropriate invocation options, specifically the following options:

    Option Name
    /A Attribute
    /D Date
    /M Mode
    /S Sort
    /T Tree
    /Z Size

    The syntax of each of these options on the #A, #R, and #W commands is identical to the syntax of the corresponding option on the FL command. Each option begins with the option-prefix character. FL supports two option-prefix characters:

    • The "/" character (as used on DOS, OS/2, and Windows)
    • The "-" character (as used on Linux; new in this release)

    These characters cannot be altered by the user. Do not confuse the option-prefix character with the command-prefix character, which can be altered by the user (using FLCUST).

    Notes:

    1. If you specify the #R command with no file patterns and no options, the list is regenerated using the existing selection criteria, that is, the file patterns and option settings are inherited from the current list. This is the same as the behaviour in previous releases.

    2. If you specify the #R command with options but no file patterns, the list is regenerated using the existing file patterns; options specified on the #R command override the existing options, but options not specified are inherited from the existing list. Example: suppose you typed the following sequence of commands (pressing the RETURN key after each one):
      #R *.DAT /D:2004
      #R /Z:1M
      #R /A:A
      

      • The first command lists all files in the current directory with file extension "DAT" that have been created or changed since 2004-01-01.
      • The second command then regenerates the list restricting it to files that are also 1MB in size or larger.
      • The third command regenerates the list again, restricting it further to files that also have the archive attribute set.

    3. If you specify the #R command with one or more file patterns, nothing is inherited from the existing list.

    4. If you specify the #A command without a file pattern, FL diagnoses an error; a file pattern must be specified with the #A command. Nothing is inherited from the list to which the #A files will be added.

      Note that by repeated use of the #A command, you can construct a list containing files that satisfy different selection criteria for the same property. Example: suppose you typed the following sequence of commands (pressing the RETURN key after each one):

      #R *.* /Z:10K-20K
      #A *.* /Z:100K-200K
      #A *.* /Z:1M-2M
      

      After the third command, the list would contain files from the current directory that had sizes in the range 10K-20K, plus those with sizes in the range 100K-200K, plus those with sizes in the range 1M-2M. This behaviour also applies to the tree mode option. Example:

      #R *.C
      #A ..\*.H /T:1
      

      The first command lists all files with extension "C" in the current directory. The second command starts at the parent directory and adds in tree mode all files with extension "H". If you now use the command "#R /T:+" to toggle tree mode, tree mode is turned on for the pattern "*.C", and turned off for the pattern "*.H". The command "#R /T:0" would turn tree mode off for all patterns, and "#R /T:1" would turn it on for all patterns.

    5. If you specify the #W command without a file pattern, FL uses the default file pattern "*.*". Nothing is inherited from the list on which the #W command was entered.

    6. The /T (Tree) option has been designed to allow you to define a function key as a tree toggle (that is, press once for tree on, press again for tree off). Example:

      #R /T:+

      Tip: if you are like the author, you will often list a small directory sub-tree (say, about 1000 files), and then forget that you are in tree mode and use the "Up Directory" key to see the parent directory, and have to wait whilst FL lists a much larger tree containing many tens of thousands of files. You can avoid this by defining your "Up Directory" key to turn tree mode off, like this:

      #R .. /T:0

      It is less irritating to turn tree mode on if it is off when you want it on, than it is to turn tree mode off if it is on when you want it off.

    [Back to Summary of Changes]

  12. A new #G (Goto) command has been introduced for use on the FL command line. This command assists with the navigation of large file lists. The syntax of this command is ([ ]=optional):

    #G[:][+|-]n

    where "n" represents one or more numeric digits, and the command suffix character ":" is optional. If neither "+" nor "-" is specified, line "n" in the file list is made the current line. If "+" is specified, the current line is incremented by "n"; if "-" is specified, the current line is decremented by "n".

    If the new current line is already on the screen, the list is not scrolled. If the new current line is not on the screen, the list is scrolled so as to position the new current line in the middle of the screen. If the new current line is less than half a screen from the start or end of the list, the scroll position is adjusted so as to show as much of the list as possible.

    [Back to Summary of Changes]

  13. A new #L (Locate) command has been introduced for use on the FL command line. This command enables you to search the list for particular strings, and assists with the navigation of large file lists. The syntax of this command is ([ ]=optional):

    #L[:] [ ["]ccc["] [options] ]

    where:

    :
    is the command suffix character; this is optional.

    "
    is the string delimiter character. The leading and trailing string delimiter characters can be omitted if the string does not contain blanks (either specify both, or omit both). Examples:
    #L "my PC data"
    #L fl.pro
    

    ccc
    is the string to be looked for; it can be a complete filespec, or any substring thereof.

    The options are split into four groups according to their function. Only one option from each group takes effect; if more than one is specified, the rule is "last wins". The options are as follows:

    Search options
    These specify which part of the filespec should be searched for a match; the part searched is called the search zone:

    /D
    (Drive) indicates that the drive should be searched. For a match to be possible, the string specified must be one or two characters long, with the first character being a drive letter, and the second character (if specified) being the colon character.

    /E
    (Extension) indicates that the extension should be searched. For a match to be possible, the string specified must not contain the dot, backslash, or colon characters.

    /F
    (File) indicates that the name plus extension should be searched. For a match to be possible, the string specified must not contain the backslash or colon characters.

    /N
    (Name) indicates that the name should be searched. For a match to be possible, the string specified must not contain the backslash or colon characters. Note that the dot separating the name from the extension is not included in the search when comparing the string with a file in the list.

    /P
    (Path) indicates that the path should be searched. For a match to be possible, the string specified must not contain the colon character.

    /W
    (Whole) indicates that the whole filespec should be searched. The string can be a complete filespec, or any substring thereof.

    The default search zone depends on the contents of the string, as follows:

    Default
    zone
    Used when
    /D String contains only a drive.
    /P String contains only a path.
    /N String contains neither drive nor path nor dot.
    /F String contains neither drive nor path, but does contain a dot.
    /W String contains two or more of drive, path, name.

    The common case is a string that does not contain a colon, a backslash, or a dot. In this situation FL chooses /N as the default search zone, and if you want a different search zone you must specify the appropriate option. For example, if you specify "X" for the string, it could be the X: drive, it could be a directory called X, it could be a file with name X, or it could be an extension of X; specify the appropriate option if /N is not the correct zone.

    Tips:

    • If you want to search for a particular extension, prefix the string with a dot; this causes FL to use /F as the search zone, and in most cases you will find what you are searching for whilst avoiding spurious matches (although dots in file names are valid, they are not common).

    • If you want to search for a particular directory name, prefix and suffix the string with backslash characters; this causes FL to use /P as the search zone and will avoid spurious matches.

    Match options
    These specify what should be matched within the specified search zone:

    /L
    (Leading) indicates that the string must match the leading characters in the zone being searched, that is, the string must be found at the beginning of the zone. Example: "CUST" matches "CUSTOMER.TXT" but does not match "FLCUST.EXE" if the /L option is in effect.

    /T
    (Trailing) indicates that the string must match the trailing characters in the zone being searched, that is, the string must be found at the end of the zone. Example: "BAT" matches "F.BAT" but does not match "BATTERY.TXT" if the /T option is in effect.

    /S
    (Some) indicates that the string must match some characters in the zone being searched. Example: "CUST" matches "FLCUST.EXE" if the /S option is in effect. This option is the default.

    /A
    (All) indicates that the string must match all characters in the zone being searched. Example: "F.BAT" does not match "FF.BAT" if the /A option is in effect.

    Case options
    These specify how the matching should be performed:

    /I
    (Ignore case) indicates that any mixture of upper and lower case is acceptable when looking for a match. Example: "Fl.Exe" matches "FL.EXE" if the /I option is in effect. This option is the default.

    /R
    (Respect case) indicates that the specified mixture of upper and lower case is required when looking for a match. Example: "Fl.Exe" does not match "FL.EXE" if the /R option is in effect.

    Direction option
    This option specifies the direction of the search:

    /B
    (Backward) indicates that the search should be in the reverse direction.

    If /B is specified, the list is searched in the backward direction, that is, in the direction of decreasing line numbers. The search starts at the line preceding the line where the command is typed, and stops when the first match is found, or at the start of the list.

    If /B is not specified, the list is searched in the forward direction, that is, in the direction of increasing line numbers. The search starts at the line following the line where the command is typed, and stops when the first match is found, or at the end of the list. This is the default.

    The options can be specified in any order, in upper or lower case, and can precede or follow the string. If conflicting options are specified, the rule is "last wins".

    If no string and no options are specified, the string and options are inherited from the previous #L command. This provides a "repeat locate" capability, and is of most use when assigned to a function key.

    An additional capability is available when using repeat-locate. Normally, the search stops when one or other of the ends of the list is reached. However, if the repeat-locate command is issued immediately after the "not found" condition has occurred, the search wraps round to the other end of the list and searching continues until the current line is reached (the current line is included as the final line of the search).

    When a match is found, the line containing the match becomes the new current line. If the match is already on the screen, the list is not scrolled. If the match is not on the screen, the list is scrolled so as to position the match in the middle of the screen. If the match is less than half a screen from the start or end of the list, the scroll position is adjusted so as to show as much of the list as possible.

    [Back to Summary of Changes]

  14. The invocation of FL can be viewed as a variation of the #R command. So in this release, at FL start-up the command stack is initialised with the invocation command converted to a #R command. Options which are not valid on the #R command are omitted. If the invocation command is longer than 60 characters (the length of the FL command line), the characters in excess of 59 are discarded, and "+" appended to indicate that some characters are missing.

    [Back to Summary of Changes]

  15. When FL passes a command to the operating system (for example, the COPY command), FL clears the screen and displays the command in line mode. Any responses from the command appear on the line-mode screen below the command. When all commands have been processed, FL displays the "Press any key to continue" prompt; this gives you time to read the responses from the command(s). However, this action isn't always wanted. For example, if a function key is defined to invoke a full-screen editor, on exit from the editor the "Press any key to continue" prompt is an unnecessary irritation. To avoid this, the command can be prefixed with the "!" character, which causes FL to suppress the prompt. Clearly, the "!" should be used only with those commands that are suitable.

    The following changes are made to the processing of the "!" prefix character in this release:

    1. In previous releases, "!" suppressed the display of the prompt after the command had been executed, but it did not suppress the display of the command before it was executed. On slower machines this lead to the screen appearing to "flash" as FL's screen was replaced by the line-mode screen containing the command, which was almost immediately replaced by the screen of the program invoked. In the new release, the "!" prefix suppresses display of the command as well as display of the prompt.

    2. In previous releases, the "!" affected only external commands, that is, commands passed to the operating system. In the new release, "!" also affects FL's own internal commands. For example, the #R command produces diagnostic messages if the directory specified does not exist. Prefixing #R with "!" suppresses these diagnostic messages.

    One useful application of these changes is the following, which should be assigned to a function key:

    !#R #\*.* #|| EDIT.BAT #

    If the function key is pressed when the current line is a directory, the directory is made the current directory and its contents listed. However, if the current line is a file, the command "EDIT.BAT #" is invoked to edit the file. This can be any command and need not be a BAT file – you can invoke your editor's EXE file directly, or use a BAT or CMD file to do some intelligent pre-processing before invoking your editor (for example, selecting a different editor according to the file extension of the file).

    Remember the meanings of FL's command joiners:

    • cmd1 #& cmd2

      The command to the left of the #& is executed, and then the command to the right of the #& is executed.

    • cmd1 #&& cmd2

      The command to the left of the #&& is always executed. The command to the right of #&& is executed only if the command to the left succeeds (that is, returns a zero return code).

    • cmd1 #|| cmd2

      The command to the left of the #|| is always executed. The command to the right of #|| is executed only if the command to the left fails (that is, returns a non-zero return code).

    It is also possible to have sequences of three of more commands:

    cmd1 #&& cmd2 #&& cmd3 #&& cmd4

    Execution is from left to right and ends with the first command that fails.

    cmd1 #|| cmd2 #|| cmd3 #|| cmd4

    Execution is from left to right, and ends with the first command that succeeds.

    [Back to Summary of Changes]

  16. The sizes of the replace-mode cursor and insert-mode cursor within FL have been revised. The replace-mode cursor (the underscore) is now set to 20% of the cell height, and the insert-mode cursor to 100% of the cell height.

    [Back to Summary of Changes]

  17. Drives inherited from older operating systems often have file names consisting entirely of upper case. After some time with a modern operating system, newer file names may be mixed case, whilst the older files are still upper case. This inconsistency can make it more difficult to read an FL list looking for a particular file. To address this, FL supports various options that control the way that the file names are displayed (see the "Other Settings" panel in FLCUST). The following changes are made in this release:

    • The WORD option now treats all non-alphanumeric characters as word delimiters (previously only backslash, dot, blank, dash, and underscore were treated as word delimiters).

    The sample filespec on the "Other Settings" panel in FLCUST can be used to see the effect of the different options.

    [Back to Summary of Changes]

  18. The keyboard service provided by Windows exhibits "questionable" behaviour in certain circumstances, and this complicates considerably the processing of keyboard input. In order to provide consistent keyboard behaviour within FL, it has been necessary in this release to define an order of precedence for the various shift keys (ALT, CTRL, and SHIFT). If two or more of these keys are depressed simultaneously, FL accepts the shift key of highest precedence, and ignores those of lower precedence. ALT has highest precedence, CTRL medium precedence, and SHIFT lowest precedence. So ALT overrides CTRL and SHIFT, and CTRL overrides SHIFT but is overridden by ALT. SHIFT is overridden by ALT and CTRL. Note that the order of precedence (highest to lowest) corresponds to alphabetic order.

    Although this change was prompted by the behaviour of Windows, the change applies to all versions of FL (16-bit DOS, 16-bit OS/2, 32-bit OS/2).

    [Back to Summary of Changes]

  19. FL treats the various left and right shift keys as equivalent, so that LEFT-SHIFT produces the same result as RIGHT-SHIFT, LEFT-CTRL produces the same result as RIGHT-CTRL, and LEFT-ALT produces the same result as RIGHT-ALT. However, RIGHT-ALT is not truly equivalent to LEFT-ALT.

    RIGHT-ALT is usually labelled ALT-GR on the keyboard, and some operating systems return different characters when RIGHT-ALT is pressed. This is particularly common with non-English keyboards, where RIGHT-ALT is needed in order to obtain special characters or accented vowels. FL does not interfere with this use. The result is that whereas all of FL's definitions of the ALT-alphabetic keys can be obtained using LEFT-ALT, some may be unobtainable using RIGHT-ALT – an accented or special character will appear at the cursor location when that combination is pressed.

    [Back to Summary of Changes]

  20. FL defines two ways to exit:

    • #Q (Quit) exits to the original directory, leaving the current directories on the drives visited as they were on entry to FL.

    • #C (Change Directory and Quit) exits to the directory on display, changing the current directories on the drives visited to the ones last viewed during the current FL session.

    On DOS, the #C command presents no problem. But on OS/2 and Windows NT/2000/XP, programs run as separate processes, and as a result cannot change the properties of the invoking process (the command window). To provide the functionality of the #C command, FL version 2 introduced the technique of creating a new command window having the required current directories on the drives visited, and deleting the old command window from which FL had been invoked. But this had two very undesirable side effects:

    • By default, windows are created slightly displaced from each other. The result was that repeated invocations of FL would cause the window to appear to creep around the screen.

    • Because the new command window was a new process, the window's command history (retrievable via the cursor-up or cursor-down key) was lost.

    Version 4.00 of FL introduced a different way of supporting the #C command. It requires that FL be invoked via a BAT file (CMD file on OS/2), but it avoids both of the undesirable side effects described above. The files "F.BAT" and "F.CMD" were provided with the FL package for this purpose.

    Modern operating systems use advanced disk-cacheing techniques that mean that the BAT-file method has no apparent disadvantages, whereas the new-window method has no redeeming features. So this release of FL withdraws support for the new-window method of exiting FL. This affects the 16-bit OS/2 and 32-bit OS/2 versions of FL.

    [Back to Summary of Changes]

  21. In order to support the #C (Change Directory and Quit) command, on exit FL writes a temporary BAT file for use by the "F.BAT" or "F.CMD" files. In previous releases, this was written in the directory and with the name and extension that were specified by the environment variable FL_EXIT_FILE. The use of a BAT file is still necessary, but the interface has been revised. In addition, the default value for FL_EXIT_FILE was "C:\FLEXIT.BAT", but Windows XP does not allow files to be added to the root directory of the Windows drive if that drive is an NTFS disk and the the user does not have administrator authority. So, in this release the followng changes are made:

    1. Use of the environment variable FL_EXIT_FILE is discontinued; the environment variable can be deleted.

    2. FL now uses the standard environment variable TEMP to identify the directory in which FL can store its temporary files. The directory specified must not end with a backslash.

    Windows defines TEMP by default, and FL on DOS does not use an exit BAT file, so the only case where TEMP might need to be defined is OS/2. If TEMP is undefined, FL uses the root directory of the drive that was current when FL was invoked.

    [Back to Summary of Changes]

  22. Error processing when the output from FL is redirected to a file has been revised. When an error occurs (for example, too many files or not enough memory), a message is displayed on "stderr". This ensures that it is visible even when "stdout" is redirected to a file. Error messages are not intermingled with the file list written to "stdout".

    When an error occurs, FL exits with a non-zero return code, which can be used by a BAT or CMD file to detect the error case and take appropriate action.

    Note that when an error occurs, the file list may be incomplete, and may be unsorted.

    [Back to Summary of Changes]

  23. Previous releases have provided both 16-bit and 32-bit OS/2 versions of FL. The reason for the continued availability of the 16-bit version was that it supported long file names on Windows NT/2000. With the availability of the 32-bit Windows version, there is no longer any need for the 16-bit OS/2 version, and it is withdrawn from the package.

    [Back to Summary of Changes]

  24. The DET.EXE tool is withdrawn from the package, as its use is too specialised and not really related to file and directory handling. However, it remains available by special request.

    [Back to Summary of Changes]


Changes in FLCUST

  1. FLCUST is now provided in a true 32-bit Windows version.

    [Back to Summary of Changes]

  2. FLCUST now supports tall screens and wide screens. The smallest screen on which FLCUST will run is 25 rows by 80 columns, but FLCUST will run on any screen taller or wider than this, and adjust its output appropriately.

    [Back to Summary of Changes]

  3. The sizes of the replace-mode cursor and insert-mode cursor within FLCUST have been revised. The replace-mode cursor (the underscore) is now set to 20% of the cell height, and the insert-mode cursor to 100% of the cell height.

    [Back to Summary of Changes]

  4. The non-blinking cursor introduced as an experiment in version 4.03 has been discontinued in favour of the usual blinking cursor. The revised heights of the blinking cursor should make the cursor easier to see.

    [Back to Summary of Changes]

  5. On the "Other Settings" panel, the color of a selected subfield (for the "Attribute display order" and "Sort order at start" settings) has been revised; this should make the selected subfield easier to see.

    [Back to Summary of Changes]


Changes in FLFIND

  1. FLFIND is now provided in operating-specific versions for all supported operating systems.

    [Back to Summary of Changes]

  2. Options can be specified using either "/" or "-" as the option prefix character.

    [Back to Summary of Changes]

  3. If you invoke FL without specifying a file extension (example: "FL XYZ*"), FL appends ".*" to the specified file pattern so that all files with the specified name are listed, whether or not they have file extensions. If you want to list only files that have no extensions, terminate the name with a dot (example: "FL XYZ*."). However, in previous releases FLFIND did not work that way – if you typed "FLFIND XYZ*", FL would list only files that had no extensions. This difference in the behaviour of FL and FLFIND is considered to be undesirable, and has been changed – FLFIND now behaves in the same way as FL. If you want to find only files that do not have extensions, terminate the name with a dot (example: "FLFIND XYZ*.").

    [Back to Summary of Changes]


Changes in TEE

  1. TEE is now provided in operating-specific versions for all supported operating systems.

    [Back to Summary of Changes]

  2. Options can be specified using either "/" or "-" as the option prefix character.

    [Back to Summary of Changes]

  3. Error checking and diagnostics have been improved, to make it easier to diagnose errors or incorrect operation.

    [Back to Summary of Changes]


Problems Fixed

  1. (FL) On an NTFS drive, Windows creates in the root directory a hidden system directory called "System Volume Information". Using Windows' CHDIR command it is not possible to view the contents of this directory (Windows denies access), but its presence in the FL list distorts the column alignments (the command field is pushed over the right, depending on profile settings). So this directory is now always excluded from the list (just as the "." and ".." directories are for FAT disks).

    [Back to Summary of Changes]

  2. (FL) The command "#R .." displays the contents of the parent directory. When executed in the root directory, the most useful action is to redisplay the contents of the root directory. The command "#R .." did this, but the equivalent command "#R #D.." did not, displaying instead the empty-list line. This has been corrected.

    [Back to Summary of Changes]

  3. (FL) If the "Immediate screen update" option is specified in FLCUST, FL updates the size, date, and time fields on the line on which a command is entered, immediately after completion of the command. A subtle difference between files and directories meant that if a command was entered on a line for a directory (for example, the XCOPY command), the date and time shown after the command completed was changed to an erroneous value. This has been corrected.

    [Back to Summary of Changes]

  4. (FL) There are two ways to exit from FL – #Q (Quit) and #C (Change Directory and Quit) (see above for details of these two commands). On DOS, the #Q command did not operate correctly: although the original current directory was re-instated on exit, current directories on other drives were not re-instated – they were left as last viewed during the current FL session. This has been corrected.

    [Back to Summary of Changes]

  5. (FL) When the output from FL was redirected to a file, the setting of the R (read-only) and S (system) attributes was interchanged. If a listed file had the read-only attribute set, the FL output showed "S"; if a listed file had the system attribute set, the FL output showed "R". This has been corrected.

    [Back to Summary of Changes]


Other Points

  1. The "FL User Guide" (the file "FLGUIDE.HTM") has not been changed for this release. There may therefore be some errors, omissions, or contradictions in the manual.

    Note: the manual does not include any of the changes made in the various version 4 releases, and hence is quite out of date. To understand the changes that have been made in version 4, read the change file ("FLnnn.HTM") for each release.

    [Back to Summary of Changes]


Valid HTML 4.01 Page last changed: 2008-07-25 Valid CSS