PHONE AND FAX NUMBERS:
----------------------
Our telephone and fax numbers have changed:
The voice telephone number is 1-919-481-0149 (formerly 233-8128).
The fax number is 1-919-481-3787 (formerly 233-0716).
Please take a moment to pencil in the corrections in your TLIB
reference manual.
BBS AND WEB SITE:
----------------
Our BBS is no longer kept up to date. Instead, please visit
our Web site at:
http://www.burtonsys.com/
------------------------------------------------
Bug fixes and other changes to date in TLIB 5.xx
(in reverse-chronological order)
5.54k 19-May-2004
1) Improved: the MSCCI DLL. It now works properly with CodeWright and
other client applications which do not use the SccOpenProject
entrypoint to select a working directory.
Also, we added the "Suppress banner" checkbox on the per-client
tabs at: File -> Configuration Options -> Scc Provider Options
for clients which do not provide a callback for the version
control client to display routine status messages.
[Adrian N.]
2) Fixed: a bug in the handling of native project files with
spaces in the names.
[Adrian N.]
3) Fixed: a bug in the GUI versions of TLIB, which caused an
"hourglass" mouse pointer while displaying new user hints.
4) Improved: first-time startup behavior (when there's no TLIB.INI
file) in the 32-bit GUI version of TLIB, when TREEDIRS Y is
configured. It now starts with C:\ as the initial "current
directory," and it thus avoids that annoying "Enter the depth
of the main work directory" question (until you actually
change to your real work directory).
5) Improved: the 32-bit GUI in other minor ways.
6) Created: a time-limited demo version. We'll put it on our web
server soon; in the meantime, you can get it by asking for it.
5.54j 29-Apr-2004
1) Added: a Microsoft Source Code Control Interface (MSCCI) DLL,
for integrating TLIB with Microsoft Visual Studio and with
many non-Microsoft products.
This feature is tested with Microsoft Visual Basic 6.0 and
Microsoft Visual C++ 6.0, and lightly tested with VB.NET.
However, many other products also use this API to interface
to version control systems. Please let us know how well your
favorite tool works with it.
To use this feature, simply select the "MS SCC Interface DLL
for DevStudio etc" choice in the "Integration" component
details while installing TLIB.
Note: a tool called REGMSCC.EXE is included, to "register"
and "unregister" TLIB's MSCCI DLL (and do configure VB 6.0
to use it, of you have VB 6.0 installed). TLIB's NETSETUP
program will run "regmscc -install" automatically, so you
probably won't need to run it manually. However, if you
install Microsoft Visual Basic 6.0 after installing TLIB,
you can run REGMSCC to configure it to use TLIB's MSCCI
DLL, so that TLIB will appear in the VB IDE's menus.
For detailed instructions, run "RegMSCC" with no options.
2) Removed: the old Visual Basic and Visual C++ Add-Ins from
the TLIB setup dialogs, because the MSCCI approach is better.
However, the old Add-Ins are still available, archived in the
MSDEVOLD.ZIP file. For more information unzip the contents
of MSDEVOLD.ZIP, and examine MSDEVOLD.TXT.
3) Fixed: a bug which could cause "ERR: ndL" failures when
extracting the second-to-last trunk version of a file by
using the "*-1" syntax for the version number specification.
4) Fixed: a bug in 32-bit TLIB's visual compare when using an
extremely wide display. If the comparison window was dragged
to more then 2184 pixels wide, it caused the following error:
ERROR: #0, frmCMP_Resize_pt1,
This was seen by a customer who was using dual monitors.
[Andy P.]
5) Fixed: a problem which prevented TLIB Visual Compare from
appearing in the Windows task bar when it was invoked via
the command-line TLIBCOMP utility.
6) Increased: the maximum size of a version number string from
40 characters to aproximately 80 characters, in 32-bit
versions of TLIB.
The actual limit is imposed by the 126-characters of usable
space on a line in the TLIBWORK.TRK file, which must be long
enough for the version number, the source file name (and
perhaps its subdirectory relative to the main work directory),
and a couple of other small fields. So if the file name is
very long, then the version number may be limited to less
than 80 characters.
TLIB's version numbers are also constrained to contain no
more than 9 dots. This limit has not changed. To the best
of our knowledge, no customer has ever run up against it.
[John B.]
Note: the 16-bit TLIB is still version 5.54h in thls release.
5.54i 4-Mar-2004
1) Fixed: a minor bug introduced in 5.54h, which caused the
following normal message to not pop up:
Note: snapshot file '...' contains nn source file records
2) Added: in the Win32 GUI version of TLIB, in Native Project Mode
you can now search for "All known project types" instead of
having to pick a project type.
TLIB currently understands 21 different kinds of "native"
project files. If yours is not among them, please tell us,
and we might be able to add support for it.
3) Improved: in the Win32 GUI version of TLIB, the "Mode" button
now works better for switching back and forth between normal
file-oriented mode and Native Project mode. There were many
subtle changes, but the general theme is that now when you
switch from one mode to the other TLIB "respects" where you
were in the old mode and initializes the new mode to be as
nearly equivalent as possible.
It is kind of hard to explain why, but the usability is much
improved.
4) Added: an "Open Native Project" menu choice on the main
screen. This is most conveniently used by right-clicking on
a native project file that is listed in the main file list.
It will switch into TLIB's Native Project Mode, and open
the file as a project file, displaying the list of source
files which that project references.
5) Added: support for the "lowsrc=" field of the of the HTML
<img> tag, when parsing HTML files in Native Project mode.
When an <img> tag contained both a "lowsrc=..." field and
a "src=..." field, TLIB was recognizing the first one but
ignoring the second. Now it finds both.
6) Improved the Win32 GUI user interface in other subtle ways.
Note: the 16-bit TLIBs are still version 5.54h in thls release.
5.54h 6-Feb-2004
1) Fixed: a bug which caused the TLIB GUI to hang or abort with a
protection exception when taking a Snapshot (or creating a plain
file list) with a large number of source files.
When taking a snapshot of source files with short names and no
subdirectory prefixes, 12,000 or more were necessary to trigger
the bug. But for source files with long names, and/or with
long relative paths, a smaller number of files could trigger
the error.
This bug did not affect command-line versions of TLIB.
[Paula P.]
3) Improved: performance in the 32-bit TLIB GUI. When processing
small numbers of source files, the improvement might not be
noticable. But when processing thousands of source files,
this version of TLIB is dramatically faster.
3) Improved: the 32-bit TLIB Version Control GUI in subtle ways.
4) Fixed: When you do an Update/check-in to store a new version of
your source file into TLIB Version Control, TLIB might need to
then extract your source file from the newly updated TLIB
library, to update revision history log or keyword information,
or to create a "reference copy" in a project level reference
directory. If the extract fails (perhaps because the source
file is open by a text editor and can't be modified by TLIB),
then TLIB will give you an opportunity to correct the problem
and retry. However (and this was the bug), TLIB was not
clearing the errorlevel status from the first failed attempt
when the 2nd attempt succeeded. The main symptom was that
the source file wasn't deselected in the main file list window
in the GUI versions of TLIB. This is now fixed.
5) Fixed: the CMTEXT configuration parameter did not work correctly
if configured to more than three characters.
[Robert A.]
5.54g 23-Oct-2003
(Note: the GUI is still version 5.54f)
1) Added: native project mode support for Borland C++ Builder 6.0
project files, *.bpr.
C++ Builder 6.0 project files are similar in in format to C++
Builder 5.0 project files (which TLIB already supported). The
good news is that with version 6.0, Borland/Inprise has added
a <FILELIST></FILELIST> section to the .bpr file, which should
usually obviate the need to use TLIB's slow "scan for includes"
option to find all the source files.
This feature is only lightly tested; please let us know about any
problems.
[Mark E.]
2) Changed: TLIB's snapshot command to no longer return errorlevel 1
(failure) if some, but not all, of the specified files could not
be recorded in the snapshot.
This is so that the 'N' or 'U' (create or update library) command
will work after a snapshot command on the same command line, when
some, but not all, of the specified files were successfully
recorded in the snapshot. This is mainly so that the "immediate
store in library" option will work in the GUI even if there were
errors while taking the snapshot, but it also means that command-line
TLIB will no longer return errorlevel 1 if a snapshot is taken and
some of the source files failed (e.g., because they were never
stored into TLIB libraries).
3) Plus other minor improvements, mostly in diagnostic messages.
5.54f 23-Sep-2003
1) Fixed: a subtle problem with TLIB.CFG processing.
Normally, while processing the TLIB.CFG file (and any include files
that it references), TLIB defers determination of the current work
directory until it is needed. This allows you to write TLIB.CFG
files which adjust parameters (such as WORKDIR, WORKDEPTH, and
TREEDIRS) that affect determination of the current work directory,
without triggering superflous warnings or errors about it being
wrong.
Referencing the %tlibcfg:workdir% pseudo-environment variable in
TLIB.CFG usually requires TLIB to determine what the work directory
is. The exception is when the reference occurs within a false
'iff' block, since configuration parameters within such a block
are ignored. However, prior to version 5.54f, TLIB was always
calculating the work directory when the first reference to
%tlibcfg:workdir% was seen, even if that reference was within a
false 'iff' block.
The following is an excerpt from a TLIB.CFG file that would not
work correctly because of this problem, since TLIB had already
determined the work directory by the time it encountered the
"workdir" configuration parameter that was supposed to override it:
iff (('%LEVEL%' eqi 'dev') or ('%LEVEL%' eqi 'tst') or ('%LEVEL%' eqi 'rel'))
REM -- LEVEL was set via PERSONAL.CFG, so leave it alone
REM -- This first reference to %tlibcfg:workdir% caused TLIB to go
REM -- ahead and determine the main work directory:
set wkdir1=%tlibcfg:workdir:-1%
REM %wkdir1% is name of main work directory -- should be DEV or TST or REL
iff ('%wkdir1%' eqi 'dev') or ('%wkdir1%' eqi 'tst') or ('%wkdir1%' eqi 'rel')
say Note: LEVEL overridden in '%pname%'. %LEVEL% (instead of %wkdir1%)
endif
else
REM This code looks for a directory named 'DEV' or 'TST' or 'REL' and if found sets WORKDIR to that directory:
let curpath=unq nam '.'
let dir1=unq '%curpath%' spl -1
iff ('%dir1%' eqi 'dev') or ('%dir1%' eqi 'tst') or ('%dir1%' eqi 'rel')
workdir .
set LEVEL=%dir1%
else
let dir2=unq '%curpath%' spl -1
iff ('%dir2%' eqi 'dev') or ('%dir2%' eqi 'tst') or ('%dir2%' eqi 'rel')
workdir ..
set LEVEL=%dir2%
else
let dir3=unq '%curpath%' spl -1
iff ('%dir3%' eqi 'dev') or ('%dir3%' eqi 'tst') or ('%dir3%' eqi 'rel')
workdir ..\..
set LEVEL=%dir3%
endif
endif
endif
This is now fixed.
[Bob S.]
2) Fixed: a bug in the Migrate command, which caused it to generate an
incorrect migrate2.bat file if the current directory was not the same
as the work directory.
3) Fixed: a problem with TLIB's visual compare, which caused it to
improperly handle a situation in which one of the files being compared
could not be opened because it was open/locked by another program.
Instead of reporting a "sharing error," TLIB's visual compare would
pause for about 80 seconds, and then report "ERROR: No such file...".
It now correctly reports the cause of the problem, and gives the
user an opportunity to retry (presumably after closing the other
program).
[[Laura G.]
4) Added: an "unlist" button to the main TLIB GUI screen, for removing
file names from the list. (Only in the 32-bit GUI.)
5) Improved: the preliminary PDF version of the TLIB reference manual.
6) Plus other minor improvements.
5.54e 18-Jul-2003
1) Changed: check-in/out locking behavior slightly, for better
handling of a situation in which one programmer works alternately
at two or more different project levels.
When LOCKING Y is configured, and you already have a file
checked-out/locked (checked-out for modification), if you
extract/check-out the same file again TLIB will normally
just display a warning message, and let you do it:
Note: myfile.ext was already checked out to you
That's convenient when you are working on a problem and want to
start over with a fresh copy of the source file.
But if you are using TLIB's named project level feature, for
managing multiple variants of the same project, then trying to
check out the file again but at a different project level is
probably a mistake. Previous versions of TLIB nevertheless
permitted you to do so. However, TLIB 5.54e will report an error
in this situation:
ERROR: myfile.ext is checked out at a different project level
[David P.]
2) Fixed: a bug in the 32-bit GUI version of TLIB, which caused
the little TLIB logo icon to disappear next to source file
names after a Reclassify-share ("R") command was done.
The TLIB logo icon indicates that a source file is under version
control (i.e., that a corresponding TLIB library file exists).
If there is a TLIB logo icon next to a source file name, then
you can double-click on the source file name to see a version
history for that file.
The workaround for this problem was to refresh the display
after the Reclassify-share ("R") command. The display can
be refreshed by pressing F5, or in file-oriented mode by
clicking the "Expand Wildcard" button.
[Jim C.]
3) Fixed: a bug which could cause an "ERR: cnN" if you cancel
from the TLIB question that asks, "Enter the depth of the main
work directory..."
[Jim C.]
4) Added: code to work around a bug in some network software which
prevented MAKEDIRS M or MAKEDIRS Y from working correctly on
a network path when creating a TLIB library or project level
tracking file. Symptom was
ERROR: Could not create "some_file.ext" ... Err=80, errno=17
This problem was seen when the network file server wsa a Mars-NWE
Netware Emulator (which emulates a Novell Netware server with a
Linux machine).
5) Fixed: an install script bug which caused SETUP to report an
error while copying POKETK32.EXE, if DOS Components (which are
installed by default) were not installed.
[Phil H.]
6) Fixed: a bug which caused the TLIB GUI front end to erroneously
try to use project-level search modes when "PROJLEV =" was
configured.
[Russell V.]
5.54d 3-Jun-2003
1) Added: a PDF version of the TLIB reference manual (and
removed the old HTML version).
We finally got the TLIB Reference Manual converted to a modern
word processor, and exported to a reasonable PDF file. The
tlib_doc.pdf file replaces the older and uglier tlib_doc.htm
(HTML) version.
This version of the Reference Manual is still badly out of date,
because we've only just begun to update the content to match the
current version of TLIB. But the new tlib_doc.pdf electronic
version is improved over the printed reference manual, and all
the page number references in the index, table of contents, and
cross references are working hyperlinks in the electronic version
(click on a page number to go to that page).
You'll need Adobe Acrobat Reader version 3.0 or later to read
the tlib_doc.pdf file. It is a free download from Adobe's web
site, here: http://www.adobe.com/products/acrobat/alternate.html
2) Added: the ability to configure:
if *.snp
replace y
endif
or
if *.snp
deletesrc y
endif
or
if *.snp
replace y
deletesrc y
endif
to prevent the "myfile.snp exists, overwrite?" question from
TLIB when creating Snapshot version labels.
If you configure "replace y" for .snp snapshot files, then the
question is always prevented. If you configure "deletesrc y"
for .snp files, then when you create a snapshot and check
"Immediate Store in Library," TLIB will delete the snapshot
file after storing it (or even after you cancel the Update),
so that the snapshot file is not left in your work directory.
[Stewart K.]
3) Improved: the 32-bit GUI in minor ways.
4) Improved: 32-bit versions of TLIB, to permit the use of longer
strings in "LET" and "IFF" expressions in the TLIB.CFG file.
The limit was 81 characters (and still is, for 16-bit versions
of TLIB). But in the Win32 console mode and GUI versions of
TLIB, strings are now only limited by the 255-character line
length limit of TLIB.CFG.
[Scott B.]
5.54c 25-Apr-2003
1) Fixed: a bug which prevented TLIB from correctly parsing native
project files if the file names or paths named within them
contained blanks. This bug was reported for CodeWright project
files, but affected several other types of native project files,
too. The symptom was that TLIB would either simply ignore the
source files which contained blanks in their names, or else it
would incorrectly identify them with a partial name (ignoring
the part of the name after the space).
[Adrian N.]
2) Fixed: a bug which affected the recording of comments for
new versions of a file, if the file name was very long (e.g.,
more than 40-50 characters). The symptoms were that part of
the entered comment could be missing, or the first word of the
comment could be split into two half-words with a line break.
[Hardo B.]
3) Bug fix: If a damaged tlibwork.trk file contained a quoted file
name with no close quote, TLIB crashed with a protection exception.
[Andy P.]
4) Partial fix: If a Unicode (Korean) comment was entered when
storing a new version, the 32-bit GUI TLIB could fail with a
series of error pop-ups:
"Huh! Reducing StatusLimit again!"
and
"Argh! Text box can't even hold 4900 bytes!"
(where the number of bytes could vary)
This has been fixed. However, unfortunately, TLIB cannot handle
unicode comments (nor unicode file names). However, at least
when you enter a unicode comment, it now displays a reasonable
error message:
"ERROR: TLIB does not currently support Unicode comments."
[J. Lee]
5) Added: Native project file support for CodeWright "project space
files" (*.psp). A CodeWright project space file contains a list
of CodeWright project files (*.pjt).
[Adrian N.]
6) Added: Native project file support for Microsoft Visual Studio
.NET project files, for the following languages:
Visual Basic .NET (*.vbproj)
Visual C/C++ .NET (*.vcproj)
C# .NET (*.csproj)
Also, added native project file support for Microsoft Visual
Studio "Solution files" (*.sln), which are similar to the
workspace files of earlier versions of Visual Studio.
For Visual C/C++ .NET, one option is available, to specify the
handling of #include file references. In the 32-bit TLIB for
Windows GUI, the option is selected via a checkbox. In the Win32
command-line version of TLIB, you can add [2] to the wildcard
specification to tell TLIB to scan for include files. For
example, to list the source files referenced by a VC++ .NET
project called acme.vcproj, you could do this:
TLIB G1LW @@acme.vcproj[2]
Microsoft Visual Studio Solution files (*.sln) can contain
references to any of the three kinds of Visual Studio .NET project
files. So TLIB lets you specify the "scan for #includes" option
for .sln files, too. However, it will have no effect for .sln
files that do not contain references to .vcproj files.
Note: Because these Microsoft language products are only usable
on Win32 platforms, we only added support for them to the Win32
versions of TLIB.
7) Changed: the REPLROBR W configuration setting to work regardless
of how READONLYB is configured. Also, added a helpful suggeston
to the "ERROR: Browse mode extract can't be used to replace a
writable file" message, telling the user that the problem can be
circumvented by configuring REPLROBR Q or REPLROBR W.
[Stewart K.]
8) Improved: a few messages, here and there, to make them more
helpful and informative, or less verbose.
5.54b 3-Dec-2002
1) Fixed: a bug in TLIBCO32.EXE, the 32-bit version of TLIBCOMP,
the command-line Visual Compare program.
The problem was that it wasn't always correctly finding its own
path, from which it determines the path of WTLIB32.EXE (to do
the visual compare). The symptom was that it would exit with
the cryptic message, "rc=-1". A workaround was to specify the
program path on the command line. For example:
c:\tlib\tlibcomp myoldfile mynewfile
Or, you could use the 16-bit version:
tlibco16 myoldfile mynewfile
2) Added: TLIBCOPY, a tool for safely & quickly backing up and
restoring TLIB libraries and journal files, or synchronizing
two directories of TLIB libraries.
Though it can be used for other things, it is especially intended
for copying files which are only modified by appending, such as
TLIB library and journal files.
Tlibcopy is totally safe. It cannot destroy any of your data,
no matter what you do with it, because (like TLIB) it only
appends, never replaces, existing files. If both "source" and
"target" file already exist, tlibcopy will copy the source file
to the target only after first verifying that the target file
is both shorter than the source file, and identical to the first
part of the source file.
Tlibcopy has options for automatic directory creation, recursive
subdirectory traversal, and bidirectional directory synchronization.
See DOC\TLIBCOPY.TXT for details, or run TLIBCOPY with no
parameters.
3) Fixed: a minor bug which caused a spurious warning message to be
displayed when TLIB was creating a directory on a network volume
specified with a UNC name ("\\server\vol\directory"). In Win32
versions of TLIB, the warning was:
Note: mkdir(\\server\vol) failed with "already exists" error,
yet FindFirst can't find it. Could be due to a hidden directory,
or a network ideosyncrasy.
In 16-bit versions of TLIB, the warning message was:
ERROR: mkdir(\\server\vol)
4) Added: diagnostic code to detect a strange but dangerous network
problem.
The situation was that one of our customers was using an old
OS/2 version of TLIB, running on Windows 2000, with his work
directory on a different Windows 2000 machine that was serving
as a network file server. During an Update command, TLIB read
only the first 4 KB or 8 KB of a source file before encountering
an end-of-file condition, with the result that only part of the
source file was stored in its TLIB library.
To detect this problem, TLIB now checks the size of the source
file before reading it, and then compares that size with the
actual amount read. If it encounters an end-of-file condition
before reading the entire file, it aborts the Update operation
with this error message:
ERROR: Incomplete file, possible disk error, only nnn of mmm bytes read
Unfortunately, the customer cannot reproduce this problem, and
neither can we, so the testing of this change was necessarily
incomplete.
Also, we have no way of knowing what combination of conditions
contributed to the problem, e.g., whether or not it was specific
to the OS/2 subsystem of Windows 2000. So, to be safe, we added
this test to all six TLIB executables.
If you encounter this error message, please call us, and do not
delete your source file! We would very much like your help
isolating the circumstances which cause this problem.
[Sean F.]
5) Fixed: POKETRAK, to handle source file names with blanks in them.
You can specify file names with blanks by putting quotes around
them. For example:
poketrak tlibwork.trk "c:\dir with blanks\file with blanks.txt" v=3
There are now two functionally equivalent versions of POKETRAK.
POKETR16.EXE is a 16-bit "bound family-mode" OS/2+DOS version.
POKETR32.EXE is a Win32 console-mode version. SETUP will also
copy one or the other to POKETRAK.EXE, depending on how you
answer the questions that SETUP asks you.
[John B.]
6) Fixed: the A=Add/alter project level command, to properly add
quotes around source file names with blanks in them, when adding
new source file names to a named project level.
[John B.]
5.54a 4-Oct-2002
1) Added: Little status icons to the main file list display in the
32-bit TLIB for Windows GUI:
A tiny TLIB icon is shown for source files that are under
version control (i.e., for which a corresponding TLIB library
file exists).
A red check-mark is superimposed for files that you have checked
out for modification.
A red backslash is superimposed for files that someone else
has checked out for modification (locked), so that if you were
to try to Extract/check-out for modification it would fail.
(A blue backslash is similar, but you can still check-out the
file for modification; this is only possible if "weak" or
"branch/project-level" locking is being used instead of "full"
locking -- see the "LOCKING" configuration parameter.)
A black circle and slash means that the source file is missing
from your work directory.
These icons may be combined in various ways, too. For example, a
a black circle and slash superimposed over a TLIB icon means that
the source file is missing from your work directory, but the
corresponding TLIB library file exists (so you can extract the
missing file from TLIB if you need it).
2) Changed: the default AATTR parameter setting. The default used to
be "AATTR SET". Now it is "AATTR RESET". With this change, TLIB
will now clear the "Archive attribute" for your source files when
it has successfully completed an Update or New-library command.
3) Added: display of the "Archive attribute" for source files to the
"Attrib" column in both 16-bit and 32-bit TLIB GUIs. This lets
you see at a glance which source files you have modified but not
yet stored/checked-in into TLIB.
(There was also a very minor associated change in the API for the
TLIB DLL engines; see TLIBDLL.H.)
In combination with the little status icons (in the 32-bit GUI),
this makes the display much more informative.
Note that you can click on the "Attrib" column header (in the
32-bit GUI) or the "Attrib" button (in the 16-bit GUI) to sort the
list of source files by file attributes.
4) Changed: the Mailslot API, in minor ways.
5) Improved: command-line versions of TLIB, to display the version,
file-date, and user-ID for a new version before prompting for
comments.
6) Fixed: a bug which caused TLIB to record the current date/time
instead of the original date/time when storing the first version
of an RLE-compressed (usually binary) file, regardless of the
TOUCHSOUR setting.
7) Fixed: a bug in the TLIB GUIs which made TLIB's
Snapshot -> "plain file list"
command fail to record source files which had not been stored
in TLIB. That is, it skipped source files for which the
corresponding TLIB library files did not exist.
It now includes them in the file list regardless of whether or
not their TLIB library files exist.
8) Fixed: When creating a snapshot, if it failed for some files
because of errors, previous versions of TLIB erroneously reported:
Note: snapshot file '{myfile}.snp' contains xxx source file
records
where xxx was the number of files attempted, rather than the
number actually recorded in the snapshot. That is now fixed.
Now if there are errors TLIB reports:
Note: snapshot file '{myfile}.snp' contains xxx source file
records (yyy others failed).
where yyy is the number of files not recorded in the snapshot
due to errors.
9) Fixed: In GUI versions of TLIB, the "immediate store in library"
checkbox-option for the Snapshot command now works even if you
have disabled the "C" (configure) command via the "commands"
configuration parameter, and even when creating & storing the
first version of a snapshot.
Previously, if you disabled the "C" command by removing it from
the list of commands in the "commands" configuration parameter
in TLIB.CFG, then checking the "immediate store in library"
checkbox would not work for the first version of the snapshot
unless you also configured at least:
updatenew y
or (better):
if *.snp
updatenew y
forceu y
endif
This problem occurred because the GUI front-end uses
"c updatenew_y" and "c forceu_y" to temporarily adjust those
two configuration parameters while storing the new version of
a snapshot file into its TLIB library.
To avoid this problem, the TLIB DLL engine now permits these
two particular configuration changes even when the "C" command
is disabled.
[Tuyen N. & Frode N.]
10) Fixed: in command-line versions of TLIB, if you specified the
"S" (specify version number) suffix with the "S" (snapshot)
command, but you did not put the version specification on the
command line, TLIB would properly prompt for the version
specification (e.g., "*" for latest trunk versions), but it
only used the entered version specification for the first
source file. For all the other source files it complained,
"ERROR: No such version."
Now it correctly uses the entered version specification for
all of the source files.
11) Changed: the default setting/behavior of the SlickEpsi
configuration parameter for TLIB32C, only.
This makes console input a bit nicer, and avoids peculiar
behavior seen when, while doing an Update, the user entered
a comment line that was the maximum allowed length. (TLIB32C
saw a non-existant empty 2nd input line, and aborted the update.)
That behavior was due to an old (but never fixed) Microsoft
Windows bug in the Win32 Console I/O console functions
("Q137195"). The new default (like "SlickEpsi Y") causes
TLIB32C to use reads from "standard input" instead of console
input when requesting input from the user.
If you prefer the old behavior, you can configure SLICKEPSI N.
12) Fixed: an obscure bug that could cause the TLIB DLL engine
to abort with a protection exception if the DLL engine was
sent a command requiring a file name, but no file name, so
that the DLL engine had to ask the GUI front end to prompt
the user for the file name.
Since TLIB's GUIs do not do this, no users reported this bug.
However, the bug could conceivably be encountered by users of
TLIB's APIs.
13) Added: a new entrypoint to the low-level API to TLIB's DLL
engines. GET_TLIB_ANSWER_KIND_DETAIL() is similar to
GET_TLIB_ANSWER_KIND(), but gives more detailed information
about the purpose of a single-line or multi-line user query.
See TLIBDLL.H for details.
14) Added: "Inspect" button to comment-entry screen, when creating
a new library (storing the first version of a source file).
15) Improved: The handling of "interactive" commands given to
TLIB's GUIs via "Run manual command" or via TLIB's APIs,
instead of via the usual menus and buttons.
For example, in earlier versions of TLIB, if you entered "N"
via "Run manual command," TLIB would handle it as a create
New-library command, and properly prompt you for the source
file name. But the comment-entry window would be the one that
should be used for Update commands; e.g, the "History" button
was enabled instead disabled. Now the TLIB GUI correctly
displays the proper New-library comment entry window, with
the History button disabled, and with an "Inspect" button
instead of a "Visual Compare" button.
16) Changed: the appearance of the vertical "drag-bar" in Visual
Compare, to make it more obvious that it can be dragged side
to side to resize the two panes.
[Jesse D.]
17) Fixed: When the current TLIB configuration file was in a
directory that had blanks in the path, the "Edit TLIB.CFG"
button in WinTLIB didn't work, because TLIB failed to put
quote marks around the path when passing it to your editor
(or Notepad).
[Jesse D.]
18) Fixed: A misleading error message.
TLIB library files always begin with a ".V". When TLIB opens
a library file and finds no ".V" at the beginning, it now
says "ERROR: Not a TLIB library file..." instead of saying
"ERROR: Could not open library file...", which was misleading.
[Jesse D.]
19) Fixed: a bug which caused incorrect captions above the visual
compare panes if you clicked on the "Visual Compare" button
(or "Delta" in the 16-bit GUI) in the comment-entry window
while storing a new snapshot with the "Immediate Store in
Library" option checked.
5.53L/m 27-Jun-2002/7-Aug-2002
(Note: the 16-bit GUI is still version 5.53k/g1)
1) Fixed: a bug which caused a missing field #7 (source file
path\name) in the journal file.
This caused the journal file records to have only 12 fields
instead of 13, and caused the 6 subsequent fields to be in the
wrong positions: lock file path, version number, source file
"key" (name), current and "other" project level names, and
Update comments.
This bug was introduced in version 5.53a (actually in version
5.52h/beta).
The workaround for this bug is to examine the number of fields
in each journal file entry, and if there are only 12 fields
insert a copy of the source file "key" (name) as a substitute
for the missing source path\filename field.
We have created a tool to make this repair to your journal
files; look for JOURFIX.ZIP in the "downloads" section of our
web site.
2) Fixed: a bug which caused the version number to be omitted from
the journal file for A and AP commands.
[Jeff Y.]
3) Fixed: a bug which caused the "Inspect" button to not work
in the 32-bit GUI version of TLIB. (This bug was introduced in
version 5.53k.)
4) Fixed: It was truncating the configured PATH at the first
embedded blank if you took a snapshot with "immediate store
in library" checked.
[Ken L.]
5) Added: another API, similar to the WM_SETTEXT Windows Messaging
and DDE-based APIs, but utilizing Windows Mailslots for
interprocess communication. This API is the "glue" connecting
our (still incomplete) Microsoft SCC API DLL to TLIB. Mailslots
are similar to named pipes, but, unlike named pipes, they are
supported under Win-95/98/Me as well as under Win-NT/2K/XP.
5.53k 8-May-2002
1) Fixed: a bug in the TLIB Visual Compare which could cause a region
of differences to be omitted from the display.
In the 32-bit version, it could happen if a single region of
differences exceeded 10,000 characters but was less then 200 lines.
In the 16-bit version, it could happen if the region of differences
was more than 5000 characters but less than 100 lines.
The symptom was that at first glance the two versions of the file
appeared to have no differences in that region, but if you looked
closely you would notice that a large block of line numbers were
skipped without a "divider" (elide-indicator) line.
[Krys B.]
2) Improved: The 32-bit TLIB Visual Compare display of differences
between certain files, especially when large ranges of lines are
all changed but only in minor ways.
3) Fixed: A bug which could cause 16-bit protected mode versions of
TLIB to GPF when doing a Native Project Mode "open" of a web site
which had an "href=" reference to a file name with no extension.
4) Added: code to TLIB work around a Novell 4.83 client bug which causes
"ERR: putrec write failed" errors. The bug causes a write to fail
if it is to a locked region when both lock and write use the same
file handle. This code works around the problem by unlocking the
region and retrying the write, but it still displays the error
message one time, followed by a message saying, "Novell 4.83 client
bug detected; workaround successful."
This bug is detected by TESTLOCK as a failure of Test #8:
Test #8 FAILED! (Adjacent region locks, and lock/write conflicts)
The bug was observed under Windows 2000 with the latest Novell
4.83 client. It did not happen with an earlier (4.90?) client
circa Sept. 2001, a/k/a 4p90p20000717.
5) Added: to command-line versions of TLIB, an informative message
that says "Aborted!" when you abort a multi-page version history
listing by pressing Enter instead of Spacebar.
[Rich H.]
6) Added: a 32-bit version of TLIBCOMP.EXE, the command-line visual
compare utility. The 16-bit version is now named TLIBCO16.EXE,
the 32-bit version is named TLIBCO32.EXE, and SETUP will also copy
one or the other to TLIBCOMP.EXE, depending on how you answer
the questions that SETUP asks you.
The two versions are very similar, but the 32-bit version avoids
long file name restrictions. You can run either of them without
any parameters for a "help" screen.
5.53j 28-Feb-2002
1) Improved: TLIB's handling of non-relative URLs when traversing a web
site to find all its files, when you "open" your index.html file (or
another HTML file) in TLIB as a "native project file."
If you have a copy of your web site on a local hard disk or network
drive, with "drive letter" access, TLIB can use the initial/main web
site file as a "native project file," so that you can just "open" it
in native project mode. TLIB can read it and find all the references
to other web pages, read those web pages, etc., to find all the files
in your web site.
This is very handy. It lets you simply open an index.html file in
TLIB, and immediately see the complete list of files that make up
your web site.
Note that this works only with links to other pages on your own web
site. TLIB doesn't actually fetch pages across the Internet with
the HTTP protocol. (If it did, then you couldn't do version control
on sites with server-side includes, CGI scripts, etc.)
The process of following the links is quite simple if the links
are "relative" to the initial page. For example, a link like
<a href="xyz/anotherpage.html"> is obviously in the "xyz" subdirectory
of the page containing the link. (It is a little more complicated
than that if you are using server-side includes, but you get the idea.)
However, a link like <a href="http://www.xyz.com/abc.html"> is
harder to handle. First, TLIB must to decide whether it is on
your web site or not, and if it is part of your web site then TLIB
must find the file on your hard disk. The problem is that the link
gives a web address, and TLIB needs a way to translate the web
address into a local disk location.
Links like <a href="/def.html"> present a similar problem. In this
case, we know that the file def.html is on our web site, but where
is it on the local hard disk or network drive?
To solve these problems, HTML provides the <BASE href=...> tag, which
can be placed in the <head></head> section of an HTML file. This tag
specifies the web address for a file, which tells TLIB two important
things: the domain for your web site, and the way that web locations
correspond to local hard disk locations. A <BASE href=...> tag
tells TLIB all it needs to know to properly translate the non-relative
links on your web site into local hard disk locations, so that it
can find all your web site files.
Note that you need not add <base href=...> tags in all of your
HTML files. If you have one in just your initial page, TLIB can use
that information when traversing the links and finding all the rest
of the files that comprise your web site.
To handle links like <a href="http://www.xyz.com/abc.html"> requires
a <BASE href=...> tag. Without a <BASE href=...> tag, TLIB must
assume that all such links point to other web sites.
However, TLIB can often handle links like <a href="/def.html"> even
without a base tag. To do so, TLIB makes a reasonable guess about
the location of your initial web page file: that its web location
is in the top/root directory. So TLIB looks in that directory for
the def.html file, too.
2) Fixed: File redirection in the Win32 GUI version of TLIB.
This obscure feature lets you "redirect output" in the GUI versions
of TLIB, to create a status log file. Simply use the "Run"
manual command window and enter something like ">c:\tliblog.txt"
and your status log messages will be written to c:\tliblog.txt.
You can enter ">" (with no file name> to close the log file.
This is useful if you need to record more status log lines than
TLIB preserves in memory and displays in the "View Log" window.
3) Fixed: a bug which could cause a "ERR: m_ov" error when debug
prints were enabled via the "-d" command-line option, and an HTML
file with extremely long lines was being parsed.
5.53i 26-Dec-2001 & 16-Jan-2002 & 7-Feb-2002
(Note: the GUI is still version 5.53h)
1) Fixed: TLIB's built-in tables of file extensions which it uses
to implement two options that are available when "opening" an
HTML file (e.g., index.html) as the "project file" for a web site:
[1] "include binary files (image, sound, etc.)", and
[8] "skip links to non-displayable files"
The problem which this solves was seen when both of these options
were selected together (i.e., [9] or [11] was specified). In this
case, TLIB was ignoring href= links to non-text displayable files
(and audio files) such as .jpeg, .gif, .pdf, .mid & .mp3, because
it incorrectly considered them to be "non-displayable." Now TLIB
correctly finds these file names.
To implement these two options, TLIB looks up file extensions in
three built-in case-insensitive lists of file extensions:
binary displayable: .gif .jpg .jpeg .mpg .mpeg .bmp .dib .png
.ico .pcx .wmf .tif .tiff .pict .pdf .mid .wav .mp3 .ra .ram .swf
.doc .xls .xlw .wri
nonbinary displayable: .html .htm .shtml .txt .rtf .ini
binary nondisplayable: .exe .com .pif .ace .arc .arj .bh .bz2
.cab .gz .ish .jar .lha .lzh .pak .pwc .rar .sit .tar .taz .tgz
.z .zip .zoo
Note that these lists are ONLY used for implementing these 2 options
while parsing HTML files to "open" them as "native project files."
The lists are not used to determine the storage format (text vs.
binary) which TLIB chooses when creating TLIB library files. That
is based on the "FILETYPE" configuration parameter and, when
FILETYPE AUTO is configured, on an examination of the actual file
contents. (See CONFIG.TXT and look for "FILETYPE")
By the way, if you think these lists of file extensions need
adjusting, please tell us.
2) Changed: a dire-sounding "Warning" message which really didn't
indicate a problem into a milder "Note" message.
[Stacey G.]
3) Fixed: The 7-Feb-2002 re-release corrects an error in the
installation program (SETUP.EXE), which caused the command-line
executable, TLIB.EXE, to be a copy of the DOS-only version,
TLIBDOS.EXE, rather than the requested Win32 console mode
version, TLIB32C.EXE. There was no change to TLIB itself.
The workaround for this problem was simple: just go to the
TLIB installation directory and copy TLIB32C.EXE to TLIB.EXE.
5.53h 14-Nov-2001
1) Fixed: a bug which could cause the TLIB GUI to hang with a flickering
hourglass mouse cursor (busy indicator) while displaing the initial
"splash screen," if you ran it after a fresh install without first
creating a TLIB.CFG file with the TLIB Configuration Wizard.
[Joe L.]
2) Improved: the usability of the standalone visual compare, in several
subtle but significant ways. For example, when you close the visual
compare screen, it now returns to the file and version selection
screen, rather than exiting completely, in case you want to do
another comparison.
3) Fixed: a bug in the "native project mode" feature of the GUI
versions of TLIB, which caused the name of the project file being
opened to be translated to all upper-case. This was generally
inconsequential, except when the project was a Web site and the
"project file" being opened was index.html.
4) Added: instructions in TLIB\DOC\READ_ME.TOO for how to run TLIB
under Linux using the WINE Windows Emulator.
5.53g [never released]
5.53f 23-Oct-2001
1) Added: support for parsing .shtml files (HTML w/ Server Side
Includes), to discover the #include directives and recursively
discover what files comprise the web site.
(This feature, of course, only works in the versions of TLIB
which support long file names.)
2) Added: the "Diagnose" button when opening a web site in
native project mode, from GUI versions of TLIB. Clicking the
Diagnose button lets you see exactly how TLIB processed your
web site, including the file and line number where each file name
was found.
Command-line versions of TLIB can access this feature via the
"-d256" command-line option, e.g., like this:
tlib32c -d256 g1lw @@c:\webdir\index.html[3] >tmp.tmp
The diagnostic lines in the output begin with the word "Found".
The "[3]" options encode three options in a bit-sensitive integer.
In GUI versions of TLIB, these options are selected by checkboxes.
In command-line versions of TLIB, you can select the three options
by adding 1, 2, and/or 8 together to make an integer from 0 to 11:
1 = include binary files (image, sound, etc.)
2 = recursively scan for file names
8 = skip links to non-displayable files
In the example above, we used "[3]" for the options. 3 = 1+2,
so [3] selects the first two options but not the third.
3) Fixed: a bug, introduced in TLIB 5.53e, which caused improper
handling of checkable options in the Open Named Project File
dialogue of GUI versions of TLIB for Windows. The most obvious
symptom was project file specs with the options set to "[10]"
or "[11]".
4) Fixed: a bug that caused duplicate entries in the MRU (Most
Recently Used) drop-down list in the Open Named Project File
dialogue.
5) Fixed: a bug in the handling of Microsoft Visual Developer
Studio .mak files, which caused TLIB to fail to find the
"external dependencies" (header files).
6) Improved: compiler-native project file support for Microsoft
Visual Developer Studio, so that TLIB can now find .def files
which are used in link or lib steps.
7) Fixed: a bug which caused the 32-bit GUI version of TLIB, when
creating a snapshot or file list with the Snapshot command in
native project mode for a .html or .shtml file, to miscalculate
the default snapshot or list file name.
5.53e 9-Oct-2001
1) Added: support for parsing HTML files in Native project mode.
This lets you "open" your index.html or index.htm file in TLIB
as if it were a named project files. TLIB will read and parse
the HTML files, recursively scanning for src= and href=, to
find all the files that comprise your web site.
This simplifies keeping your web site under TLIB Version Control,
especially if there are a lot of extraneous files in the same
directory, so that simple wild-card specifications would find
too many unrelated files.
Several options can be used to adjust which files are included
in the list:
__ include binary files (image, sound, etc.)
__ recursively scan for file names
__ skip links to non-displayable files
TLIB 5.53e finds files indicated by all the standard src= and
href= HTML tag fields, and also attempts to find files referenced
in javascript, though that isn't always possible.
[10/23/01 - Note: The ability to handle .shtml files with server-side
include directives was added in TLIB 5.53f.]
2) Converted: The 32-bit versions of TLIB are now built with version 6
Microsoft compilers (VC++ and Visual Basic), instead of version 5.
This should not result in any functional change.
3) Improved: some diagnostic messages.
4) Changed: The behavior of the ".mak optimization" feature of TLIB's
compiler-native project file support for Microsoft Visual Developer
Studio project files.
This features enables TLIB to read the generated .MAK file instead
of the corresponding .DSP (Developer Studio Project) file, to
obtain the dependency information, which avoids the need to read
all your source files and scan for #include directives.
In TLIB 5.53c and earlier, TLIB would only read the .MAK file
in lieu of the .DSP file if the two files had near-identical
dates. However, if you do an explicit "Export Makefile" command
in Visual Developer Studio, then the resulting .MAK file will
have the current date/time, but the corresponding .DSP file may
have a much older date/time. So, TLIB 5.53e now reads the .MAK
file in lieu of the .DSP file if the .MAK file is newer than the
.DSP file.
5) Fixed: a subtle heap-management bug in 16-bit command-line
versions of TLIB. Oddly enough, no symptoms of this bug were
ever observed.
5.53d [never released]
5.53c 29-Jun-2001
1) Fixed: a netsetup bug, which caused part II of the installation
process to fail, when installing under Windows 2000 with a user ID
in the "power user" group. Symptom was that netsetup forced a
premature re-boot at the 23% complete point.
The workaround was to install as "Administrator."
[Pier Y.]
5.53b 29-May-2001
1) Fixed: a bug in the 32-bit GUI version of TLIB which could cause
a hang (infinite loop) or "Run-time error '35600'" under some
circumstances while doing an Extract with "S - Specify Version #"
checked.
This bug was introduced in TLIB 5.53a.
2) Fixed: a bug in both the 16-bit and 32-bit GUI versions of TLIB,
which occurred if you entered an all-blank comment while doing
an Update or New library command.
Entering such a comment erroneously enabled the "OK" button
just like entering a non-blank comment does. But clicking OK
would cause the file to be skipped, like clicking the "Skip"
button, except that the only indication that the file had been
skipped was in the status log (click "View Log"). Also, the
status column erroneously showed "0" (success) instead of "1".
[Chad C.]
3) Changed: the installation program so that the default name of the
Start Menu folder for TLIB is now "TLIB Version Control" instead
of "TLIB for Windows," unless you already have a "TLIB for Windows"
start menu folder. We also moved some less-frequently used
shortcuts into subfolders: "16-bit" and "Add-Ins."
5.53a 2-May-2001
1) Fixed: a bug introduced in both the 16-bit and 32-bit versions
of the GUI TLIB in 5.52i/beta.
The main symptom was an error which occurred after switching
directories from one in which a named project level was used to
one in which it was not. When an "expand wildcard" was attempted,
an error occurred:
ERROR: The A and T search modes cannot be used because PROJLEV
is not set to a named level.
Workaround was to exit TLIB and restart it.
2) Fixed: an obscure bug in the 16-bit TLIB DLL engine API: calling
GET_TLIB_CONFIG_VAL() or GET_TLIB_CONFIG_VAL_P() to look up the
value of a numeric configuration parameter returned garbage.
Workaround was to use a "G2parametername" command to look up
numeric configuration parameters.
3) Improved: both 32-bit and 16-bit GUIs, to "grey-out" (disable) the
R-share command when TLIB is not configured to selectively share
files (i.e., when NUMLIBDIR=1).
4) Fixed: a problem with running a beta 5.52i or 5.52j 16-bit GUI
version of TLIB under Win-OS/2, which could cause the following
error message to pop up:
Error, GetObjectAPI returned rc=30 (should be 50)
(This bug was not present in any non-beta version.)
5) Added: support for scanning Borland Delphi projects for {$I...}
include file references.
In the GUI versions of TLIB, you can just check the "scan for
includes" checkbox when openning the .DPR project file, in
compiler-native project mode.
In command-line versions of TLIB, you should add [2] to the
wildcard specification to tell TLIB to scan for include files.
For example, to list the source files referenced by Dephi
project called acme.dpr, you could do this:
TLIB G1LW @@acme.dpr[2]
Also, the [1] option now adds the .CFG and .DOF files to the list,
instead of just the .OPT and .RES files. Note that the [option]
number is bit-sensitive, so [3] is the combination of [1] and [2].
Thus, the following TLIB command will list the acme.dpr source
files, plus acme.opt, acme.res, acme.cfg, and acme.dof:
TLIB G1LW @@acme.dpr[3]
6) Added: extended wild-card syntax to let you tell TLIB to recursively
scan individual C, C++, and Pascal source files for include
directives.
To use this feature, instead of specifying the source file name to
TLIB, simply pretend that it is a compiler-native project file:
prefix the file name with "@@" and add the "[2]" option to the end.
For example, instead of specifying MYFILE.C, you can specify
@@MYFILE.C[2] to make TLIB scan for include files (header files).
Thus, the following command will list myfile.c plus the non-system
include files that it references:
TLIB G1LW @@myfile.c[2]
Contrast that command with this one, which lists only one file,
myfile.c:
TLIB G1LW myfile.c
Currently, this feature is supported for C, C++, and Pascal, only.
For C/C++ files, it displays include files referenced in "quotes",
but not include files reference in <angle-brackets>, since those are
normally standard compiler or system header files.
For Pascal files, only the Borland include directive syntax is
supported: {$I filename}, {$INCLUDE filename}, etc..
Note: the C, C++, or Pascal source file must already be present
in your work directory for TLIB to be able to scan it for include
directives.
7) Improved: the TLIB GUIs in subtle ways. For example, command menu
choices are more verbose/descriptive.
8) Released: TLIB 5.53a, including TLMERGE, which is a 32-bit version
of our DIFF3 merge tool.
9) Discontinued: TLIB for DOS as a separate product, because nobody
was buying it.
TLIB for DOS is still included as part the TLIB Combo Edition,
but to install it you'll need to be able to run Windows. If you
need to put the MS-DOS version of TLIB onto a DOS-only computer,
you'll have to first install it on a computer that has some
version of Windows running (by running Setup and then the TLIB
Configuration Wizard). Then you can copy the TLIB for DOS
executables (TLIBDOS.EXE, TLIBX.EXE, etc.) and TLIB.CFG from the
Windows computer onto the DOS computer.
5.52j/beta 22-Apr-2001
1) Fixed: a bug in the beta version of TLMERGE.EXE, which caused
it to identify extraneous "collision" areas. The fixed version
displays the version number 5.52b. [Joev D.]
2) Fixed: a bug which caused TLIB to insert an incorrect revision
history comment block in an extracted file if it was extracted
by specifying a version number of "*-1" and if the last version
in the TLIB library had multiple lines of comments stored with it.
[Joev D.]
3) Added: a vertical divider bar to the Visual Compare screen, which
you can drag left or right to resize the two panes, in the Win32
GUI version of TLIB, only.
4) Fixed: a bug which prevented the right mouse button menu from
popping up (for copying to clipboard) on the Visual Compare
screen of TLIB. (Note: this feature is only available in the
Win32 GUI version of TLIB.)
5) Added: an "Inspect" button to the version history list, in the
the 32-bit GUI version of TLIB, only.
The Inspect button allows you to take a quick peek at a selected
version of a source file, without extracting / checking it out.
6) Fixed: A bug in the Configuration Wizard which was included with
the previous beta TLIB, in which the generated TLIB.CFG file
lacked a CR/LF after the NUMHELP line. The fixed Configuration
Wizard identifies itself as version 5.52j.
[Ashim J.]
7) Improved: several subtle user interface issues.
5.52i/beta 18-Apr-2001
1) Added: a beta-test version of TLMERGE.EXE, which is a 32-bit
version of our venerable DIFF3 merge utility.
TLMERGE has several advantages over DIFF3, including the ability
to handle long file names, and the ability to use more memory so
that it can process large files with fewer passes. Using TLMERGE
instead of DIFF3 also permits passing longer command lines (as
is sometimes required when TLIB's M/migrate command generates
TLMERGE or DIFF3 commands in a migrate2.bat), and it avoids a
strange hang which one of our customers encountered when running
DIFF3 under Windows 2000.
[Joev D.]
2) Added: enhancements to the version history list which is displayed
in the Win32 GUI version of TLIB when you double-click on the
name of a source file, and in certain other contexts. There are
now extract and compare command buttons, and an option to let
you select and copy to clipboard.
3) Added: enhancements to the Run Manual Command dialogue, including
a handy "Command help" button, in both 16-bit and 32-bit GUI
versions of TLIB.
4) Fixed: a minor bug which caused the "current version" flag lines
to be shown twice in an LX command's version history display if
there was only one version in the TLIB library.
5) Fixed: a bug which crashed the 32-bit GUI version of TLIB if you
tried to execute a 0-length command in the Run Manual Command
window.
6) Changed: to using a newer version of Wise InstallBuilder (v8.13)
for making our installation package. (This change should not
affect anyone.)
5.52h/beta 30-Mar-2001
1) Improved: Right mouse button behavior in the main window of
both 16-bit and 32-bit GUIs.
If no files are already selected, and you press the right mouse
button over the main file list on the main TLIB window, it
now selects the source file that is under the mouse cursor
and then pops up the menu. Earlier versions required you
to first press the left mouse button to select the file, then
press the right mouse button to pop up the menu.
(This was actually added in TLIB 5.52g/beta, 1/19/2001.)
[Dan H.]
2) Improved: TLIB's support for sharing files between projects.
You can now more easily use a single work directory with a mixture
of source files, some private and some sharable. TLIB can now
be configured to ask you, wen you create a new TLIB library,
whether the source file is non-shared or sharable, to determine
where the TLIB library file should be stored.
A pair of new TLIB configuration parameters is provided for this
purpose:
NUMLIBDIR <number,1-5>
LIBDIRQ <number,1-5>,<quoted-string>
The default is "NUMLIBDIR 1" and no LIBDIRQ parameters (meaning
that users will not be asked where TLIB library files should be
created.
Our assumption is that you will configure TLIB's PATH parameter
with two different directories: one for private files, the other
for sharable files. (The PATH configuration parameter tells TLIB
where to put its library files.)
Most of your source files will probably be PRIVATE to particular
program/projects. The TLIB libraries for these files will be kept
in separate directories (or directory trees), hidden from all other
projects/programs. To keep them separate, TLIB normally uses the
name of your work directory as a part of the path to the TLIB
library files (though it is also possible to configure TLIB to use
other approaches).
Source files which need to be SHARED with another project/program
will have their TLIB libraries stored in a shared, common
directory (or directory tree), visible to your other projects/
programs.
The new Configuration Wizard included with TLIB 5.52h/beta can
configure the PATH, NUMLIBDIR, and LIBDIRQ parameters for you, for
a mixture of shared and private files. The PATH parameter will be
similar to one of these:
path "\\Server\vol\TLIB\LIBS\%wdir%;\\Server\vol\TLIB\SHAREDLIBS\"
path "\\Server\vol\TLIB\LIBS\%wdir%*\;\\Server\vol\TLIB\SHAREDLIBS\*\"
(In this example, we configured TLIB to keep sharable library
files in or under the \TLIB\SHAREDLIBS\ directory on the server.
Note: keep the line under 254 characters long!)
If there's an asterisk in the path (as in the 2nd example above),
then you are using tree-structured work directories. If so, then
you will probably want TLIB to keep track of subdirectories for the
shared files, too, so the Configuration Wizard includes an asterisk
in the path for the shared library files, as in the second example
above. However, this is optional, and you can delete the second
asterisk, like this:
path "\\Server\vol\TLIB\LIBS\%wdir%*\;\\Server\vol\TLIB\SHAREDLIBS\"
If you do so, then your shared source files need not reside in
subdirectories with matching names, to be visible to other projects.
E.g., you could have a shared IOSTUFF.H file in the main work
directory for one program/project, but put it in a subdirectory
of the main work directory for another program/project.
(However, this works best if you are using a named project level,
because the named project level can keep track of where the source
file belongs.)
The NUMLIBDIR and LIBDIRQ parameters are used to describe the paths
in the the PATH configuration parameter. For example:
numlibdir 2
libdirq 1,"Regular location for TLIB libraries (\\Server\vol\TLIB\LIBS\%wdir%*\)"
libdirq 2,"Location of libraries for sharable files (\\Server\vol\TLIB\SHAREDLIBS\)"
(Note: feel free to change the messages, if you wish.)
These parameters define the choices that will be displayed to users
when creating new TLIB libraries (i.e., when adding new source
files to your program/project), or reclassifying them with the "R"
command.
If you are working on a program/project which needs to share a
sharable source file that was first created for a different
program/project, there are two scenarios:
1) You are not using TLIB's named project levels.
In this case, you can simply extract (check out or browse) the
source file like any other.
2) You are using TLIB's named project levels.
In this case, you can add the file to your project's named
project level. In command line versions of TLIB, use the "AL"
command. In GUI versions of TLIB, check the "Library" search
mode, then Expand wildcards, the select the file, and then click
the "Add/alt" command ("Add/Alter project level").
Note: you will only be able to share files which have libraries
in the SHAREDLIBS directory. If you have a file that was first
stored under TLIB as non-shared, but now you wish to share it
with another program/project, you'll need to move the TLIB library
file from its original location to the location used for the
libraries for sharable files. That's what the new "R" (reclassify)
command does; see below.
[Ram M.]
3) Added: the "R" (Reclassify-shared) command, to reclassify source
files as "sharable" with other projects, by moving their TLIB
libraries into a shared directory/folder.
Use this command when you have a source file that was "private"
for a particular project, but you now need to share it with
one or more nother projects. The "R" command makes the TLIB
library available to the other projects. Then you will need to
change to the new project (i.e., change your current directory
to the other project's work directory), and (if you wish) extract
the source file.
If you are using TLIB's named project levels, you'll also need
to add the file to the current project level for the other
project. Use the "L" (libraries) search mode to find it, and
then use the "A" (Add/alter project level) command to add the
newly shared file to the project level.
For the "R" command to work, the NUMLIBDIR, LIBDIRQ, and PATH
parameters must be appropriately configured; see v5.52g, below,
or use the new TLIB Configuration Wizard to configure them.
In this beta release, the "R" command is available in the
command-line versions of TLIB, only. It is not available in
the GUI versions of TLIB (except via "Run Manual Command"). It
will be added to the two GUI versions of TLIB before release.
4) Improved: The TLIB Configuration Wizard.
We added support for the new "R" (Reclassify-shared) command to
the TLIB Configuration Wizard. The Configuration Wizard will
now give you the option of choosing BOTH shared and private
locations for your source files, instead of just one of the
other. The will cause the Configuration Wizard to generate
a TLIB.CFG file that properly configures the NUMLIBDIR, LIBDIRQ,
and PATH parameters to support sharing some, but not all, of
your files between projects.
Also, the Configuration Wizard now does a better (more complete)
job of configuring named project levels.
Also, we changed the release numbers we use for the Configuration
Wizard, to be more consistent with TLIB's release numbers. This
version of the Configuration Wizard now identifies itself as
version 5.52.
5) Fixed: a bug which caused TLIB to incorrectly deduce source
file directories from the locations at which the corresponding
library files were found, in a particular set of circumstances.
In GUI TLIBs, the symptom was that the directories shown in the
"Path" column on the main screen were incorrect. Also, if you
tried to do a TLIB operation (for example, if you double-clicked
on a file name to get a version history listing in the GUI),
then TLIB displayed an error similar to this one:
ERROR: No such library file: "C:\tlibs\abc\..\xyz\myfile.c_$".
The problem occurred when two (or more) semicolon-separated
library/lock file directories were specified by the PATH
configuration parameter in TLIB.CFG, and TREEDIRS_Y was also
configured, and "\*\" was configured as part of the second
library files path (that is, after the semicolon), and
"Include SubDirs" was checked in the TLIB GUI (or the "I" search
mode suffix was used in a command-line version of TLIB), and the
library or lock file was found in a subdirectory.
[Ram M.]
6) Added: support for right-clicking on a file or directory name
in any of TLIB's most-recently-used (MRU) dropdown lists, to
remove that file name or directory name from the MRU.
(This is in only in the 32-bit TLIB GUI.)
[Ram M.]
7) Added: "Open with..." to the Command and right-mouse menus in
the 32-bit TLIB GUI.
Also, ordered these menus a bit more logically, in both 16-bit
and 32-bit TLIB GUIs.
8) Fixed: a minor anomoly in TLIB32C.EXE, the Win32 console mode
version of TLIB, which caused an extra blank line to be displayed
after it prompted for input. It no longer does.
However, TLIB2.EXE also does this when run under Windows
NT/2000. We did not change it, because, due to operating system
differences, TLIB2.EXE only displays the extra blank line when
run under Windows NT/2K, not under OS/2.) [Joev D.]
9) Fixed: A bug which could cause a protection exception if you
entered a command with no file name in the TLIB GUI's "Run
Manual Command" window.
10) Fixed: A bug in the Win32 GUI and console mode (command-line) versions
of TLIB which could cause TLIB to fail to reopen a project-level
tracking file or journal file due to concurrent access by other
TLIB users. A typical symptom was error messages like these:
ERROR: Cannot open "T:\TLIB\PRJS\DEV\TLIBWORK.TRK", error = 5,13,5.
Err=5, errno=13 (access denied)
ERROR: Couldn't reopen T:\TLIB\PRJS\DEV\TLIBWORK.TRK
Or these:
ERROR: Could not open journal file: "T:\TLIB\LIBS\JOURNAL.DAT"
Err=80, errno=17
err #5, attrib=33 ro=1
Retry? y
Y
ERROR: Could not create journal file: "retry?"
Err=123, errno=22
Retry? n
N
The circumstances under which this problem could be seen were
that two or more users were trying to process massive numbers of
files at the same time, using a Win32 version of TLIB. (The
problem with accessing the journal file was equally likely with
both the GUI and Console mode versions of TLIB; the problem
with accessing the project level tracking file was much more
likely to be seen in the GUI version.)
This bug affected only 32-bit versions of TLIB.
[Ram M. and Joev D.]
11) Fixed: A bug which caused command-line TLIBs to fail to recover
after prompting the user to "Retry?" file access, if the user
answered "Y".
One way to reproduce the problem was to open the TLIB journal
file "exclusively" with another program, then do a TLIB operation
that would be recorded in the journal file. TLIB would display
"awaiting access..." for a couple of minutes, then "gave up!"
and display a "Retry?" prompt. If you answered "y" (yes), then
TLIB should have resumed awaiting access. Instead, however,
it displayed strange errors and quit. For example:
ERROR: file length check failed: retry? (ff=-1,op=450903,1).
Try configuring DATAPATH Y
(The "Try configuring DATAPATH Y" message could be displayed even
if DATAPATH Y was already configured.)
This bug has now been fixed. [Joev D.]
12) Documented: The IFC/ENDIF configuration conditional block, which
allows you to condition TLIB's configuration parameters on what
command is being performed.
This feature has existed in TLIB for quite a while, but until now
we hadn't figured out a good use for it. Now we have. See
CONFIG.TXT or CONFIG.WRI.
13) Increased: the maximum command line length from 130 characters to
274 characters in 32-bit versions of TLIB.
5.52f 13-Feb-2001 (32-bit GUI 5.52f/g2 & 16-bit GUI 5.52e/g1)
1) Fixed: Under some operating systems (e.g., NT 4.0), the 32-bit
TLIB visual compare was malfunctioning rather badly: displaying the
wrong font, text not lined up with line numbers, extra vertical
scroll bars, etc.. This bug was introduced in 5.52a/beta.
It has now been fixed.
[Julian W.]
2) Fixed: Under some operating systems, the 32-bit GUI visual
compare wasn't displaying whitespace differences correctly (with
the "shaded box" character), with the Terminal font default (which
is normally the best font for visual compares. We think we have
this fixed now, but if you you find that whitespace differences are
not properly highlighted using the Terminal font on your system,
please tell us.
3) Changed: the release numbers we use for the GUI TLIBs, to be
more nearly consistent with the product version number.
4) Improved: The 32-bit GUI TLIB now memorizes the main listbox
column widths and the window sizes for the main and visual
compare windows, saving/restoring them to/from TLIB.INI.
[Julian W.]
5) Improved: got rid of that annoying blinking scroll bar on the
visual compare screen. Also improved the tab and arrow key behavior.
Also, we now usually call it "Visual Compare" instead of "Delta."
6) Improved: the way that the main window "stretches" when the
window is resized in the 32-bit GUI TLIB, to accomodate longer
file names & paths.
7) Added: ability to customize the colors used by the Visual Compare
(see the Compare Options screen). This is especially useful
for folks who are partially colorblind.
[Julian W.]
8) Fixed: a minor problem selecting version numbers from the
version list in the GUI versions of TLIB, if the current WORKDIR
or PROJLEV versions were flagged in the list. (But was introduced
in 5.52b/beta.)
9) Added: jour2snp.pl, a small Perl program to create TLIB snapshot
version label files "after the fact" by examining the TLIB journal
file. With this tool, you can create a snapshot version label
for any desired date and time, for either the latest trunk
versions or any named project level. This can be a real help
if you need to retrieve an old version of a program, but didn't
remember to make a version label for that old version.
(Download it from our Web site if you need it.)
5.52d/beta 5-Feb-2001 (Win32 TLIB 1.109s & 16-bit WinTLIB 1.105y)
1) Fixed: "ERR: fl0t"
[Jonny W.]
3) Improved: Migrate command, to reduce the chance of this error:
ERROR: one or more lines in MIGRATE2.BAT are longer than 127 characters,
so it won't run correctly! Try to shorten your CMTFLAG configuration
parameter, and/or shorten or eliminate your CMTSUFFIX configuration
parameter. Then re-do the migrate.
3) Alphabetized the list of compiler-native project file formats (in the
"open" dialogue in TLIB for Windows).
5.52c/beta 2-Feb-2001
1) Incorporated 5.52b enhancements into the 16-bit TLIBX.EXE, and
made some efficiency improvements.
5.52b/beta 1-Feb-2001 (Win32 TLIB 1.109r & 16-bit WinTLIB 1.105x)
1) Fixed: a subtle bug in the 5.51i Migrate command improvements (the
bug was related to automatic base version determination when
migrating from a version that was, itself, the result of a migrate).
2) Added: ability to show the current WORKDIR and PROJLEV version
numbers in a version history listing, by adding an "X" suffix to
the "L" (list versions) command.
In the GUI versions of TLIB, this is the default for listing
version histories (e.g. when you double-click on a file name).
In command-line TLIBs, this feature can be utilized via the new LX
(List eXtended) command. The output looks something like this:
TLIB LX f\foo.c (library=\\server\sys\tlibs\foo.c$)
1 FOO.C 25-Jan-2001,16:18:32,`DAVE' Created foo.c, module for
interfacing to bar.c
2 FOO.C 27-Jan-2001,11:24:26,`DAVE' Fixed buffer overflow bug.
-- (Current WORKDIR version is 2) --
-- (Current PROJLEV version is 2 in level DEV) --
[Joe G.]
3) Added: compiler-native project support for Visual SlickEdit
project files (*.VPJ) and workspace files (*.VPW).
[John B., Harry N.]
5.52a/beta 19-Dec-00 (Win32 TLIB 1.109q & 16-bit WinTLIB 1.105w)
1) Fixed: a stray "debug print" Message Box that was accidentally left
in the the Win32 GUI version of TLIB:
"dbg: key=myfile.ext was in already in list at lpos=nn" or
"dbg: key=myfile.ext was not already in list; adding..."
2) Fixed: a subtle bug which could cause TLIB for Windows to
temporarily "forget" which files were recorded in a tracking file.
This could result in duplicate tracking file entries, and a warning
message from TLIB:
Warning: duplicate tracking file entry for myfile.ext in tlibwork.trk
Another manifestation of this bug was that the "EBF" search
mode option might find one or more extra "out of date" files
which actually were not out of date.
The problem occurred when TREEDIRS Y and FNAMECASE A were both
configured, and when source files which resided in the same
subdirectory were specified with different directory name "case"
(upper-case, lower-case, or mixed-case). If this resulted in
a tracking file with adjacent source file records for source
files residing in the same subdirectory, but with differing
subdirectory name case, then the problem could occur.
A workaround was to configure "FNAMECASE U" or "FNAMECASE L"
(forcing all file and directory names to all-upper or all-lower
case).
3) Added: support for EOF-tolerant text files.
EOF-tolerant text format is just like regular "FILETYPE TEXT"
except that it treats "EOF characters" (Ctrl-Zs) as regular text,
rather than as end-of-file indicators.
To use this new format instead of the regular (Ctrl-Z-sensitive)
TEXT format, configure:
FILETYPE EOFTOL (or just "FILETYPE E")
Or you can configure:
EOFTOLER Y ("EOFtoler" is short for "EOF-tolerant")
FILETYPE AUTO (or just "FILETYPE A") and
...which has the advantage of also automatically using BINARY
format when creating TLIB libraries for most non-text files.
By default, FILETYPE AUTO will choose between FILETYPE TEXT,
FILETYPE BINARY, and FILETYPE RUNLEN. But if you prefer for
your text files to be stored in the new EOF-Tolerant format
instead of the old "TEXT" (Ctrl-Z as End-File) format, then you
may add the new "EOFTOLER Y" configuration parameter.
IMPORTANT NOTE: The format of a TLIB library file is PERMANENTLY
determined when you store the FIRST version of your source file.
So the FILETYPE setting has no effect except when you first create
your TLIB libraries.
WARNING: "FILETYPE E" libraries, if they contain ctrl-Z characters,
may NOT be readable by some third-party vendor tools, such as
Opus Make.
[John L.]
4) Added: support for CRC-checked, run-length-compressed binary files.
Run-length-compression greatly improves TLIB's performance, both
speed and library file size, when storing some kinds of binary
files, especially "sparse" database files.
This format also adds a CRC check-word, stored with each version
of the source file, and verified during extracts.
To use this new format, configure:
FILETYPE RUNLEN (or just "FILETYPE R")
Or, better yet, configure:
FILETYPE AUTO (or just "FILETYPE A")
...which has the advantage of only using the run-length-compressed
format when your initial source file is discovered to be both
non-ASCII and run-length-compressible. TLIB analyzes the first
version of your source file, to pick the format. If it is a binary
file, and if run-length-compression can shrink the file size, then
TLIB will automatically create a run-length-compressed library.
By default, when creating a new library, if FILETYPE AUTO is
configured and the file is found to be binary (non-text), then TLIB
will choose RUNLEN format instead of plain BINARY format if the file
is even slightly compressible. If you wish to change that rule,
you can configure the new THRESHOLD parameter:
THRESHOLD 1 (default: use RUNLEN if file is at all compressible)
THRESHOLD nn (use RUNLEN if file is at least nn% compressible)
THRESHOLD 100 (never use RUNLEN format, use uncompressed BINARY)
THRESHOLD 0 (always use RUNLEN, even if it makes files bigger)
IMPORTANT NOTE: The format of a TLIB library file is PERMANENTLY
determined when you store the FIRST version of your source file.
So the FILETYPE setting has no effect except when you first create
your TLIB libraries.
Note that run-length-compressed is a binary storage format, so the
TLIB features which only work with text files, such as keywords and
revision history logging, are unavailable for files stored using
FILETYPE RUNLEN, just as they are unavailable for FILETYPE BINARY.
IMPORTANT NOTE: Run-length-compression requires TLIB to create a
temporary file to briefly store the compressed version of your source
file, during Updates and Extracts. TLIB looks for a TMP or TEMP
environment variable to specify the location in which temporary files
should be created; if neither is found, TLIB uses the current
directory, or (rarely) the root of the C: drive.
Note: Although run-length-compression does not usually reduce file
size as much as more sophisticated compression techniques, it has
a very important property, which is essential for use with delta-
based storage systems like TLIB. That property is that run-length-
compression preserves "locality of differences." In other words,
if two uncompressed files contain only minor, localized differences,
then the compressed versions will, likewise, contain only minor,
localized differences. Thus TLIB's delta-based storage is still able
to efficiently store just the changes from one version to the next.
[Nick R.]
5) Fixed: the Visual Compare ("Delta") feature in the 32-bit GUI
version of TLIB was not "showing" whitespace changes in the default
"Terminal" font. Now it does.
[John L.]
6) Fixed: Unfortunately, under the DOS/Windows family of operating
systems, it is not possible to have a "current directory" (folder)
without a drive letter. GUI versions of TLIB depends upon being
able to set the operating system's "current directory" to the
"Current Dir" that you specify on the main TLIB screen. Thus,
you should not set your Current Dir to a UNC network path, of
the form \\servername\volume\folder\
Earlier versions of TLIB for Windows were not checking for
this problem. They permitted selecting such a directory as the
Current Dir, and they didn't warn the user that it wouldn't
work right. This has been corrected.
[John L.]
7) Fixed?? The Win32 GUI version of TLIB's Visual Compare (Delta)
could start up with empty screen panels, instead of showing the
side-by-side differences. If you closed the compare windown
and tried again, it would work correctly on the second try.
This behavior was rare and very hard to reproduce. But we think
that we might have fixed it.
Please tell us if you encounter this malfunction (or any other!)
with TLIB for Windows version 1.109q or later.
[John L.]
8) Fixed: A bug which caused the "Edit TLIB.CFG" menu choice in GUI
versions of TLIB to do nothing the first time it was tried, if no
other TLIB operation had been done yet. (It always worked the
second time.)
5.51i 21-Nov-00 (Win32 TLIB 1.109p & 16-bit WinTLIB 1.105v)
1) Fixed: positioning of the EBF checkbox in GUI versions of TLIB (which
we broke in TLIB 5.51h). The problem occurred when the button bar
was enabled or disabled in the Configuration Options window; the
workaround was to exit and restart TLIB for Windows after changing
the button bar option. [Chris E.]
2) Improved: in compiler-native project mode, we now automatically
refresh/update the list of displayed files when you check or un-check
the EBF checkbox (so that you don't need to press F5 to refresh).
3) Fixed: you can now "extract contents of snapshot file" without
having to first select a source file in the main file list.
4) Improved: added and improved some "help-bar" messages. (Those
are the explanatory messages that display at the bottom of the
main TLIB for Windows window when you move your mouse over
buttons and other controls.) [Mary D.]
5) Improved: some subtle usability issues with Extract, Snapshot, and
Migrate commands in TLIB for Windows. [Mary D. and others]
6) Fixed: a bug in the handling of file lists and snapshots containing
file names or subdirectory names with blanks in them. [Mary D.]
7) Improved: TLIB for Windows now displays an informative note after
creating a snapshot.
8) Fixed: In Win32 versions of TLIB (both GUI and command-line),
mixed-case and lower-case Environment variable names (which are
possible with recent versions of Windows) were not being found
when referenced with the %EnvName% syntax in a TLIB configuration
file. This has now been fixed: TLIB's environment variable lookup
is now case-insensitive.
Another manifestation of this problem was that TLIB would ignore
the TLIBCFG environment variable, if it was not specified as all
upper-case.
The workaround was to always use upper-case when specifying
environment variables.
Note: if you have defined a Windows environment variable as
lower-case or mixed-case, then to change it to upper-case you
must first delete it (by defining it to nothing). Then you can
redefine it. E.g.,
set tlibcfg=
set TLIBCFG=!c:\mydir\special.cfg
Just doing the second "set" command won't change it to upper-case.
[Elspeth J., Frode N.]
9) Improved: Error message popped-up in GUI versions of TLIB when it
can't write a source file to update keyword and/or revision history
information, due to a file access error such as "sharing violation."
5.51h 27-Oct-00 (Win32 TLIB 1.109n & 16-bit WinTLIB 1.105u)
1) Improved: The operation of the "Add" button in TLIB for Windows,
for adding file names to the list of viewed source files.
In 16-bit versions of TLIB for Windows, and in earlier 32-bit
versions, you can have the same source file name listed two
or more times, by clicking the "Add" button to add file names
to the list.
The 32-bit TLIB for Windows version 1.109m adds logic to eliminate
the duplicate names.
2) Added: Compiler-native project file support for Microsoft
Developer Studio 5.0 and 6.0 "Workspace Files" (*.WSP), which
are basically just groupings of Microsoft Developer Studio
Projects (*.DSP).
3) Added: a little utility called JourJoin.exe (or JJoin32.exe,
for the Win-32 version). Unpack it from JOURJOIN.ZIP.
JourJoin adjusts the format of a TLIB journal file, to make it
easier to import into some database systems, for making custom
reports and that sort of thing. JourJoin combines the comment
lines in the TLIB Journal File, appending the additional comment
lines to the comment field in the main record for U (Update)
and N (New library) commands.
Run JourJoin.exe (or JJoin32.exe) with no parameters for help.
JOURJOIN.ZIP is now included with TLIB Combo Edition, but it is
also available on our Web site, for download by customers who
own earlier versions of TLIB Version Control.
[Joe G.]
4) Fixed: TLIB's handling of "file list" files with MacIntosh-style
(carriage-return-only) line endings.
[Frank B.]
5) Fixed: When reading Microsoft Developer Studio Project Files (*.DSP)
in compiler-native project mode, TLIB can display a suggestion:
Note: For better performance, in Developer Studio select
Tools -> Options -> Build -> Export makefile when saving project file
This suggestion is correct advice only if "scan source for
includes" is checked in the Open Project File ("...") dialogue.
However, TLIB was displaying the suggestion even if "scan source
for includes" was not checked.
6) Enabled: the EBF checkbox in compiler-native project mode.
This is the box you can check to make TLIB display only out-of-date
source files. In previous versions of TLIB, it was visible only
in file-oriented mode. There really was no good reason for hiding
it in compiler-native project mode, so we've unhidden it.
7) Added: compiler-native project mode support for Borland C++
Builder project file (*.BPR).
8) Changed: the TLIB Windows Help to not stay "on top" all the time.
[Stewart K.]
9) Changed: the real-mode DOS version of TLIB, tlibdos.exe, to work
on 8088-based HP 200LX palmtops.
[Chris L.]
5.51g 27-Aug-00
1) Improved: TLIB's logic for deducing source file names from library
file names. Now, if you configure LIBEXE ??????$ and LOKEXT ??????^
then TLIB can correctly deduce all source file names that have
extensions of 5 characters or less, except those with "_" in the
extension, without use of the EXTENSION configuration parameter.
Note: TLIB does not support source file names with blanks in the
extension. Also, a file name with an extension that is 8 characters
or more in length will be handled by TLIB as if the "." was part of
the base file name and there is no extension. Please let us know
if you need better support for such files.
2) Improved: Configuration Wizard, enabling it to configure TLIB
using the new LIBEXT ??????$ feature (above), and also to configure
needed quote marks around the PATH parameter when there might be
blanks in the work directory path, and also to correct and improve
some of the prose.
This is version 1.4 of the Configuration Wizard, TLIBCWIZ.EXE.
5.51f 26-Jul-00
1) Fixed: a bug that could cause this error.
ERR: snbld() buffer overflow
[Joev D.]
5.51e 2-Mar-00
1) Fixed: When a compiler project file was in a network directory
containing spaces, TLIB wouldn't open the compiler-native project
file. The error message displayed was:
ERROR: Could not read compiler-native project file {filename}
[Bryan S.]
5.51d 11-Jan-00
1) Added: solution for a Y2K interaction problem with Opus Make.
Opus Make has the capability of reading TLIB library files and
checking the date/time-stamps of particular versions. However,
it was interpreting embedded dates with a "00" year as 1900
instead of 2000.
So, we changed TLIB to store its file dates in dd-mmm-yyyy format
in TLIB libraries when the year is 2000 or later.
To avoid overflowing keyword string variables, the %d and %f
keywords still store the year as two digits, by default. However,
starting with TLIB 5.51d, you can force TLIB to store the year
as four digits for years 2000 or later, by specifying a sufficiently
large "field width." For the %d keyword, you must specify a field
width of 11 or greater to make TLIB store the year with 4 digits
(since "dd-mmm-yyyy" is 11 characters long). For the %f keyword,
you must specify a field width of 20 or greater to make TLIB
store the year with 4 digits (since "dd-mmm-yyyy,hh:mm:ss" is
20 characters long). For example:
Assume that TLIB is configured for:
keyflag 3,"-=>keyflag<=--"
Consider a source file with a date of January 1, 2000, and a TLIB
version number of 22, and this embedded keyword:
/*-=>keyflag<=-- "version %v, date %d, long date %11d" */
char verdate[] = "";
Then after TLIB expands the keywords, it will look like this:
/*-=>keyflag<=-- "version %v, date %d, long date %11d" */
char verdate[] = "version 22, date 01-Jan-00, long date 01-Jan-2000";
[Aleksandar S.]
5.51c 8-Dec-99 (Win32 TLIB 1.109k)
1) Fixed: a bug which caused TLIB to always convert the WORKDIR to
upper-case, regardless of the FNAMECASE configuration parameter.
This caused a problem for a customer who was using a case-sensitive
network file system under NT. The problem was that (because of
the MAKEDIRS parameter) TLIB created the work directory with an
all upper-case directory name.
[Gary S.]
2) Fixed: a bug which caused the 32-bit visual compare to occasionally
show lines missing the final character. The cause was a bug in
CMPR32D.DLL's tab/blank-conversions when "ENTABU Y" was configured.
The fix is in CMPR32D.DLL version 5.51.2.0.
3) Improved: a couple of error and warning messages.
4) Added: support for the SUPPRESS 16 configuration parameter, to
suppress display of the warning message, "TREEDIRS_N configured
but xxx isn't in workdir... the entry for xxx in tlibwork.trk
will be misleading." This was needed for a particular customer
with an unusual development environment in which source files were
"staged" from the work directory to another location before being
stored in TLIB.
[Mark M.]
5) Fixed: a subtle bug with the use of the CP command in command-line
versions of TLIB to override the TLIB library file, when "FIND1FILE Y"
was configured. If the forced TLIB library file's extension was not
consistent with the configured LIBEXT parameter, then TLIB would not
process the file.
5.51b 23-Aug-99
1) Fixed: a bug in the parsing of TLIB.CFG.
TLIB was mishandling an if{wildcards}/endif block nested within an
iff{expression}/endif or iff{expression}/else/endif block. The
symptom was an error message on the outer "endif".
[Leslie S.]
5.51a 11-Aug-99 (Win32 TLIB 1.109j)
1) Improved: the error diagnostic message when the GUI Win32 version of
TLIB failed due to out-of-date versions of Microsoft DLLs or OCXs
being installed in the Windows system directories. The symptom
was error number 50003, "unexpected error." The new, improved
error message now recommends running NETSETUP.EXE to solve the
problem.
Since TLIB's NETSETUP install program installs up-to-date versions
of the needed Microsoft DLLs and OCXs, this problem usually only
occurs when an attempt is made to run WTLIB32.EXE without first
running TLIB's SETUP.EXE or NETSETUP.EXE, or else when another
program has been installed with defective installation procedure
that fails to preserve already-existing newer versions of Microsoft
DLLs or OCXs.
[Jeff Y., Tuyen N.]
2) Added: support for configuring FILETYPE AUTOMATIC (or FILETYPE AUTO,
or just FILETYPE A).
When FILETYPE AUTO is configured, and you store the first version
of a source file using the N (New Library) command, or using U
(Update) when UPDATENEW Y is configured, TLIB will examine the
file to determine whether or not it is a plain ASCII text file.
If so, then FILETYPE AUTO is equivalent to FILETYPE TEXT. If not,
then FILETYPE AUTO is equivalent to FILETYPE BINARY.
This determination is quite reliable. However, if you are storing
an unusual binary file type under TLIB which contains mostly ASCII
text, or a special text file for which you do not want TLIB to
adjust your end-of-line delimiters (CR vs. LF vs. CR+LF), then
you should configure FILETYPE BINARY for that file. For example,
if you had .DBF database files containing only text fields, you
could configure:
IF *.DBF
FILETYPE BINARY
ENDIF
FILETYPE AUTO is now the default.
[Roger C.]
3) Changed: the "FILETYPE" question in the TLIB Configuration Wizard,
to use the new FILETYPE AUTO setting instead of FILETYPE TEXT.
4) Added: a beta-test TLIB Add-In module for MS Visual Basic 6.0,
called TLIBVB6.EXE.
5) Released: the 32-bit versions of TLIB (command-line and GUI).
5.50z.3 3-Aug-99
1) Fixed: Another problem with looking up Novell NetWare user IDs in
the beta Win32 GUI version of TLIB. Symptom was a Stack Fault error
if "ID *NOVELL*" was configured.
[Tuyen N.]
2) Fixed: TLIB was truncating journal file entries to 255 characters.
With long file names, it was possible to exceed this limit. TLIB now
permits journal lines longer than 255 characters in versions of TLIB
that support long file names. We allow up to 349 characters in 16-bit
protected-mode versions (TLIBX, TLIB2 and TLIBDLL.DLL), and up to 1023
characters in 32-bit versions (TLIB32C and TLIB32D.DLL). [David A.]
5.50z.2 27-Jul-99
1) Fixed: The beta Win32 versions of TLIB 5.50z were failing to load
with a "File not found" error if you did not have Novell Netware.
(The problems was that we had accidentally built them in such a way
that they were "implicitly linked" to the Novell DLLs.)
By the way, Matt Pietrek's wonderful little 9216-byte DEPENDS.EXE
utility is indispensable for diagnosing this kind of problem.
Just type "depends /p {exe_or_dll_name}" and it will display a
full list of the implicitly linked DLLs upon which {exe_or_dll_name}
depends, where they were found on your system, and which ones were
NOT found. Get it at http://www.microsoft.com/MSJ/code/depends.htm
[Peng L. and Eddy V.]
5.50z 24-Jul-99
1) Fixed: a bug which caused directory names to be converted to all
upper-case under some circumstances, even when "FNAMECASE AUTO"
was configured and the file system supported mixed-case file
names.
2) Added: support for quoted paths and file names in some configuration
parameters. In particular, the PATH parameter now permits a quoted
path containing blanks, in versions of TLIB which support long file
names. You may use either apostrophes (') or double-quote marks (")
to quote paths or file names which may contain blanks.
Note that the "PATH" keyword cannot be quoted, just the text to
the right of it. Also, note that environment variable and pseudo-
environment variable references are still expanded, even when
quoted.
For example, if %wdir% is the name of your work directory, with a
slash at the end, but the work directory name might contain blanks,
then you can configure:
PATH 'z:\libs\%wdir%*\'
[Paul M.]
3) Added: support Novell Login Name lookup in 32-bit versions of TLIB.
You can now configure "ID *NOVELL*" to make TLIB use your Novell
Login ID for the TLIB user ID. (This feature is lightly tested;
please tell us if it does not work with your combination of server
and Win-9x or Win-NT client software.)
5.50y 22-Jun-99 (TLIB for Windows 1.105s & Beta Win32 TLIB 1.109h)
1) Fixed: a bug which could cause the following error:
ERROR: DO_CMPR_P(1,...,'SMOOTH NOTEXT INMEM') = 1
when you click the Delta button on the "Enter Comment" screen.
The problem was caused by a bug in CMPR32D.DLL that was triggered
when "ENTABU Y" is configured.
The previous version of CMPR32D.DLL showed as "<no version>" on
the TLIB for Windows "About" screen. The fixed version shows
version number 5.51.0.1.
2) Added: native project file support for MultiEdit for Windows .PRJ
files. (Note: this is the same file extension used by Symantec
Visual Cafe for its project files, but TLIB can tell the difference
and handle them both.)
5.50x 11-Jun-99
1) Fixed: a bug which caused "tracking cache failure" warnings in
the beta Win32 versions of TLIB. The error was innocuous, but
annoying.
This bug only affected Win32 versions of TLIB. It was most likely to
be seen in the Win32 GUI version, but you could also make it happen
in the Win32 console-mode version, by removing a source file from a
named project level and then adding it back, all on one command line,
like this:
tlib32c adn myfile.c an myfile.c
[Craig M.]
2) Fixed: a bug with extracting 0-length files; the previous, non-zero-length
version would be extracted, instead of the correct (0-length) version.
[Mike K.]
3) Fixed: a bug in the long file name support in TLIBX.EXE and the 16-bit
TLIB for Windows, which caused "Warning: couldn't reopen myfile.exten
to adjust its date/time" or similar. This bug did not affect 32-bit
versions of TLIB.
[Tom W.]
4) Improved: NETSETUP.EXE (which also serves as part II of the SETUP
program) to not install shortcuts/icons for missing components. This
is primarily so that TLIB administrators can install TLIB to a network
directory and then prune out unneeded components (such as uninteresting
documentation files), so that users who set up TLIB on their systems
with NETSETUP will not have a lot of useless extra shortcuts installed.
[Urs W.]
5) Improved: some error and warning messages.
5.50w 25-Feb-99 (TLIB for Windows 1.105r & Beta Win32 TLIB 1.109g)
1) Fixed: problems with handling long filenames with blanks in them.
[everyone and his brother]
5.50v 17-Feb-99 (TLIB for Windows 1.105q & Beta Win32 TLIB 1.109f)
1) Added: support for the new REFNEWLN configuration parameter, which
can be used to control the end-of-line delimiters used when writing
"reference copies" of source files. (Reference copies are created by
TLIB in a project level reference directory when the "r=Y" option is
configured for a LEVEL.) These four settings are possible:
REFNEWLN
REFNEWLN CRLF
REFNEWLN CR
REFNEWLN LF
The first setting (i.e., "REFNEWLN" with nothing following it) is the
default. It means that the REFNEWLN setting is the same as the NEWLINE
setting (which defaults to CRLF).
If you configure "REFNEWLN CRLF" then reference copies of source files
will always have carriage-return+linefeed end-of-line delimiters. If
you configure "REFNEWLN CR" then reference copies of source files will
have only carriage-returns as end-of-line delimiters; this is mostly
used for Apple Macintosh text files. If you configure "REFNEWLN LF"
then reference copies of source files will have only linefeed ("newline")
characters as end-of-line delimiters; this is mostly used for Unix text
files.
See also: NEWLINE.
[Paul V.]
2) Fixed: a bug in the beta 32-bit versions of TLIB, which occurred when
updating (checking-in) source files of more than 32,767 lines. There
was an error in the stored delta format which caused it to be readable
only with 32-bit versions of TLIB. The 16-bit versions would display
"ERROR: bad .C command" when trying to process the library file.
[Paul V.]
3) Fixed: support for colorized error/warning/note messages in TLIB32C.EXE,
the beta Win32 console mode version of TLIB.
[Joev D.]
4) Added: an error message that is displayed when the Migrate command
creates a MIGRATE2.BAT file with lines that are too long to run.
[Craig M.]
5) Fixed: a bug which prevented the user from entering his TLIB serial
number if TLIB for Windows was started the first time via the
"TLIB Visual Compare" shortcut.
[Tuomas S.]
6) Changed: the way that we distribute the conversion utilities (the
tools for automating conversion from other version control systems
to TLIB, and also for reformatting/rebuilding TLIB libraries).
We now double-compress them, using TLIB and PKZIP, into one very
compact archive, CONVERT.ZIP. This saves several hundred KB of
space on the distribution diskettes, but it also means that before
you can use any of the conversion utilities you must first unpack
them. See CONVERT.TXT for details.
7) Added: a SourceSafe-to-TLIB conversion utility for customers who are
switching from Microsoft or OneTree/Icarus SourceSafe to TLIB.
8) Improved: several of the other conversion utilities, especially the
PVCS-to-TLIB converter. We now have tools to automate conversion
from: PVCS, SourceSafe, RCS (both MKS and GNU/Unix variants),
MS Delta, and Sourcer's Apprentice.
5.50u 28-Jan-99 (TLIB for Windows is unchanged)
1) Fixed: a bug which caused various errors (mostly GPFs) when using TLIB
comment files of more than 245 characters in length. The problem was
only observed in 32-bit TLIBs, but it could have also affected other
versions.
[Paul V.]
5.50t 19-Jan-99 (TLIB for Windows 1.105p & Beta Win32 TLIB 1.109e)
1) Fixed: a bug which caused spurious automatic branching under some
circumstances when using named project levels. The bug caused "c=N"
fields to be stored in the project level tracking file, and when a
subsequent Update command was done on those files, TLIB would try to
create a new branch, even though there was no need to do so. (The
workaround was to use the "S" suffix in command line TLIB, or the
"S - Specify version" checkbox in GUI TLIB, to override TLIB's choice
of version numbers.)
[Bill M. and Jeff Y.]
2) Added: an informative message telling when the "b=1" option on the LEVEL
configuration parameter is the cause for a new branch (i.e., a ".1"
version) being created.
3) Improved: TLIBCOMP, the Win95/98/NT command-line visual compare tool.
It will now preferentially run the Win32 version of TLIB to do the
compare, if WTLIB32.EXE is found. (Otherwise, it'll revert to using
the 16-bit version, WTLIB16.EXE.)
4) Changed: where WinTLIB (both 16-bit and 32-bit) looks for (or creates)
the TLIB.INI "preferences" file in the absence of a TLIBINI environment
variable.
Prior to this version, if you didn't set TLIBINI, then the TLIB.INI
file would reside in the TLIB installation directory. That caused
problems when two or more users of TLIB ran a multi-user TLIB from
a network installation directory.
So we've changed the default TLIB.INI location to be the root of
the C: drive, to ensure that each TLIB user has his own TLIB.INI file.
In other words, the default behavior is now as if you set the TLIBINI
environment variable like this:
set TLIBINI=C:\
To ease the transition, if there is no TLIBINI environment variable
and this version finds a TLIB.INI file in the installation directory
but not in the root of the C: drive, then the old TLIB.INI will be
copied from the installation directory into the root of the C: drive.
5) Fixed: the DDE API in WTLIB32.EXE (the beta Win32 version of WinTLIB).
Both DDE and Windows-Messaging APIs now work.
6) Updated: the DDE and Windows-Messaging API sample/test applications,
ADVDDE32.* and APIWMS*.*, respectively, and for use with WTLIB32.EXE
(the Win32 GUI TLIB). APIWMSG now works with either WTLIB32.EXE or
WTLIB16.EXE, for exercising the Windows-Messaging API. To exercise the
DDE API, use ADVDDE32 with WTLIB32.EXE or use ADVDDE with WTLIB16.EXE.
See ADVDDE32.* and APIWM*.* in the \TLIB\API\ subdirectory.
7) Updated: the TLIB Add-Ins for Microsoft Visual Basic 5.0 and Visual
Developer Studio 5.0 (VC++, VJ++, etc.). They now use WTLIB32.EXE
instead of WTLIB16.EXE to implement the version control functionality.
Also, TLIBVS97.INI is now obsolete; the current TLIB Add-In for
MS Visual Developer Studio 5.0 uses TLIB.INI, instead.
8) Improved: the command-line versions of TLIB so that they now check
the TLIB.INI file for a user ID override. If you choose "always"
override in the WinTLIB "Change User ID" dialog (Under the File
menu), then command-line versions of TLIB will also use that user
ID. Previously, only the GUI versions of TLIB read TLIB.INI.
(Exception: disabling the CW command by removing it from the
configured the COMMANDS parameter also disables user ID overrides
via TLIB.INI, in both command-line and GUI versions of TLIB.)
This change ensures that the GUI and command-line versions of TLIB
are consistent in what they determine to be current TLIB user ID.
This also makes the GUI TLIB's "change User ID" dialog a very
convenient way to set the user ID for all versions of TLIB.
Also, the way that the user ID override works was subtly changed
even in the GUI versions of TLIB, so that you can reference and
test the user ID as %tlibcfg:id% in your TLIB.CFG file.
9) Converted: the TLIB Add-Ins for Microsoft Visual Basic 5.0 and
for Microsoft Developer Studio 5.0 (VC++, VJ++, etc.) to use the
beta 32-bit WinTLIB (WTLIB32.EXE) instead of the 16-bit WinTLIB
(WTLIB16.EXE).
The two Add-In modules are TLIBVS97.DLL and TLIBVB5.EXE, respectively.
10) Redesigned: the install programs, SETUP and NETSETUP. SETUP now
just copies files into the TLIB installation directory, and then
invokes NETSETUP to create shortcuts/icons, update system files,
etc.. However, you can also use NETSETUP by itself to install
TLIB on another workstation, or under another operating system on
the same workstation, etc., without having to do a full re-install.
Also, under 95/98 and NT, NETSETUP now groups documentation shortcuts
into a sub-folder. Also, SETUP & NETSETUP now customarily install
both 16-bit and 32-bit versions of TLIB.
11) Fixed: the message displayed when EBF (extract/browse-mode/freshen)
results in all files being excluded because none are out-of-date, and
named project levels are not in use. The message is now merely a
note, not an error.
12) Added: support for extracting multiple files to a temporary directory,
instead of just extracting a single temporary file.
In WinTLIB (both 16-bit and 32-bit GUI versions), use the "As Temporary
File(s)" checkbox on the Extract options screen. In command-line
versions of TLIB, use the "-t" and "-n" options, and with the -n option
specify a directory ending in a backslash rather than a filename.
For example:
tlib32c -t -nc:\tempdir\ e *.c
Be sure that you do not omit the trailing backslash.
[Joe G. and Gordan E.]
5.50s 17-Dec-98 (TLIB for Windows 1.105m) (Beta Win32 TLIB 1.109d)
1) Fixed: a bug in WinTLIB (both 16-bit and beta 32-bit versions) which
caused the first "Yes All" answer to a Yes/Yes-all/No question to act
as "Yes" instead of "Yes All".
2) Fixed: a bug in the beta Win32 GUI version of TLIB that prevented
cancelling a compare or extract under some circumstances.
[Al B.]
3) Added: compiler-native project support for Premia Codewright Editor
project files (*.PJT).
[Joe G.]
4) Added: "..." (browse to select version number) button to the Extract
options window. This improvement is in both the 16-bit and beta 32-bit
versions of WinTLIB.
5) Fixed: some display anomolies in the beta Win32 visual compare.
[Mark P., Al B., and others]
6) Added: support for copying to the clipboard from the Win32 visual
compare. The display speed is also a bit snappier.
7) Fixed: several incorrect menu shortcuts in WinTLIB (both 16-bit and
beta 32-bit versions).
04-Dec-98 (Beta Win32 TLIB 1.109c)
1) Fixed: a bug in the beta Win32 GUI TLIB v1.109b, which caused
double-clicking on a file to not display the version history unless
the file was in the work directory.
[Mark P.]
5.50r 27-Nov-98 (TLIB for Windows 1.105k)
1) Fixed: a bug that prevented the "EBF" ("show only out-of-date files")
checkbox from working unless you had configured TLIB to use named
project levels.
[Paul C.]
2) Added the "base" TLIB version number (e.g., "5.50r") to the WinTLIB
About/splash screen. Also, improved some error diagnostics.
3) Fixed: removing "ER" from the COMMANDS configuration parameter didn't
disable the ER (check-out/reserve) command.
[Urs W.]
4) Enhanced: Removing "ER" from the COMMANDS configuration parameter now
disables the "'R' - Reserve Lock [don't extract]" checkbox in WinTLIB.
[Urs W.]
5) Updated: the Blinker DOS Extender used by TLIBX.EXE is now at version
4.10. (This is probably of no consequence.)
**** Both command-line and GUI Win32 versions of TLIB are now in beta
test. The current Win32 TLIB is mostly just a 32-bit version of the
same old TLIB 5.50 that you are used to (though with longer file name
support under NT), but we have great plans for enhancements in TLIB 6.0.
If you own TLIB Combo Edition 5.04 or later, and if you can accept
gigantic (several megabyte) emailed file attachments, then you can be
a beta tester of the Win32 TLIBs. Email us at support@burtonsys.com.
5.50q 15-Oct-98 (TLIB for Windows 1.105j)
1) Fixed: a bug which showed up when using the 'I' (include subdirs)
option in combination with the 'L' or 'C' or 'O' search mode, when the
subdirectories went more than one deep, and when the current directory
was beneath the work directory. The bug resulted in incorrect
deduction of the source file path from the library or lock file path
(it appeared to 'move up' a level). Also, when the subdirectories went
more than one deep, and the current directory was the work directory,
but the wildcard spec had a partial path on it and the 'I' (Include
SubDirs) suffix was specified, the same thing happened.
[Dan F.]
2) Fixed: some problems in the WinTLIB GUI which occurred when the COMMANDS
configuration parameter was configured to disable some of TLIB's
commands.
[Tuyen N.]
3) Fixed: a bug in the WinTLIB GUI which could cause:
"ERROR: #423, extract/click, Property or control not found"
The problem occurred when an attempt is made to extract without selecting
any files but with 'S' ("specify version") checked and a version
specification entered.
4) Added: better diagnostic error messages when MAKEDIRS_M (or MAKEDIRS_Y)
is configured but TLIB cannot create a needed subdirectory.
[David A.]
5) Changed: WinTLIB to make the "Include SubDirs" checkbox "sticky" when
TREEDIRS_Y is configured.
[Dan F.]
5.50p 29-Sep-98 (TLIB for Windows 1.105i)
1) Added: support for three new keywords: %m, %i, and %b. These keywords
expand into three parts of the version number:
%m Major (trunk) version number
%i mInor version number (or 0)
%b Branch version specification (or 0)
[Joe G.]
2) Changed: TLIB for Windows to automatically un-check the other wild-card
search modes when a user checks "Owned" or "Checked Out", since that is
usually what you will want to do. You can still use the Owned or Checked
Out search mode in combination with one or more other search modes, but
you will have to first check Owned or Checked Out, and then check the
other mode(s).
[Andy G.]
3) Fixed: a bug in TLIB for Windows which could cause you to have to click
"Ignore All" twice instead of just once, to make it ignore all occurances
of an error or warning pop-up message.
4) Fixed: a bug in TLIB for Windows which could cause a sequence of errors
including the message, "dbg: 2nd tcl, tcmd='g2cfgfile', prev='g2workdir',
cfgfile=''", and then "Form already displayed can't show modally."
[Jeff Y.]
5) Added: support for an alternate method of Novell user ID lookup. You
may configure "ID *NOVELL2*" to use the alternative method. It should
produce the same result as the older "ID *NOVELL*" user ID lookup, but
we have reports of that method failing on some systems.
If you want to use your Novell login ID as your TLIB user ID, but the
configuring "ID *NOVELL*" produces incorrect or inconsistent results,
then try configuring "ID *NOVELL2*".
We would be interested in reports from users of circumstances under
which one of these methods works but the other does not.
[Tuyen N.]
6) Fixed: a bug which caused spurious error messages if a multi-line
configuration parameter (e.g., COMMANDS) was configured within an IFF/
ENDIF block.
[Tuyen N.]
7) Changed: WinTLIB to grey-out the button and menu item for changing
your user ID if the "CW" command is not configured in the COMMANDS
configuration parameter, and a few related changes. (This is for
installations in which it is necessary to prevent users from
impersonating one another.)
[Tuyen N.]
5.50m 17-Jul-98 (TLIB for Windows 1.105g)
1) Fixed: A bug which caused TLIB to display the error message:
ERROR: Illegal command: "ASFL" ("AFLS")
or similar.
In TLIB for Windows, this error occurred when using Add/Alt (Add/Alter
Project Level), and checking both the "S" and "F" options. In command
line versions of TLIB, the error occurred when using the AFS command.
Fixing this bug required changes to both the TLIB engine and the
Configuration Wizard, since the Configuration Wizard was generating a
COMMANDS configuration parameter in TLIB.CFG which lacked the needed AFS
command. Configuration Wizard version 1.3c now fixes this, but you'll
still need to change older TLIB.CFG files by adding "AFS/T," to the
list of enabled commands if you need to use the "F" and "S" options in
combination.
[Ed J.]
2) Fixed: a bug in WinTLIB, in the handling of the special "PROJLEV ="
configuration setting. Using this setting caused WinTLIB to default to
using the A search mode, which is inappropriate, since there is no
named project level when "PROJLEV =" is configured.
[Bill H.]
3) Fixed: a subtle problem in TLIB's handling of %!name% and %!!name%
references within IFF/ENDIF blocks. The following no longer results
in an error:
IFF 0
REM -- this should NOT cause an error
SET x=%!!never_defined%
ENDIF
However, you can still do tricky things like this:
SET xxx=endif
IFF 0
SAY Note: this should not display
%xxx%
SAY Note: this SHOULD display!
[Bill H.]
4) Improved: handling of an obscure error condition.
If the UD (discard changes) command thinks that your old source file has
been edited, it renames it to *.TM0 before extracting an unmodified copy,
and it displays a message telling you what has been done. This is
intended to prevent accidental loss of your work. If the .TM0 file
already exists, then TLIB renames your old source file to *.TM1, instead.
It can also try *.TM2 through *.TM9. But if all ten *.TM? files already
exist, then the rename attempt fails.
Starting with this version of TLIB, if all ten *.TM? files already
exist, then TLIB offers to delete the oldest of them, to permit the
rename to succeed.
[Craig M.]
5.50L 30-Jun-98 (TLIB for Windows 1.105f)
1) Improved: The Configuration Wizard, in how it configures the ID and
LOKEXT parameters for some networks. This is version 1.3b of the
Configuration Wizard.
[Gary S.]
2) Added: A "new user hint" about the use of the "Owned" wild-card search
mode.
[Gary S.]
3) Increased: the maximum length of the EXTENSION configuration parameter,
from 500 characters to 750 characters.
You must use "continuation" lines to configure a long EXTENSION list.
A continuation line is indicated by ending the preceeding (incomplete)
line with a backslash character (\). By using continuation lines, you
can now configure a list of source file extensions that is up to 750
characters long.
Note #1: each line must still be less than 254 characters in length.
Note #2: you still must ensure that each source file extension maps
to a unique library file extension.
These three examples are equivalent:
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico,doc,txt,frx
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico,\
doc,txt,frx
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico\
,doc,txt,frx
[Cal V.]
5.50k 11-Jun-98 (TLIB for Windows 1.105e)
1) Fixed: in TLIB for Windows, the default snapshot name sometimes
had an incorrect file extension when using compiler-native project
mode and taking a snapshot.
2) Fixed: in compiler-native project mode for Visual Basic (.VBP project
files), .CTL/.CTX files were not being listed.
[Thomas D. and Mike H.]
3) Improved: message text in a few places, for clarity.
5.50j 11-May-98
1) Fixed: a bug which could cause TLIB's wild-card specs to sometimes
find files that they didn't really match. For example, if there
existed a TLIB library file called INDEX.H$ML, corresponding to a
source file called INDEX.HTML, then it would be found by a wild-card
spec of "I*.HTM". The problem was due to the Win-95 and NT short
file names, which causes INDEX.HTML to also have the name INDEX~1.HTM
or similar.
The same thing could be seen with the DIR command, at a MS-DOS box
command prompt: "dir *.htm" would find INDEX.HTML.
At the same time, we fixed a closely-related bug in TLIB's support
for multiple and embedded asterisks in wild-card specs under
operating systems (such as DOS) which do not handle them properly.
E.g., "ABC*DEF.C" should match only files that end in DEF.C. This
was working in TLIB 5.02, but broken in TLIB 5.03; now it works again.
[Blair W.]
5.50i 1-May-98
1) Fixed: a bug in the compiler-native project support for MS VC++ / Developer
Studio compiler-native project file support (*.DSP), which could cause
TLIB to find a garbled directory name for one or more files.
2) The Win32 console mode version of TLIB is now in beta test. Let us know
if you'd like to be a beta-tester.
5.50h.1 13-Apr-98
1) Fixed: an apparent wildcard-expansion logic error in the Win95 Long
Filename support. We never saw a symptom for this one. Only TLIBX.EXE
and TLIBDLL.DLL were affected, the other TLIB executables are still
at version 5.50h.
5.50h 25-Mar-98 (TLIB for Windows 1.105d)
1) Fixed: a bug which could cause TLIB for Windows to fail with an
"Out of Stack Space" error while listing versions. (Only WTLIB16.EXE
was affected by this fix.)
[John D.]
5.50h 20-Mar-98
1) Added: support for continuation lines for the EXTENSION configuration
parameter. As with the COMMANDS parameter, a continuation line is
indicated by ending the preceeding (incomplete) line with a backslash
character (\). By using continuation lines, you can now configure a
list of source file extensions that is up to 500 characters long.
Note #1: each line must still be less than 254 characters in length.
Note #2: you still must ensure that each source file extension maps
to a unique library file extension.
These three examples are equivalent:
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico,doc,txt,frx
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico,\
doc,txt,frx
extension c,h,asm,bat,pas,,cmd,me,__m,__l,frm,bas,ico\
,doc,txt,frx
[James H. (and several others)]
2) Fixed: several bugs in the TLIB Add-In for Visual Basic 5.0, mostly
related to the use of project groups.
IMPORTANT NOTE: To install the fixed Add-In module requires several
manual steps, to ensure that the Win-95 or NT registry is correctly
updated:
[If this is the first time you've installed the VB 5.0 Add-In, then
skip steps a-c.]
a) Manually delete the old TLIBVB5.EXE from the TLIB installation
directory (possibly C:\TLIB\).
b) Start VB 5.0. When it starts, it will complain that:
'TLIB Version Control for Visual Basic 5.0' could not be loaded.
Remove it from the list of available Add-Ins?
Click "Yes".
c) Shut down VB 5.0.
d) Copy the new TLIBVB5.EXE into the TLIB installation directory.
e) Run the new TLIBVB5.EXE (from the TLIB installation directory),
as if it were a stand-alone program. You might see the message:
"TLIB add-in installed..."
Click OK.
Note that no message will appear if TLIB/VB was already listed
in the 'vbaddin.ini' file.
f) Start VB 5.0 again.
g) Click Add-Ins. Click Add-In Manager. Click on "TLIB Version
Control for Visual Basic 5.0", to make the check mark appear.
Click OK. You should see the TLIB/VB progress window appear and
begin to check your project. (If you do not have locking enabled,
this will happen so fast you will only briefly see this window.)
TLIB for VB 5.0 is installed!
TLIB/VB will automatically start whenever you run VB as long as
it is enabled (checked) in the add-ins menu.
[Tom M.]
5.50g 28-Jan-98 (TLIB for Windows 1.105c)
1) Fixed: a misleading message.
2) Fixed: a bug which caused a bogus Warning message.
The problem occurred when extracting a source file that had no
extension (e.g., "makefile") using the "L" (libraries) or "C" (checked-
out and locked) or "O" (owned) wild-card search mode.
The problem was due to inconsistent handling of the optional trailing
"." in the file name; additionally, the message showed an extra
backslash in the path, to further confuse you. The bogus warning
looked something like this:
Warning: TREEDIRS N configured but makefile. isn't in workdir,
and C:\MYWORK\\makefile also exists; the entry for makefile in
C:\MYWORK\TLIBWORK.TRK will be misleading.
This problem has been corrected.
[Kevin H.]
3) Added: In WinTLIB, the ability to suppress multiple pop-ups of "Note:"
and "Warning:" and "ERROR:" messages which were generated via the "say"
configuration parameter.
You can make TLIB display a message when it reads its configuration
file by adding a "say" (or "warn") statement to the configuration file.
In command-line versions of TLIB, the message will be displayed on the
console. In TLIB for Windows, the message will be written to the "view
status log" (which you can examine via the "View Log" button or "Run
Manual Command"), just like one of TLIB's own messages.
If the message begins with "Note: " or "Warning: " or "ERROR: " then
it will also be popped-up in a message box, just like one of TLIB's
built-in warning messages. However, since TLIB for Windows rereads
the TLIB configuration files under various conditions (e.g., whenever
you set the current directory), the message box may pop up repeatedly.
This would not have been much of a problem, except that, prior to this
version of TLIB, the "Ignore For all commands" button would not suppress
repetitions of popped-up user-configured messages.
This has been changed. You can now click "Ignore For all commands" to
prevent a user-configured message from being popped-up again, just as
you can for TLIB's built-in warning messages. (Note, however, that the
message will still be recorded in the "view status log.")
There is one minor unavoidable difference between how this feature is
implemented for TLIB's built-in messages, and how it is implemented for
user-configured messages that are displayed via the "say" or "warn"
configuration parameter. With TLIB's built-in messages, if the message
is "parameterized," that is, if it contains a file name or similar
"parameter," and the file name changes from one instance of the message
to another, that difference is considered to be insignificant, and the
second pop-up of the message will still be suppressed. However, this
can't be done for user-configured messages.
[Urs W.]
5.50f 12-Jan-98 (TLIB for Windows 1.105b)
1) Fixed: a bug which caused a bogus error message when a file was checked
out for modification at two project levels (either to you and to another
person, or both to you) with LOCKING B configured, and you did an Update
to check in the file. This problem was present at least as far back as
version 5.02d.
[Joe K.]
2) Improved: the TLIB Configuration Wizard user interface in several
details, and fixed a bug that could cause an "Illegal function call"
error if you added a blank wild-card spec to the list of tracked files
on question 9. The configuration wizard is now version 1.2b.
[Keith R.]
3) Fixed: a minor bug in TLIB for Windows which caused it to upper-case
manually-entered commands ("Run Manual Command").
4) Added: a menu command in TLIB for Windows (under the Help menu) to
Display your TLIB serial number(s).
The following command can be used to do the same thing with command-line
versions of TLIB:
TLIB c "say serialno %tlibcfg:serialno%" q
5) Added: a menu command in TLIB for Windows (under the File menu) to
display dumped TLIB configuration data. (The configuration data is
written to a temporary file and then inspected with your editor or
Notepad.)
The following commands can be used to do aproximately the same thing
with command-line versions of TLIB:
TLIB -ctmp.tmp q
EDIT tmp.tmp
6) Improved: the temporary filename dialog in TLIB for Windows.
[Tom Z.]
7) Fixed: a bug (introduced in TLIB 5.03) in the operation of the
"O" (owned) wild-card search mode, which caused commands like
"tlib to @tlibwork.trk" and "tlib to @snapshot.snp" to list all files
named in the snapshot or tracking file, rather than just those that
were checked-out/locked by the current user ID.
A workaround for this bug was to strip the version number info from
the file list and configure "FIND1FILE Y". E.g., instead of:
TLIB TO @TLIBWORK.TRK
...in TLIB 5.50e and earlier you could do:
REM - First, create TLIBWORK.LIS, a plain file list containing the
REM same list of files that TLIBWORK.TRK contains:
TLIB SMN TLIBWORK.LIS @TLIBWORK.TRK
REM - Then configure "FIND1FILE_Y", and use @TLIBWORK.LIS instead
REM of @TLIBWORK.TRK to specify the files:
TLIB C FIND1FILE_Y TO @TLIBWORK.LIS
...or, combine it into one long TLIB command line:
TLIB SMN TLIBWORK.LIS @TLIBWORK.TRK C FIND1FILE_Y TO @TLIBWORK.LIS
The same bug was also present in TLIB for Windows: if you checked only
the "Owned" search mode checkbox, and specified @tlibwork.trk as a
wildcard specification, and clicked "Expand Wildcard," then WinTLIB
would list all the files named in TLIBWORK.TRK instead of just those
"owned by" (checked-out for modification to) the current user ID.
[Willie D.]
8) Improved: error message displayed when WORKDEPTH is configured too late
in the TLIB.CFG file (because the work directory has already been
determined at that point).
9) Fixed: a bug which, under some circumstances, caused TLIB's snapshot
command to fail when trying to modify an existing snapshot file. The
problem affected commands like this one:
tlib s temp.snp myfile.c,@temp.snp
This command is supposed to update the entry for "myfile.c" in snapshot
file temp.snp. However, prior to TLIB 5.50f it would fail with error
messages similar to these:
DOS 6.22, Err=6, Extd=6 Clas=7 Lcs=1 Act=4
ERROR: writing at offset 0, only 0 of 16 bytes written.
. . .
ERROR: Could not write "temp.snp"; snapshot is in "D:\TEMP\$TLIB_TM.2".
(However, the named temporary file, D:\TEMP\$TLIB_TM.2 in this example,
was missing.)
The workaround was to use a second file name, like this:
tlib s temp2.snp myfile.c,@temp.snp
del temp.snp
ren temp2.snp temp.*
The workaround is no longer necessary.
10) Fixed: a bug which prevented TLIB from extracting files to a
user-specified directory when TREEDIRS_N was configured and a
project-level search mode ("A" or "T") was used.
If TREEDIRS_N is configured, then you are supposed to be able to
extract files to alternative directories simply by specifying the
desired location. For example,
TLIB E xyz\myfile.c
However, this wasn't working with the A and T search modes. The
symptom was an error message similar to this:
ERROR: No files matching "xyz\myfile.c" found in project level DEV.
This bug has been fixed. However, there are pitfalls to be aware of
when extracting files to directories other than your work directory.
The pitfalls arise because TLIB records in your work directory tracking
file, TLIBWORK.TRK, the current version number (and some related
information) for each extracted source file. Therefore, if you extract
the files into another directory, TLIB's record of the version numbers
will be misleading, since the version numbers won't necessarily match
the files that are actually in the work directory.
TLIB depends upon this information for two features: EBF (extract
browse-mode freshen), for refreshing out-of-date files in the work
directory; and automatic branching on Updates (which causes a version
of a source file to be stored as a branch version if you weren't working
on the latest trunk version).
Therefore, if you have TREEDIRS_N configured and extract files to
somewhere other than the work directory, you should be very sure to be
consistent and always extract the files into the same location, or else
never use a TLIB command (EBF or U) which depends upon the information
in the work directory tracking file.
[Mark W. and Rich W.]
11) Fixed: a pair of Win-95 Long File Name (LFN) problems which could
occur when TREEDIRS Y was configured. These problems affected TLIBX.EXE
and WinTLIB.
One problem was with error handling when LONGNAMES Y was configured and
the network directory path for the work directory tracking file could
not be resolved to canonical form using the LFN protocol (perhaps due
to the length of the path). The symptom was improper automatic
determination of WORKDIR, and no informative error message explaining
the cause. (The workaround was to explicitly set the work directory
via the WORKDIR configuration parameter.)
The other problem was a bug which prevented proper wild-card file name
matching with the A and T ("All level" and "This level") wild-card
search modes when the current directory was a subdirectory beneath the
main work directory. (The workaround was to change the current directory
to be the main work directory.)
[James C.]
5.50e 14-Nov-97 (TLIB for Windows 1.104c)
1) Fixed: a bug that caused a debug message box to pop up when the user
chose Configuration Options or Edit Configuration File from the File
menu in WinTLIB. (The message box said, "dbg: tcl, tcmd='G2CFGFILE'...".
It was innocuous, but annoying.)
[Steve H.]
2) Changed: some internal debug message boxes to use the usual Warning
message dialogue. This allows you to suppress them with the "Ignore
For all commands" button, in the event that something goes wrong which
causes one of those messages to be displayed repeatedly. (That may
make the problem only mildly annoying instead of severely annoying.)
[Fabio V.]
3) Added: compiler-native project file support for Symantec Visual Cafe
.PRJ files. (This is only lightly tested; please tell us whether it
is working well for you!)
4) Fixed: a bug that could cause a GPF during an Snapshot (S) command
with a named project level search mode (A or T) if the project level's
TLIBWORK.TRK file was empty.
5) Fixed: a bug in the real-mode TLIB.EXE (but not in any other version of
TLIB) that could cause files to be processed multiple times if specified
multiple times on the command line and one of the times was via a
snapshot or tracking file that was being used as a file list. The
symptom seen was that the command:
tlib s newsnap.snp myfile.c,@oldsnap.snp
...resulted in a newsnap.snp snapshot file that contained two myfile.c
lines if myfile.c was already listed in oldsnap.snp.
The workaround was to use TLIBX.EXE or TLIB2.EXE instead of TLIB.EXE.
[Craig M.]
6) Added "-HINTS" option to WTLIB16.EXE (WinTLIB), to make it start with
new user hints reenabled; and added an icon/shortcut to start it that
way for new users.
[Shmuel W.]
7) Fixed: If TREEDIRS_N is configured, then you can extract files into
a particular subdirectory simply by specifying the desired destination
location as part of the wild-card specification, e.g.,
TLIB E TEMPDIR\MYFILE.*
However, when using a project-level wild-card search mode (A or T), this
feature was not working. Instead of finding the desired file(s), TLIB
would display an error message, like:
ERROR: No files matching "TEMPDIR\MYFILE.*" found in project level DEV.
This bug has now been corrected.
However, beware that using this capability has pitfalls. The problem is
that it updates the work directory tracking file to reflect the newly
extracted version number, but the extracted files are not actually in
the work directory! This means that the work directory tracking file
entries are misleading, which means that TLIB will have an incorrect
record of which versions of the source files are in the work directory.
This can cause malfunctions of the EBF (extract/browse/freshen) and
automatic branching features.
5.50d 24-Oct-97 (and TLIB for Windows 1.104b)
1) Added: an option to the Extract screen in WinTLIB, to simplify
extracting entire snapshot contents.
2) Fixed: a problem in WinTLIB that could cause it to appear to "hang" for
1.5-2 minutes while retrying attempts to open a file, if the file could
not be opened due to "sharing errors."
One symptom (seen under Win-95), was that if the user clicked Delta
when prompted for comments when TLIB was creating a new library file
(because UpdateNew Y was configured), WinTLIB would seem to just hang.
Now it pops up a message box letting the user retry or cancel.
3) Fixed: a bug in the TLIBDLL engine that could cause WinTLIB to crash
with a GPF with CS:EIP=F2,AE,F7,D1,75,01,49,91,8B,FA,5D,CB.
The "About" screen shows TLIBDLL version 5.4.0.78 for the fixed version.
[Stewart K.]
5.50c 23-Sep-97 (and TLIB for Windows 1.103)
1) Fixed: several problems related to the FNAMECASE configuration
parameter and the preservation/restoration of the capitalization
or "case" (upper, lower, or mixed) of filenames when FNAMECASE AUTO
is configured under an operating system that supports mixed-case
file names.
Note that the case of an extracted file name may depend upon the
current wild-card search mode. For instance, if a file was
extracted using the "A" or "T" search mode, then (since those
search modes find file names by looking in project level tracking
files) the case of the name of the extracted file will be as it
was found in the project level tracking file (TLIBWORK.TRK).
If the wild-card search mode used was "L" (libraries) then the
case of the name of the extracted source file will be determined
by the case of the library file (except that if TLIB needs to
determine the case of a letter in the file extension, for which a
"$" has been substituted in the library file, then TLIB will
consult first the given wild-card specification and then the
EXTENSION configuration parameter).
If you want to extract a file with a particular case which is
different from that which it would normally have, you must bypass
TLIB's wild-card expansion. To do this:
1) specify the file name without wildcards, and
2) either configure FIND1FILE N or else (in command-line versions
of TLIB) add the "N" (no search mode) suffix to the command
instead of one of the six normal wild-card search modes.
Note: Win-95 (or at least Win-95 OSR2) does some strange things with
mixed-case filenames. In particular, if you replace an already-
existing file with one that has the same name but different case,
Win-95 may give the new file the old name case. Stranger yet, even
if you delete the old file before replacing it, the file name
sometimes seems to reaquire the old case, though not if you deleted
the old file using a wild-card specification. Weird!
[James C. and Dave K.]
2) Fixed: a misleading error message which occurred when WinTLIB tried
to update a read-only library file but READONLY N was configured.
[Mark T.]
3) Fixed: a misleading error message which occurred when TLIB read a
bad-format version number from a file list, or when a "comment line"
in a file list lacked the required space after the leading "!"
character.
[Keith R.]
4) Fixed: a bug in WinTLIB which caused the following message to pop up:
ERROR: tcl('G2WORKDIR',), you must first complete the
previous operation: tcl('G2WORKDIR',)
or similar, with the window caption, "TLIB for Windows: tcl called
recursively". Also, fixed a related bug in the TLIBDLL.DLL engine
used by TLIB, which caused the GET_TLIB_CONFIG_VAL() API function
to fail under some circumstances.
[Tim O.]
5.50b 22-Aug-97
1) Fixed: a bug that could cause command-line versions of TLIB to not
find their TLIB.SER file if:
a) TLIB was started by being shelled-to from another program; and
b) TLIB was located in the current directory; and
c) TLIB was run without an explicit path being specified for the
program location.
The workaround was to specfify an explicit path for the program
location (e.g., run ".\tlib" instead of just "tlib").
5.50a 20-Aug-97 (and TLIB for Windows 1.102j)
1) We decided that it was finally time to bump the version number.
So, this is now officially TLIB version 5.5.
2) Fixed: a bug that could cause path information to be be omitted from
WinTLIB's list of source files, for source files not in the regular
work directory, if a file list or compiler-native project file
listed such files, and if TREEDIRS Y wasn't configured.
3) Fixed: a subtle bug that caused occasional strange behavior when the
%t or %f keyword was used. The symptom reported was a file that
extracted incorrectly when a particular version of TLIB was used,
but which extracted properly with all other versions. It is also
possible that this bug could have caused occasional GPF or protection
exception errors in protected-mode versions of TLIB.
[Mike T.]
4) Updated: the version of the Blinker DOS Extender used in TLIBX.EXE.
You'll probably notice no difference, except that the %TLIBX%
environment variable (for controlling DOS extender features) now
works as documented.
5) A beta-test version the of TLIB Add-In for Microsoft Developer Studio
(Visual C++ 5.0, Visual Interdev, Visual J++) is now available for
download from our Web site (www.burtonsys.com), and from our BBS:
line 1, 28.8 kbps: 1-919-481-3787
line 2, 28.8 kbps: 1-919-481-4792
5.04u 24-Jul-97 (and TLIB for Windows 1.102i)
1) Fixed: a bug introduced in TLIB 5.04t which caused "ERR: mdl3" and
"ERR: bhm" errors.
5.04t 14-Jul-97 (and TLIB for Windows 1.102g)
1) Fixed: a bug that could cause various failures under low-memory
conditions (or when processing large TLIB libraries) with command-line
TLIBs running in "real mode" (that is, TLIB.EXE, or TLIB2.EXE when
not run under OS/2 or NT, or TLIBX.EXE when extended memory is
unavailable). Symptoms included hangs and OS crashes.
The workaround was to configure "USEUMBS N" in TLIB.CFG.
2) Fixed: the DEFEXT (default extension) configuration parameter, which
was broken. (This feature must not be very heavily used, because it
hasn't worked since version 5.04c, seven months ago!)
[Robert N.]
3) Fixed: "EBF" (extract-browse-freshen) will no longer find source files
for which there are no corresponding TLIB libraries. This mainly
affects the behavior of WinTLIB's "EBF" checkbox option, since the
default wild-card search mode for command-line versions of TLIB is
"L" (library files), anyhow.
4) Added: compiler-native project support in WinTLIB for Microsoft
Visual/Developer Studio projects (*.DSP), and for opening plain file
lists (*.LIS) as project files.
*******
The Microsoft Developer Studio supports three development languages:
Visual C++, J++, and Visual InterDev. So far, we've only tested our
compiler-native project file support with VC++ 5.0.
*******
5) Added: compiler-native project file support for Microsoft Visual C++
5.0 (Developer Studio) .DSP files to command-line versions of TLIB.
The syntax is:
TLIB {command} @@myproj.dsp
or:
TLIB {command} @@myproj.dsp[2]
or:
TLIB {command} @@myproj.dsp[6]
With no [bracketed] option, TLIB reads the .DSP project file and
finds only the source file names actually mentioned within it (plus
the name of the project file, itself). This is very fast.
The [2] option tells TLIB to also find "external dependency" header
files. TLIB looks first for a matching .MAK file, and if it is found
then TLIB reads that instead of the .DSP file, and uses the source and
dependency information in the .MAK file to enumerate both source and
header files. This is also a reasonably fast operation. However, if
there is no matching .MAK file, then the [2] option is equivalent to
the much slower [6] option. (The .MAK file is generated by the
"Export Makefile" command in Developer Studio.)
Like the [2] option, the [6] option tells TLIB to find both the .C or
.CPP source files that are listed in the .DSP file and the header (.H
and .HPP) files that they reference. However,the [6] option tells
TLIB to find the header files "the hard way," by reading all the source
files and scanning them for #include directives. This process is not
fast. It may a minute or more for a large project; for an extremely
large project, it may take several minutes.
Note: only #include directives in which the header file name is within
"quote-marks" are found; #include directives that use <angle-brackets>
are ignored.
6) Added: a WinTLIB option for listing Delphi .OPT and .RES files in
compiler-native project mode along with the normal source files.
7) Added: support for the "-t1" command-line switch, which is a variant
of the existing "-t" command-line switch. The "-t1" switch overrides
only two of the five configuration parameters which "-t" (or "-t0")
overrides. "-T1" is equivalent to "C locking_n C readonlyb_n".
"-T" or "-t0" is equivalent to "-t1 C track_n C keyflag C logflag".
In other words, "-t" or "-t0" is equivalent to temporarily disabling
TLIB's LOCKING, READONLYB, TRACK, KEYFLAG, and LOGFLAG configuration
parameters; "-t1" temporarily disables only LOCKING and READONLYB.
We needed the "-t1" command-line switch so that WinTLIB would not need
to use the "C" (configure) command, since some TLIB users disable the
"C" command for security reasons.
[Frode N.]
8) Changed: TLIB for Windows, to use the new "-t1" switch instead of the
"C" command, when extracting to a temporary file.
[Frode N.]
9) Improved: wildcard expansion, to make it faster under some
circumstances in which there are a great many source files.
10) Fixed: a bug in WinTLIB which prevented the "Yes All" button from
suppressing repetition of the same Yes/No question for each file, while
processing multiple files.
[Bob W.]
11) Fixed: a bug introduced in the (unreleased) version 5.04s which could
cause garbled file names under some circumstances when paths were
specified along with the file names in a wild-card spec.
5.04r 17-Jun-97 (and TLIB for Windows 1.102d)
1) Fixed: a bug that could cause an "ERR: stQ" failure under some very
unusual circumstances: when TLIB was creating a new library file,
yet the module was already listed in an inherited-from project level
tracking file, and s=Q was configured for the current project level.
[Joe K.]
2) Improved: TLIB's handling of nested #include files in Watcom C/C++
compiler-native project file mode, particularly in TLIBX.EXE (the
DOS-extended command-line version).
Watcom's "target" files only list the "main" source files, not the
needed header files, so TLIB can scan the source code for #include
directives. However, TLIB's ability to handle deeply nested #include
files is limited by its stack, because of a recursive call which it
makes for each level of #include nesting. TLIB checks the available
stack space before each recursive call, and thereby limits the depth
to which it can process nested #includes. However, TLIB is (currently)
a 16-bit program, with a 64K main data segment, which includes the
stack (and many other things), so the stack cannot be arbitrarily
large. As it happens, some versions of TLIB necessarily have smaller
stacks than do other versions, and the version with the smallest stack
is the DOS-extended command-line version, TLIBX.EXE.
By moving some data out of the main data segment, we've managed to
increase the stack sizes, so that even TLIBX.EXE can now process
nested #include directives to several levels deep (though still not
as deeply as TLIB.EXE and TLIB for Windows).
3) Added: another API (Application Program Interface) to TLIB for Windows.
This one uses Windows messaging instead of DDE. It is simpler and
faster, and it works in some circumstances in which DDE does not.
We're using it in the Add-In for Microsoft Developer Studio (VC++, VJ++,
etc.), which will be available soon. See APIWMSG.TXT for details.
4) Improved: some error checking and reporting in WinTLIB, mostly related
to updating the TLIB.INI file.
[Mike K.]
5.04q 23-May-97 (and TLIB for Windows 1.101b)
1) Added: a new program, NETSETUP.EXE, to make it easier to set up TLIB
on multiple workstations on a network without having to do full
reinstallations on each computer. It also makes it easy to set up
TLIB for Windows again under additional copies/versions of Windows,
or after you have reinstalled Windows.
If you have already installed TLIB into an existing directory (perhaps
on a network volume), but the TLIB for Windows folder or group doesn't
exist in the currently-running copy of Windows, then just run
NETSETUP.EXE to create your icons/shortcuts, folder/group, AUTOEXEC
and registry additions, etc..
Note that your TLIB license limits the number of computers that can
have TLIB installed on them at the same time. Please respect our
copyright.
2) Improved: User ID dialogues in WinTLIB.
3) Fixed: a bug in WinTLIB that could cause erroneous compiler-native
project display (the right files, but listed in the wrong directory)
when switching from normal mode to compiler-native project mode and
the initial project is in a directory other than the normal mode's
current directory. (Workaround: press F5 to refresh the file list.)
4) Added: to WinTLIB's Snapshot dialogue the ability to write plain file
lists (with or without full paths) instead of TLIB snapshots.
5) Improved: SETUP in several ways. Most importantly, if you are
installing to a network drive, SETUP can add a "SET TLIBINI" to your
autoexec.bat file, to help prevent multiple users from inadvertantly
sharing the same TLIB.INI file.
5.04p 21-May-97 (and TLIB for Windows 1.100b)
1) Changed: the CMTFLAG configuration parameter, so that "<" and ">" can
be used in the flag string. This is needed for HTML files, because
they use "<!--" and "-->" to surround comments. (The CMTFLAG
parameter is mainly used in conjunction with TLIB's Migrate command.)
2) Added: code to detect "shrunken" library files. Since TLIB Version
Control only appends to library files, and never deletes any existing
data, it should not be possible for a TLIB library file to shrink.
So, TLIB now compares the last known length of each TLIB library file
(from the "l=" field of the work directory's TLIBWORK.TRK file) with
the actual length of the TLIB library file at the time of an extract
or update command. If the TLIB library file is shorter than expected,
TLIB emits a error message similar to the following:
ERROR: d:\tlibs\myfile.c$ is only nnnnnn bytes long, but l=mmmmmm
in d:\workpath\TLIBWORK.TRK. myfile.c$ appears to have shrunk!
One possible cause is that someone restored myfile.c$ from an old
backup set.
For Extract commands, TLIB then asks you:
Abort the Extract?
If you answer "N" then the extract will proceed normally; if you
answer "Y" then TLIB will skip the extract of this file and continue
with the next one.
Note that if you edit your TLIB libraries with a text editor (perhaps
to change the comments), you may see this error message. If that is
a problem for you, contact us, and we'll add a configuration parameter
to disable the feature.
[Arkady B.]
3) Added: more minor usability improvements to TLIB for Windows, mostly
in compiler-native project mode, and a couple of minor bug fixes.
4) Improved: TLIBTLIB.PL, for better memory efficiency when processing
extremely large TLIB libraries. (The previous one broke when processing
a 700-version TLIB library file using a real-mode version of Perl.)
5) Fixed: a bug in the command-line versions of TLIB which interferred
with wild-card expansion in interactive mode (i.e., when you run TLIB
without parameters and let it prompt for commands and file names) unless
FIND1FILE Y was configured.
[George P.]
6) Added: pop-up "Hints for New Users" in WinTLIB.
5.04n 8-May-97 (and TLIB for Windows 1.97)
1) Fixed: a bug which caused MAKEDIRS Y and MAKEDIRS M to fail for long
directory names under Windows-95.
[Fred G.]
2) Fixed: a bug which could cause bogus "Warning: Temporary license
expires..." messages.
[Fred G.]
3) Added: code to work around a Windows-NT bug, which causes NT to return
the wrong error code when a program tries to create a file in a non-
existent directory. The symptom was that, when running under NT,
configuring MAKEDIRS M would not allow TLIB to create directories as
needed. The workaround was to configure MAKEDIRS Y.
Fortunately, the "extended error info" is correct, so we changed TLIB
to now check both the regular error code and the extended error code.
[Frode N.]
4) Updated: PCOM, our parallel-port-based file transfer and remote-control
utility for DOS. The new version is 5.00r/s. This is the first update
to PCOM since 1994. It includes bug fixes, enhancements for better
reliability on modern fast machines, and several arcane new features.
Run it without parameters for help.
5) Added: improved error diagnostics to DIFF3 v5.04.
[Ed J.]
6) Fixed: a bug in TLIB for Windows, which prevented the Delta (visual
compare) command from working with files that had Win-95 long file names,
unless comparing versions that were already stored in the TLIB library.
7) Fixed: a bug which could cause an "ERR: lkT" failure if the locking
configuration parameter was changed from "LOCKING B" to "LOCKING N".
[Larry T.]
8) Added: substantial new functionality to the TLIB Add-In for Micrsoft
Visual Basic 5.0. It now has a "Run WinTLIB" menu item, for easy access
to TLIB functions that are not directly available in the VB IDE, and
project file check-in/out, and better handling of read-only files,
and several other improvements.
9) Added: commands to write lists of file names (or paths\names) to a
plain file list file.
The new SP command writes a list of file names with full paths. (The "P"
suffix stands for "Path.") E.g.,
TLIB SPL CFILES.LIS *.c,*.h
...creates a file list named CFILES.LIS containing a list of the files
with .C or .H suffixes for which TLIB libraries already exist. Note
that you can use TLIB's wild-card search modes to control which files
are listed. For example, to write a list of the files that you have
currently checked-out/locked, you could use:
TLIB SPO CFILES.LIS *.*
The new SM command is similar, but writes only Minimal (relative) path
information instead of fully-qualified paths. (The "M" stands for
"minimal.") If TREEDIRS N is configured, then only file names are
written to the output file (with no directory information at all).
Because of the similarity to the existing Snapshot command, these new
commands were implemented as suffix-options to the S (snapshot) command.
(The S command is just like the SM command except that the S command
includes version number information along with the file names, and the
SM command does not.)
Note: For the convenience of those who are converting from earlier
versions of TLIB, this version of TLIB allows the use of the 'SM' and
'SP' commands even if they are not listed in the COMMANDS configuration
parameter. So, you cannot disable these commands. (Tell us if this
is a problem for you.)
Note that, in combination with TLIB's compiler-native project file
support, this feature lets you use TLIB to easily extract a list of
source files from your compiler's native-format project file (for those
compiler project files that we support). For example, to produce a
list of the source files used by a Visual Basic 4.0 project, you could
use a command like this:
TLIB SPN MYPROJ.LIS @@MYPROJ.VBP
The list of files is created in MYPROJ.LIS.
Similarly, to list them to the console, you could use:
TLIB SPN CON @@MYPROJ.VBP
For another example, the following command would list the source files
in a Watcom C/C++ project, plus the application's #include files:
TLIB SPN CON @@MYPROJ.WPJ[2]
10) Fixed: a bug in TLIB.EXE, TLIBX.EXE, and TLIB for Windows which could
cause grossly bloated TLIB library files. The bug was present in
versions 5.03 and 5.04 through 5.04m, except that the bug did not
affect TLIB2.EXE.
The symptom of the bug was that if PASSSIZE (a/k/a MAXLINES) was
configured to greater than 8192, and if a version of your source file
contained more than 8192 lines (or binary "records," for binary
files), then the next version after that would be stored in its
entirety instead of as a concise delta. The resulting bloated TLIB
library is still usable, but it could easily grow to truly enormous
size (we noticed the problem when we ran out of disk space on a
machine that should have had plenty, and we found that several TLIB
libraries were over 10 megabytes in size).
(In case you are curious, the reason the bug did not affect TLIB2.EXE
is that we use a different C compiler when building TLIB2.EXE than
when building other versions of TLIB, and the problem was caused by
a compiler bug in the compiler which we use to build the other
versions of TLIB.)
For binary files, it may not be obvious whether or not the TLIB
libraries contain any versions with more than 8192 "binary records."
However, the problem is unlikely to affect binary files of less than
about 120KB in size.
The only way to trim down your bloated TLIB libraries is to rebuild
them with a version of TLIB that does not have the bug (i.e., TLIB
5.04n or later, or any version of TLIB2.EXE, or an old TLIB 5.02d).
You can use the "TLIB-to-TLIB converter" to automate this chore.
The converter came with your copy of TLIB. It works by repeatedly
running the command-line version of TLIB.
The TLIB-to-TLIB converter is called TLIBCVR2.EXE or TLIBCVRT.EXE
(or TLIBTLIB.AWK for the AWK source code). Using the TLIB-to-TLIB
converter, you can rebuild your TLIB libraries all at once. However,
it is a slow process, so you may want to start it in the evening
before you go home from work.
If you have TLIB for DOS, an old version of the converter is in
CONVERT.ZIP or CONVERT2.ZIP. If you have TLIB for Windows, then it is
one of the optionally-installed components, and it is installed in
the CONVERT subdirectory (probably C:\TLIB\CONVERT\). However, we've
also fixed a bug in the converter, so you'll need an updated version;
see item 11, below.
Note: You should (at least temporarily) replace TLIB.EXE with a copy
of TLIBX.EXE (or, under OS/2 or NT, TLIB2.EXE) while running the
TLIB-to-TLIB converter.
11) Fixed: a bug in the TLIB-to-TLIB converter, TLIBTLIB.AWK,
TLIBCVR2.EXE, TLIBCVRT.EXE (and now TLIBTLIB.PL).
We also created a new, improved TLIB-to-TLIB converter, TLIBTLIB.PL,
written in Perl instead of AWK. The new converter performs better
than the old one on big conversion jobs, because it uses multiple
temporary directories to store its temporary comment files (since DOS
slows down severely if you try to put thousands of files into the
same directory).
We also include a small (150K), free Perl 4.036 for DOS, PERL4S.EXE
(the source code for which is available upon request). It works
well with TLIBTLIB.PL. However, if you have Perl 5, you can use it,
instead, to run TLIBTLIB.PL.
See TLIBTLIB.TXT (or TLIBTLIB.DOC) for instructions, and call or email
us if you need help.
5.04m 4-Apr-97
1) Fixed: a bug which caused protected mode versions of TLIB to fail
with an "ERR: heap" message when processing extremely large TLIB
library files (it was seen with a 27 MB TLIB library file).
[John D.]
2) Added: a TLIB Add-In for Visual Basic 5.0 Professional. A version
for VB 5.0 Learning Edition will be available soon.
still 5.04L 21-Mar-97 (but TLIB for Windows 1.96b)
1) Fixed: a bug in WinTLIB's compiler native project mode which caused
the list of files to be unnecessarily cleared and refilled during
wild-card operations if no files were initially selected.
2) Updated: the Installation system we use (Wise Install) to a new
version, for compatibility with the latest Windows-NT 4.0 service
pack.
However, there may be a problem with installing to Windows 3.1x
under OS/2 2.1 (WIN-OS2) with this version of Wise-Install. If you
are using OS/2 2.1, please tell us whether it works properly for you.
(If necessary, we can use an earlier version of Wise Install to make
a TLIB setup.exe that will work for you).
[Mike O.]
3) Improved: error recovery when reading a TLIB.INI that has been damaged.
5.04L 12-Mar-97 (and TLIB for Windows 1.95)
1) Fixed: a bug in WinTLIB which caused the Delta (visual compare)
to refuse to subsequently run (until WinTLIB was restarted) after
it had once failed or been cancelled.
2) Fixed: several problems with the WinTLIB Add-In for VB 4.0.
3) Improved: WinTLIB's handling of compiler-native project options.
They are now "sticky," and they are saved and restored along with
the compiler-native project file names in the MRU list.
5.04k 19-Feb-97
1) Fixed: a bug which caused duplicate file names in the WinTLIB main
file list when the wildcard specified was of the form "@snapshot".
[Sid P.]
5.04j 12-Feb-97 (and TLIB for Windows 1.94d)
1) Fixed: a bug which caused 'ERROR: invalid version number: "V=...'
errors (note the upper-case "V") when extracting an entire old release
via the "@snapshotfile" syntax.
[Neil M.]
2) Fixed: when the "@snapshot" syntax was used in a TLIB command, the
version number last read from the snapshot file wasn't being properly
reset before the next command. The result was that it could affect
the operation of subsequent TLIB commands.
The problem was most likely to be seen in TLIB for Windows. The
symptom was usually one of several possible errors, most commonly
"ERROR: invalid version number...". However, in its worst possible
effect, if the subsequent command was an Extract, this bug could cause
extraction of the wrong version of a source file.
[Neil M.]
3) Fixed in WinTLIB: removed a "dbg:" message box that popped-up when
taking a snapshot of less than five files. (It was a "debug print"
that was inadvertently left in place.)
4) Improved: the REPLROBR configuration parameter, so that it won't apply
to TLIB's tracking file, and added a special warning. These changes
are intended to prevent damaging a TLIBWORK.TRK file by accidentally
extracting it from a TLIB library.
[Neil M.]
5) Fixed in WinTLIB: if an Extract Specified version was attempted, but
no version was specified, and a warning (such as "Note: myfile.ext
was already checked out to you...") was generated, the version history
could be displayed in the pop-up message box along with the warning
message.
5.04i 30-Jan-97 (and TLIB for Windows 1.94c)
1) Fixed: In WinTLIB, when a check-out failed because the file was
locked by someone else, the name of the person who had it out wasn't
shown in the pop-up window. It was necessary to click Ignore, then
click View Log to see the person's ID.
[Bob W.]
2) Improved: some error handling logic.
5.04h 28-Jan-97 (and TLIB for Windows 1.94b)
1) Added: support for Borland Delphi compiler-native project files.
In command-line versions of TLIB, use the syntax "@@path\progname.dpr"
to specify the files in a Delphi project file.
In TLIB for Windows, click the Mode button to enter compiler-native
project mode, then click on "..." and then click the down-arrow on
the "Open Project File" screen to bring up the list of supported
compiler-native project types. Click on "Borland Delphi (*.DPR)".
Note that we depend on the "Uses" list being in the usual form, with
the customary comments compiler-generated comments, and we do not
currently scan for Include files.
To include .RES and .OPT files in the list of source files, add "[1]"
to the file specification, e.g., "@@path\progname.dpr[1]".
We're grateful to Mr. Craig Tomita for the code which parses Delphi
project files.
2) Enhanced: WHEREIS.EXE v1.9, to handle long file names under Win-95
as well as under OS/2 and NT.
Also, added a new option, "-a", to select an output format more
appropriate for the display of long file names. Under Win-95, the
short-form file names are displayed unless you specify the -a option.
For instructions, run WHEREIS with no parameters.
3) Fixed in TLIB for Windows: a problem that occurred when using TLIB
with a Win-95 TCP/IP networking product called Maestro. The symptom
was TLIB for Windows failing at start up with an error message saying
that it could not change directories.
[Steve K.]
4) Fixed in TLIB for Windows: a bug which caused "ERROR: check in/out
locking not enabled" when, in fact, it was already enabled. The
error happened when another command (like Test or Update) was
attempted after an Extract to temporary file.
[Joe G.]
5) Fixed in TLIB for Windows: When "PROJLEV *" is configured, the
default wild-card search modes are now W+L instead of W+A.
6) Added: support in the TLIB for Windows "invisible DDE" mode for a
the new special start-up option, "-LZ", which tells WinTLIB to start
in "invisible DDE" mode but not to shut down when the link is closed,
but rather to stay resident until the new "SHUTDOWN" command is
received.
[Dan H.]
7) Fixed: When "LOCKING B" is configured (so that check-in/out locking
is "local" to the current project level), the "O" ("Owned") search
mode now finds only those files which the user has checked out at
the current project level. This differs from TLIB 5.04g, which
found all the files that the user had checked out at any level.
This change makes TLIB 5.04h behave like 5.02.
Note that this change only affects users who've configured "LOCKING B".
If you've configured "LOCKING B" but want to make the "O" search mode
find all your checked-out files instead of just those checked out at
the current project level (in other words, if you want the behavior
of TLIB 5.04g), you can temporarily configure "LOCKING Y". In
non-Windows versions of TLIB, this can be done via a command-line
override, e.g.:
tlib c locking_y t *.c,*.h
It is also possible to do this in TLIB for Windows, by manually
overriding the LOCKING configuration parameter via the "Run" (manual
command) button:
a) Temporarily configure "LOCKING Y": Click on the "Run" button
(or select Run Manual Command from the "File" menu). Then enter
the command:
c locking_y
Then click "Execute" and "Close" to return to the main screen.
b) Use the "Owned" search mode and "Expand Wildcard": First, check
"Owned", and un-check the other search modes. Then enter a wild-
card spec (perhaps *.*), and click the "Expand Wildcard" button.
c) Then restore the proper locking mode: Click on the "Run" button
(or select Run Manual Command). Then enter the command:
c locking_b
Then click "Execute" and "Close" to return to the main screen.
Note that temporary configuration changes made via "Run" (Run Manual
Command) only persist until the next time you set the TLIB for Windows
current directory, since at that time TLIB for Windows reloads all
configuration information from its configuration file(s).
[Larry T.]
8) Fixed: a bug that could cause TLIB's "S" (Snapshot) command to fail
with a false "bad dot command" error with a text-format TLIB library
created by TLIB 5.02 or earlier that contained linefeeds without
carriage-returns in the stored text file.
[Jerome T.]
5.04g 20-Dec-96 (and TLIB for Windows version 1.93)
1) Fixed: a bug which could cause "ERR: adQ" when "a=q" (the default)
was configured and a file was being added to a project level via the
U (update) command.
[Joev D. and John D.]
2) Fixed: a problem with TLIB for Windows, which caused it to try to
use the Windows registry association instead of the configured text
editor to edit tlib.cfg.
3) Fixed: an error-handling bug which could cause protection exceptions
(GPFs) in TLIB for Windows when there was a syntax error in a LET or
IFF expression in the TLIB configuration file.
[Jim M.]
4) Fixed: a bug which caused the %tlibcfg:workdir:n:m% syntax in a
TLIB configuration file to not work. The workaround for the problem
(needed in TLIB 5.04f) was like this:
REM - Instead of %TLIBCFG:WORKDIR:1:-1% do this and use %LWRKPAT%
SET LWRKPAT=%TLIBCFG:WORKDIR%
LET LWRKPAT=UNQ ('%LWRKPAT%' SPL '1:-1')
[Jim M.]
5) Fixed: a bug which prevented a snapshot file from being used with the
recommended syntax to retrieve an old version; the current versions
were being retrieved instead of the versions named in the snapshot
file. This syntax once again works correctly:
tlib eb @snapfile.snp
In TLIB 5.04f, that didn't work. The workaround was to use the
following (slower) form:
tlib ebs @snapfile.snp @snapfile.snp
[Paul V. and Peter S.]
6) Fixed: when an EBF (extract/browse-mode/freshen) command is done
and no files are extracted because all matching files are already
up-to-date, TLIB just displays a "Note: No out-of-date files..."
message and exits. However, it was exiting with errorlevel 1.
Since this is not an error condition, it now returns errorlevel 0
for this situation.
[Paul V.]
7) Fixed: an error which occurred when extracting a file to replace an
existing 0-length read-only file (the REPLROBR Y configuration
parameter was being ignored if the read-only file to be replaced was
0-bytes in length).
[Paul V.]
8) Changed the informative message that is displayed when weak or
branch/level locking is enabled, and a file is check out which
someone else is already working on. The message was:
Warning: {sourcefile.ext} is checked out to...
However, a user suggested that "Warning" is a bit strident for a
message about what is, after all, a non-error condition. So, at
his suggestion, we've changed the message to the less severe:
Note: {sourcefile.ext} is checked out to...
[Paul V.]
9) Added: the new AUTOBRNCH configuration parameter:
AUTOBRNCH <Y/N/Q>
This parameter controls TLIB's automatic branch creation feature, in
which TLIB will automatically create a new branch when you update a
library with a new version of a file, but (according to the record
in the work directory tracking file) you didn't start with what is
now the latest version.
Traditionally, TLIB would just just go ahead and create the new
branch version. Configure AUTOBRNCH Y to restore TLIB to this
behavior.
If you want TLIB to ask you before creating a new branch version,
then leave it configured to the default, AUTOBRNCH Q.
If you want TLIB to issue an error message and skip the file, then
configure AUTOBRNCH N.
Note that this configuration parameter will not force everything to
be stored as trunk versions. If that is the behavior you want,
then you probably should just disable version tracking altogether.
[Paul V.]
10) Extended the temporary serial number expiry to 7-Feb-97.
5.04f 18-Nov-96 (and TLIB for Windows version 1.90b)
1) Fixed: a bug that could cause TLIB's "L" (List Versions) command to
fail with a false "bad dot command" error when LOCKING was enabled
and a U (update) command was attempted with a text-format TLIB library
created by TLIB 5.02 or earlier that contained linefeeds without
carriage-returns in the stored text file.
[Steve K.]
2) Fixed: a bug that could cause protected mode command-line versions
of TLIB to fail with a protection exception if Enter was pressed
when TLIB prompted for a file name or wild-card spec.
[Peter S.]
3) Added: the COLOROFF configuration parameter, to let you tell TLIB what
ANSI escape sequence to use to resets your console color to "normal"
after displaying a colorized error or warning message.
This configuration parameter does nothing in TLIB for Windows, and
does nothing if COLORIZE N is configured (which is the default under
DOS if ANSI.SYS is not loaded).
The default is "COLOROFF [0m".
[Peter S.]
4) Fixed: a bug in TLIB for Windows which caused it to crash when run
in 32-bit color mode.
5) Extended the temporary serial number expiry to 31-Dec-96.
5.04e 6-Nov-96 (and TLIB for Windows version 1.88b)
1) Fixed: a bug in the TLIB for Windows "Extract" command: When both
"As Temporary File" and "Specify Version" were selected, but the
version number wasn't filled in, it wasn't prompting for the version
number.
2) Fixed: a bug which could crash TLIB for Windows if an invalid "context
size" was entered on the compare options screen.
[Tom Z.]
3) Increased: the maximum configuration include file nesting depth, to 3
(or 4, if you count the main configuration file).
4) Changed: some colors and fonts in TLIB for Windows, for better appearance
when using unusual Windows color schemes.
4) Fixed: bug which could cause the two captions to be swapped in the
visual compare when invoked via TLIBCOMP or by dropping files on the
icon with Norton Desktop.
5) Added: "CD" and "CONFIG" commands to the "Invisible DDE" interface.
6) Added: "Compare" and "History" submenu choices to the TLIB Add-In for
Visual Basic 4.0.
5.04d 16-Oct-96 (and TLIB for Windows version 1.84b)
1) Added: an Add-In for Visual Basic 4.0 (32-bit version), to hook into
the VB 4.0 IDE. Thanks to Mike's wizardry, it even works with VB 4.0
Standard Edition (the cheap version). Very cool!
This is brand-new beta-level code, currently tested only under Win-95,
not under NT. (It'll probably work under NT, as long as you ensure
that you use only short directory and file names.)
2) Improved: handling of Win-95 long subdirectory names that include
blanks. We needed to be able to handle these because the default
install directory for VB 4.0 under Win-95 is "C:\Program Files\vb4\".
If there's a blank in the directory name, we just use the short form
of the directory name (e.g., "C:\PROGRA~1\VB4\").
This change only affects TLIBX.EXE and TLIB for Windows, because those
are the only versions of TLIB that handle Win-95 long file names.
5.04c 13-Oct-96
1) Fixed: a bug in the Win-95 long filename support of TLIBX and TLIB
for Windows. The symptom was incorrect handling of file attributes
(e.g., the read-only attribute) on files with long names, or failure
of the UD (check-in discarding changes) command.
2) Increased: the length limit for WORKDIR from 39 characters to 68
characters, and added an error diagnostic which is displayed when the
limit is exceeded. Note, however, that the total path+name length
for files is still limited to 80 characters, so having a very long
WORKDIR will restrict your ability to use long file names under Win-95
(or, with TLIB2.EXE, under OS/2 or NT).
[Steve K.]
3) Fixed: a couple of bugs in the Windows stand-alone compare.
[Neil M.]
5.04b/á 30-Sep-96
1) Fixed: a bug in the LONGNAMES N implementation which could cause DOS
and Windows versions of TLIB to be unable to find files which have
no extension, using some of TLIB's wild-card search modes.
[Steve K.]
5.04a/á 25-Sep-96
1) Added: support for configuring READONLYB W ("read-only browse mode
files only in Work directory"), to make browse-mode files
read-only in your work directories, but leave reference copies in
project level reference directories writable:
READONLYB <Y/N/W>
This is for users who have a network that does not permit them to
make files on the server read-only (or which does not allow other
users to make them writable again). The most common example is a
Unix-based file server, but one user reports having this problem
with an NT 4.00 server and NT 3.51 workstations.
[Peter S.]
See also: READONLYT, REPLROBR.
2) Changed: the "temporary" serial numbers (for evaluators of TLIB).
3) If you would like to have TLIB integrated with Visual Basic 4.0 or
Borland Delphi, please send email to support@burtonsys.com.
You too can be a Guinea Pig!
5.03x/á 18-Sep-96 (and TLIB for Windows Beta 1.75c)
1) Changed: default is now ERRORPAUS 2 instead of ERRORPAUS 1. This
means that, by default, command-line versions of TLIB will not allow
"Warning:..." messages to scroll off the screen.
2) Fixed: a bug that could cause spurious error messages when when the
"O" ("owned-by-me") wild-card search mode was specified in combination
with another search mode. Symptom was:
ERROR: Open failed for "(null)", No such file or directory
3) Fixed: some problems that could result if LONGNAMES was configured
inappropriately or DEBUGMODE was enabled, and a bug under Windows-95
which could cause TLIB to report erroneously that the work directory
and current directory were different, when they were actually
identical (as well as other symptoms); the workaround was to configure
LONGNAMES N (to disable long file name support).
[Joe G.]
4) Improved: some error diagnostics, including warnings if TREEDIRS N
is configured but WORKDIR is set to something other than the current
directory.
5) Improved: compare screen resizing and some help-status-bar text in
TLIB for Windows.
6) Fixed: bugs in the Snapshot command in TLIB for Windows.
7) Improved: error handling in some circumstances, especially when
TLIB is unable to open a file due to "sharing errors."
8) Eliminated: the not-very-useful filename-only first column in the
main file list of TLIB for Windows. By placing the path\name in the
rightmost column, we avoid problems with long filenames fouling up
the columnarity of the list box.
5.03w/á 30-Aug-96 (beta)
0) Sped up: In TLIB for Windows Beta 1.74c, sluggish scrolling of the
delta/compare screen.
1) Fixed: A bug in the Win-95 long filename support, which could cause
wild-card specs matching lower-case or mixed-case filenames to find
the same file twice. (This bug affected only TLIBX.EXE and TLIB for
Windows.)
2) Added: WATCOM.TXT, GEN_CI.* and GEN_CO.*, for hooking TLIB into the
Watcom IDE.
3) Updated: TESTLOCK to version 1.17. (TESTLOCK is our tool for testing
network and OS file-sharing/locking support.) This version adds some
additional test cases, mostly for AUTO2 mode, the dual-machine test.
It also adds three new versions of the TESTLOCK executable. There
are now five:
TESTLOKR.EXE -- real-mode DOS
TESTLOKP.EXE -- 16-bit OS/2+NT+DOS ("bound" family-mode)
TESTLOK2.EXE -- 32-bit OS/2
TESTLK95.EXE -- real-mode Win-95 (uses Int 21H LFN functions)
TESTLK32.EXE -- Win-32 (for Windows-NT and Win-95)
This table shows which versions of TESTLOCK can be run under each
of several common PC operating systems:
| TESTLOKR | TESTLOKP | TESTLOK2 | TESTLK95 | TESTLK32 |
------------+----------+----------+----------+----------+----------|
MS-DOS | Yes/8.3 | Yes/8.3 | No | No | No |
Windows 3.1 | Yes/8.3 | Yes/8.3 | No | No | No |
Windows 95 | 8.3 | 8.3 | No | Yes | Yes |
Windows NT | 8.3 | Yes | No | No | Yes |
OS/2 1.3 | 8.3 | Yes | No | No | No |
OS/2 2.x | 8.3 | Yes | Yes | No | No |
OS/2 Warp | 8.3 | Yes | Yes | No | No |
Where: "Yes" means that it runs
"8.3" means that it runs, but only using short file names
"No" means that it won't run
5.03v/á 15-Aug-96 (beta)
(Note: command-line TLIB 5.03v/á is the same fix-level as TLIB-for-Windows
Beta 1.73b.)
1) Added: "Invisible DDE" support to TLIB for Windows Beta 1.73b, which
allows other applications to easily integrate with TLIB for Windows
via DDE Execute commands. Using DDE can be a simpler alternative to
calling the API (Application Programming Interface) provided by
TLIBDLL.DLL. See TLIBDDE.* for more information.
2) Added: Limited support for Windows 95 long file names in TLIBX.EXE (the
DOS-extended command-line TLIB), and TLIB for Windows Beta 1.73.
We still don't have full support for long file names, because:
- Paths and names are still limited to 80 characters total length,
rather than 259. Also, if your filenames are very long, they will
foul up the columnarity of the main file list box in TLIB for
Windows.
- We don't allow blanks and other special characters (except dots)
within file names, and you can't enclose filenames in quote marks.
- Directory names should still be in 8.3 format.
- File extensions are limited to 7 characters in most contexts (up
from the 3-character limit in TLIB for DOS).
- TLIB for Windows and TLIBX only support long file names under
Windows 95, not under OS/2 or Windows-NT. You can use TLIB2 to
handle long file names under OS/2 or NT, but it is command-line
only.
- Some network software does not support the mechanism that we use
to handle Win-95 long file names. In particular, we've beem told
that current versions of PCNFS and older versions of Novell's VLM
drivers both fail.
- Only TLIB itself supports long file names; the auxiliary programs
that come with TLIB do not (yet).
3) Added: the new LONGNAMES configuration parameter. You can use it to
prevent TLIB for Windows and TLIBX from handling long file names under
Windows 95, or to prevent TLIB2 from handling long file names under
OS/2 and Windows-NT.
LONGNAMES <Y/N/M>
The three possible settings are:
LONGNAMES No Disables use of long file names by TLIBX and TLIB
for Windows under Windows-95, and by TLIB2 under
OS/2 or Windows-NT. This is the default for all
versions of TLIB when running under DOS 6.xx and
Windows 3.1 or 3.11.
LONGNAMES Maybe Enables use of long file names under Win-95, with
automatic fallback to conventional (8.3) file
access if long name access fails. This is the
default setting for TLIB for Windows and TLIBX
when running under Windows-95. For TLIB2, this
is equivalent to LONGNAMES Y.
LONGNAMES Yes Enables use of long file names under Win-95, and
disables fallback to the alternative/old (8.3)
file access methods. This is the default for
TLIB2 when running under OS/2 or Windows-NT.
The LONGNAMES parameter is permitted but ignored by TLIB for DOS.
Here is a table summarizing long file name support by various versions
of TLIB under various operating systems:
ÉÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍ͸
º ³ º ³ OS/2 ³ OS/2 ³Win 3.1x,³ ³ ³
º ³ LONGNAMES ºMS-DOS³native³DosBox³Win-OS/2 ³Win-95 ³Win-NT³
ÌÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍØÍÍÍÍÍ͵
ºTLIBDLL.DLL³ default º n/a ³ n/a ³ n/a ³ 8.3 ³ long ³ 8.3 ³
º& TLIB for ³ N º n/a ³ n/a ³ n/a ³ 8.3 ³ 8.3 ³ 8.3 ³
º Windows ³ M º n/a ³ n/a ³ n/a ³ 8.3* ³ long ³ 8.3* ³
º(API & GUI)³ Y* º n/a ³ n/a ³ n/a ³ n/a ³ long* ³ n/a ³
º ³ º ³ ³ ³ ³ ³ ³
º TLIB2.EXE ³ default º 8.3* ³ long ³ 8.3* ³ 8.3* ³ 8.3* ³ long ³
º (TLIB for ³ N º 8.3* ³ 8.3 ³ 8.3* ³ 8.3* ³ 8.3* ³ 8.3 ³
º OS/2+NT) ³ M or Y º 8.3* ³ long ³ 8.3* ³ 8.3* ³ 8.3* ³ long ³
º ³ º ³ ³ ³ ³ ³ ³
º TLIBX.EXE ³ default º 8.3 ³ n/a ³ 8.3 ³ 8.3 ³ long ³ 8.3 ³
º (DOS- ³ N º 8.3 ³ n/a ³ 8.3 ³ 8.3 ³ 8.3 ³ 8.3 ³
º extended) ³ M º 8.3* ³ n/a ³ 8.3* ³ 8.3* ³ long ³ 8.3* ³
º ³ Y* º n/a ³ n/a ³ n/a ³ n/a ³ long* ³ n/a ³
º ³ º ³ ³ ³ ³ ³ ³
º TLIB.EXE ³ (any) º 8.3 ³ n/a ³ 8.3 ³ 8.3 ³ 8.3 ³ 8.3* ³
º(real mode)³ º ³ ³ ³ ³ ³ ³
ÓÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÐÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÙ
Legend:
8.3 supports short file names only
8.3* supports short file names, but this is not the best version
of TLIB to run in this operating environment, or it is not the
recommended setting for LONGNAMES in this operating environment.
long supports long file names (80 chars maximum, no spaces)
long* supports long file names, but we do not recommend configuring
"LONGNAMES Y" under normal circumstances.
n/a not supported
Note that you can use IFF/ELSE/ENDIF directives with the %TLIBNAME%
symbol to set configuration parameters which apply only to certain
versions of TLIB. For example, the following would disable support
by TLIBX and TLIB for Windows for Win-95 long file names, without
disabling TLIB2.EXE's OS/2 and NT long file name support:
iff ('%TLIBNAME%' eqi 'TLIBX') or ('%TLIBNAME%' eqi 'TLIBDLL')
REM Disable Win-95 long file names:
longnames n
endif
iff '%TLIBNAME%' eqi 'TLIB2'
REM This really is not needed, because it is the default:
longnames y
endif
See also: FNAMECASE, which determines whether file names are translated
to upper-case (or lower-case).
4) Fixed: a bug in the handling of non-wildcard file specifications when
the current directory is beneath the main work directory. [Clark M.]
5.03u/á 2-Aug-96 (beta)
1) Improved: a few messages and usability deficiencies.
2) Pre-released TLIB for Windows, in "open beta."
5.03t/á 29-Jul-96 (beta)
(Note: command-line TLIB 5.03t/á is the same fix-level as TLIB-for-Windows
Beta 1.64b.)
1) Added: limited support for long file names in the OS/2+NT commmand-line
version of TLIB, TLIB2.EXE.
We still don't have full support for long file names, because:
- Paths and names are still limited to 80 characters total length
in TLIB2, rather than 254.
- We don't allow blanks and other special characters (except dots)
within file names, and you can't enclose filenames in quote marks.
- File extensions are limited to 7 characters in most contexts (up
from the 3-character limit in TLIB for DOS).
If you expect to have file extensions that are 4-7 characters long
(like ".html"), you might want to change your LIBEXT and LOKEXT
configuration parameters, e.g.:
LIBEXT ?$?????
LOKEXT ?^?????
Also, don't forget to add your long source extensions to TLIB's
EXTENSION parameter, e.g.:
EXTENSION C,H,BAT,HTML
Also, you may want to configure the FNAMECASE parameter, to force
mixed-case filenames to upper-case.
Versions of TLIB that don't support long filenames will simply ignore
the extra characters in the LIBEXT, LOKEXT parameters. Thus, they'll
be unable to access TLIB library files with 4-7 character extensions,
or with base file names of more than 8 characters. But they'll still
be able to use the same TLIB configuration file, since for files
with "8.3" names all versions of TLIB will still compute the same
library and lock file extensions.
2) Fixed: a bug that caused TLIB to abort when the current directory
was a project level reference directory. The error message displayed
was:
ERROR: in configuration, levels (WORKDIR) and YOURLEVEL have
same directory...
[Gary K.]
5.03s/á 26-Jul-96 (beta)
1) Changed: Default is now "MULTIPASS Y" (for supporting large files).
2) Added: support for checksummed serial numbers, and the new SERIALNO
configuration parameter, and the TLIB.SER file.
The new checksummed serial numbers are based on the old serial numbers,
but longer. For example, if your old serial number was 500-01234(5),
meaning that you have TLIB 5.00, yours was the 1234-th TLIB sold, and
you bought a 5-user license, then your new serial number might be
something like 500-01234-5-123456789012.
The SERIALNO configuration parameter is how you tell TLIB what your
serial number is. For example, if 500-01234-5-123456789012 were your
serial number, you would configure:
serialno 500-01234-5-123456789012
From then on, TLIB's copyright banner would say something like:
TLIB 5.03s/á, 5 user license. Copyright 1985-1996 Burton Systems Software.
If you have more than one serial number, just configure them repeatedly,
like this:
serialno 500-01233-1-123456789012
serialno 500-01234-5-234567890123
TLIB will sum the number of user licenses:
TLIB 5.03s/á, 6 user license. Copyright 1985-1996 Burton Systems Software.
The TLIB.SER file is an optional TLIB configuration file which, if
it exists, must reside in the same directory as the TLIB executable
(TLIB.EXE, TLIBX.EXE, TLIB2.EXE, or TLIBDLL.DLL), and is read before
the regular TLIB.CFG file. TLIB.SER is primarily intended to contain
your TLIB serial number(s).
To find out your checksummed TLIB serial number, or to purchase an
upgrade, you should contact Burton, preferably by email to:
office@burtonsys.com
Please mention your existing TLIB serial number in your email. If you
telephone us, please have your old TLIB serial number ready when you
call. In the meantime (through September), you can use a special,
temporary serial number:
vvv-sssss-nn-262065096530
...where your current TLIB serial number is vvv-sssss(nn). (Note that
this temporary serial number will not work for TLIB for Windows; if
you are a beta tester of TLIB for Windows, please contact us for a
serial number.)
3) Added and fixed: A few more nits in TLIB for Windows beta, and added
a Windows installation program (implemented with Wise Install).
5.03n/á 16-Jul-96 (beta)
1) Fixed: a bug which caused a false "bad dot command" error when LOCKING
was enabled and a U (update) command was attempted with a text-format
TLIB library created by TLIB 5.02 or earlier that contained linefeeds
without carriage-returns in the stored text file. (TLIB 5.03 converts
lone linefeeds to carriage-return + linefeed pairs, so this bug did
never affected TLIB libraries created by TLIB 5.03/á.) [Steve K.]
2) Fixed: wild-card search mode defaults didn't work at all for the EF
and EBF commands, and a search mode default specified in the COMMANDS
configuration parameter for any other command didn't work if the command
listed in the COMMANDS parameter without the "I" (include subdirectories)
suffix, but the user specified the command with the "I" suffix.
This bug had no effect when the user specified an explicit wild-card
search mode as part of the command. (As it happens, the GUI "front
end" of TLIB for Windows always specifies an explicit search mode
when calling the TLIB DLL engine, so this bug did not affect TLIB for
Windows.)
With this fix, if a command is listed in the COMMANDS parameter
without an "I" suffix, any default search mode that you specify with it
will work for commands specified both with and without the "I" suffix,
except that you can still list a command both ways in the COMMANDS
configuration parameter if (for some strange reason) you want different
default search modes depending upon whether or not the user specified
the "I" suffix. [Steve K.]
3) Fixed: a bug that caused hideously slow operation of the EBF command
under some circumstances.
4) Fixed: a bug that caused TLIB.EXE and TLIB2.EXE (but not TLIBX.EXE nor
TLIB for Windows) to give garbled error messages (or a protection
exception under OS/2) when an "@filelist" reference was made but the
"filelist" file did not exist.
5) Fixed: a couple of other minor bugs that nobody had noticed.
6) Changed: the names of most .DOC files to .TXT, for the convenience of
Windows users (who expect .DOC files to be in Microsoft Word format).
7) Fixed: a bug that could cause TLIB to drop the last character in a
timestamp (e.g., "11:15:06" could become "11:15:0"). [Steve F.]
8) Added: a feature so that the user is asked whether to "Retry?" when
TLIB can't write a source file that needs to be refreshed (e.g., to
update keywords, or a reference copy).
5.03m/á 9-Jul-96 (beta)
1) Added: compiler-native project file support for Help Magician Pro
(lightly tested).
2) Added: to TLIB's support for Watcom C/C++ compiler-native project
files, code to mimic most of the include file searching strategy
used by the Watcom C/C++ compilers.
TLIB's include file searching algorithm for Watcom C/C++ projects
is now just like that of the Watcom compiler, except that:
- TLIB ignores system header files (files referenced with an
"#include" directive that uses <angle brackets> to quote the
header file name. (This is because it is rarely useful to
store the system header files under TLIB.)
- TLIB honors the "-i" include directory list(s) that are stored
in each target (.tgt) file, except that TLIB ignores any include
directories that reference Make macros, such as "$(%watcom)"
or "$[:".
- TLIB ignores the %{os}_INCLUDE% and %INCLUDE% environment
variables.
- Watcom's description of their include search algorithm specifies
that the first place looked is the "current" directory, followed
by the directory containing the "parent" file (that is, the
including file, the file with the "#include" directive),
followed by the parent file's parent file's directory, etc..
TLIB follows this algorithm exactly, but note that the "current"
directory in this context is assumed by TLIB to be the directory
that contains the target (.tgt) file.
5.03L/á 4-Jul-96 (beta)
1) The following predefined pseudo-environment variables can now be
referenced within your TLIB.CFG file:
%TLIBOS% (may be: DOS, OS2, or WINDOWS)
%TLIBMODE% (may be: REAL or PROT)
%TLIBNAME% (may be: TLIB, TLIBX, TLIB2, or TLIBDLL)
%TLIBPROG% (may be: EXE or DLL)
%TLIBWORDSIZE% (may be: 16 or 32)
Example (try adding these 2 lines to your tlib.cfg file):
Say %TLIBNAME%.%TLIBPROG% is running
Say in %TLIBMODE% mode (%TLIBWORDSIZE%-bit).
2) TLIB now has special built-in support for the compiler-native project
files of some programming languages.
To access this feature from within TLIB-for-Windows, click the "Mode"
toggle button.
To access this feature from the command-line versions of TLIB, reference
the compiler's "project file" as if it were a TLIB file list, except
that you should specify "@@" (two "@"s) before the name of the project
file. For example, you could store all the source files in a VB 4.0
program called "myproj" with this command:
tlib nf @@myproj.vbp
Currently we support Microsoft Visual Basic 3.0 (*.mak) and 4.0 (*.vbp)
projects, and Watcom C/C++ 10.5 project (*.wpj) and target files (*.tgt).
You can also specify a bit-sensitive options value, within square
brackets at the end of the project file name. Currently, there are
two possible bit-values supported: Bit 0 set to '1' means that certain
kinds of binary files found in the project are subject to version
control; bit 1 set to '1' means that TLIB should scan for C/C++ #include
directives so that the list of files returned includes the header files.
For example, to store the initial version of a Watcom C/C++ project
into TLIB, scanning for #includes, you could type:
tlib nf @@myproj.wpj[2]
This stuff is not yet perfect. There are some problems with projects
that contain files in multiple directories, and there's a known
deficiency in the Watcom C/C++ include file scanning: we don't yet
utilize the Watcom -i and %xx_INCLUDE% and %INCLUDE% mechanisms for
finding included files. That's planned for the next version.
| Also, TLIBX.EXE (the DOS-extended version) has a smaller stack than
| do other versions of TLIB, so it is unable to handle deeply-nested
| source file includes with the [2] option. One workaround is to use
| the real-mode TLIB (5.04s or later) to create a file list, and then
| use the DOS-extended TLIB to use the file list, like this:
|
| TLIB spn myproj.lis @@myproj.wpj[2]
| TLIBX {any-command} @myproj.lis . . .
|
| (You can also save some stack space by specifying the Watcom .TGT file
| instead if the .WPJ file.)
We plan to add support for other languages, as well. If your favorite
language uses project files that are not supported by TLIB, please give
us a call (better: send us email to support@burtonsys.com), and perhaps
we can add support for it.
3) Added support for the SST ("substring") operator; see below (in the
notes for TLIB 5.03a/á).
5.03h/á 16-Jun-96 (beta)
1) Improved: the wild-card handling in TLIB when TREEDIRS Y is
configured (to handle a tree of directories rather than a single
work directory):
o With earlier versions of TLIB, only the T and A search modes
were capable of processing subdirectories, and whether they
did so or not was determined by whether or not you specified
a specific directory.
Neither of these statements is true of TLIB 5.03h/beta. All
TLIB commands operate on a just a single directory, regardless
of the search mode(s), unless you add the the new "I" ("Include
subdirectories") option letter to the TLIB command, to make it
process subdirectories (if you've configured TREEDIRS Y). This
behavior is now consistent regardless of what search mode(s)
you use.
o TLIB now fully determines the list of files that a command will
operate upon before it processes the first file. (Earlier
versions of TLIB processed the files as the names were determined.)
This means that if you have a lot of files there may sometimes
be a noticable pause before the first file is processed,
expecially if you use the "i" suffix to process subdirectories,
and especially if you use several wild-card search modes in
combination.
o You can now combine two or more search mode suffixes to make TLIB
find all files that would be found by any of the search modes.
For example, if you have work files for abc.c and def.c, and
there are TLIB libraries for def.c and ghi.c, you can use "LW"
as the wild-card search mode to select all three files (the "W"
makes TLIB find finds abc.c and def.c, the "L" finds makes TLIB
find def.c and ghi.c, so "LW" makes if find all three). When you
specify more than one search mode, TLIB simply handles each
search mode in turn and merges the resulting lists of files.
(We mainly added the multiple-search-mode support so that TLIB
for Windows could have a default search mode that would be
reasonable regardless of which command was to be used. This
was needed because the GUI front end of TLIB for Windows uses
a paradigm in which the user first selects the files to be
processed, then selects the operation to be done.)
o You can now ask TLIB to tell you what files it would operate
upon, without actually doing the operation. Simply preceed
the command in question with "G1". Thus, "TLIB G1EBFL *.C" will
list the files that would be extracted by the "TLIB EBFL *.C"
command (Extract Browse-mode Freshen with the "L" search mode).
Note that this change represents a major overhaul of the guts of
TLIB, and a lot of new code. Please let us know if you encounter
any ideosyncracies!
2) Improved: The EBF (extract browse-mode freshen) commands are now
enormously faster, when TLIB is configured for project-oriented
operation. FASTEBFT is now (finally) obsolete!
In earlier versions of TLIB, the EBF commands were painfully slow
if you had a lot of files, and we had a separate program called
FASTEBFT.BAT/FASTEBFT.AWK to speed it up. That is no longer necessary.
3) Fixed: a bug in the handling of nested IF/ENDIF blocks in the TLIB
configuration file. This bug was introduced in a beta version of
TLIB; you could demonstrate it by making TLIB dump its configuration
information into a file, like this:
tlib -ctemp.tmp q
Then examine the contents of temp.tmp, looking for missing ENDIF's.
4) Changed: the display format when processing multiple files; the echoed
"fake command line" (that shows the file being processed) is now
preceeded by a blank line, instead of followed by one. This makes
the "L" (List versions) output look nicer. [Bill H.]
5.03b/á 26-Apr-96 (beta)
1) Fixed: a bug in 5.03a/á which broke the %tlibcfg:workdir:...% syntax
in the tlib.cfg file. [Joe G.]
2) Improved: a few messages.
5.03a/á 4-Apr-96 (beta)
1) Added: a variant of the SET configuration parameter, called LET,
which evaluates the right hand side of the assignment as an
expression before assigning it. The syntax is:
LET name=<expression>
where <expression> is a expression consisting of literal integers,
short literal strings, operators, and parentheses. Literal strings
can be surrounded by either 'single' (apostrophe) or "double" quote
marks, and can be up to 80 characters long (including the quote marks).
The following unary operators are supported:
OPERATOR RESULT TYPE OPERATION
- integer negate an integer
NOT 0 or 1 true if operand is zero
LC string convert a string to lower-case
UC string convert a string to upper-case
UNQ string "unquote" - remove the quotes from a string
LEN integer length of a string (including quotes, if any)
SIZ integer size of a file, or -1 if missing
NAM string "truename" - expand file name into full path
The following binary operators are supported:
OPERATOR RESULT TYPE OPERATION
+ integer addition of two integers
- integer subtraction
* integer multiplication
/ integer division
MOD integer remainder
AND 0 or 1 "1" if both operands are non-zero
OR 0 or 1 "1" if either operand is non-zero
< 0 or 1 numeric "less than" test
<= 0 or 1 numeric "less than or equal" test
> 0 or 1 numeric "greater than" test
>= 0 or 1 numeric "greater than or equal" test
== 0 or 1 numeric equality test
<> 0 or 1 numeric inequality test
EQI 0 or 1 string equality test (case-insensitive)
EQ 0 or 1 string equality test (case-sensitive)
NEI 0 or 1 string inequality test (case-insensitive)
NE 0 or 1 string inequality test (case-sensitive)
. string string concatination
³ SST string substring
SPL string "split" - get specified part(s) of a path\name
Evaluation of binary operators is strictly left-to-right, and all
binary operators have the same precedence. All unary operators have
the same precedence, too, but unary operators have higher precedence
than binary operators.
Note that multiplication and division do NOT have higher precedence
than addition, subtraction, and the compare operators. Thus, for
example:
EXPRESSION MEANS EVALUATES TO
1+2*3 (1+2)*3 9 (not 7)
1 < 2*3 (1<2)*3 3 (not 1)
- 1 + 2 (-1)+2 1 (not -3)
Strings and integers are generally interchangable. You can, for
instance, concatinate an integer to a string, and if a string
contains all numeric characters (and perhaps a leading minus sign)
then you can use the string in arithmetic expressions as an integer.
TLIB will convert automatically between strings and integers, as
necessary.
To force conversion of a number to a string, concatinate the number
to a 0-length string, like this:
let quoted120= '' . (12*10)
The result of the concatination has the quote-type of the left-hand
operand (apostrophes, in this example). To force conversion of a
string to a number, add zero to it or multiply it by 1, as in this
example:
let numeric120= 0 + ('12' . '0')
To include a quote mark in a string, quote it with the other kind
of quote mark. For example, the following example prints the same
line twice. Note that the expression assigned to MOTTO contains
both an apostrophe and two double quote marks. (The UNQ operator
and the SAY configuration parameter are explained below.)
let motto=UNQ ("Picard/Riker in '96." . ' "Make it so!"')
say %motto%
say Picard/Riker in '96. "Make it so!"
Most of the operators have obvious functions. However, a few of
the operators need some explanation.
The UNQ operator "unquotes" a string. The result is still a string,
but without the quote marks. Since every literal string includes the
surrounding quote marks as part of the string, if you want a string
without the quote marks then you must use the UNQ operator.
The LEN operator returns the length of a string, including the quote
marks, if any. If you want the length without the quote marks,
then use LEN UNQ (expression). For example:
let x=12345
let y=(len unq '%x%') - 1
say x=%x%, Log10(x)=%y%.something
³ The SST ("substring") operator returns a specified portion of a string.
³
³ The left operand of SST is the input string. The right operand is a
³ string containing a pair of integers, separated by a colon, like "0:1",
³ or else a single integer. The first (or only) number is the subscript
³ of the first character to be returned; the characters are numbered from
³ the left starting with 0, and also from the right starting with -1.
³ The second number (if any) is the desired maximum length of the result.
³
³ Quote marks are not automatically included in the result. Beware of
³ the fact that, using the SST operator, you can easily create strings
³ that have a quote mark at only one end of the string.
³
³ Examples:
³
³ "abcdef" SST '1:2' = ab
³ "abcdef" SST '-7:2' = ab
³ "abcdef" SST '0:3' = "ab
³ (UNQ "abcdef") SST '0:2' = ab
³ '' . ("abcdef" SST '1:2') = 'ab'
³ (UNQ "abcdef") SST '1:2' = bc
³ (UNQ "abcdef") SST 1 = bcdef
³ (UNQ "abcdef") SST '2:2' = cd
³ (UNQ "abcdef") SST 2 = cdef
³ (UNQ "abcdef") SST '2:999' = cdef
³ (UNQ "abcdef") SST -2 = ef
³ (UNQ "abcdef") SST '-2:1' = e
The NAM ("truename") operator expands a file name into fully-
qualified path and name. For example, if your current directory is
c:\work\hdr\ then:
NAM "myfile.x" = "c:\work\hdr\myfile.x"
nam "..\myfile.x" = "c:\work\myfile.x"
Beware that some network software has bugs that prevent the NAM
operator from working correctly for files on network drives.
The SPL (split path\filename) operator splits a DOS or OS/2 directory
path into parts, at the "\"s, and returns the specified parts. The
drive letter or "\\server\volume\" part is part number 0. The rest
of the parts are numbered two ways: with negative numbers, from right
to left; and with positive numbers, from left to right. Leading and
trailing slashes are removed, except on part 0. If a range of parts
is specified, then the intervening slashes are included.
The left operand of SPL is a string containing the path to be split.
The right operand is a string containing a pair of integers, separated
by a colon, like "0:1". As a shorthand, if both numbers are the same
(only one part of the path\filename is desired), you can just specify
a single integer for the right operand. E.g., specifying '0' for the
right operand is the same as specifying '0:0'.
Examples:
"d:\aaa\bbb\ccc" SPL '0:0' = "d:\"
"d:\aaa\bbb\ccc" SPL '0' = "d:\"
"d:\aaa\bbb\ccc" SPL 0 = "d:\"
"d:\aaa\bbb\ccc" SPL "-1:-1" = "ccc"
"d:\aaa\bbb\ccc" SPL -1 = "ccc"
"d:\aaa\bbb\ccc" SPL 3 = "ccc"
'd:\aaa\bbb\ccc' SPL 3 = 'ccc'
UNQ ('d:\aaa\bbb\ccc' SPL 3) = ccc
(UNQ 'd:\aaa\bbb\ccc') SPL 3 = ccc
(UC UNQ 'd:\aaa\bbb\ccc') SPL 3 = CCC
"d:\aaa\bbb\ccc" SPL -3 = "aaa"
"\aaa\bbb\ccc" SPL "0" = "\"
"aaa\bbb\ccc" SPL 0 = ""
"d:\aaa\bbb\ccc\" SPL 1 = "aaa"
"d:\aaa\bbb\ccc\" SPL -2 = "bbb"
"d:\aaa\bbb\ccc\" SPL 2 = "bbb"
"d:\aaa\bbb\ccc\" SPL '2:1' = ""
"d:\aaa\bbb\ccc\" SPL '1:2' = "aaa\bbb"
"d:\aaa\bbb\ccc\" SPL '-1:-2' = ""
"d:\aaa\bbb\ccc\" SPL '-2:-1' = "bbb\ccc"
"\\servr\sys\aaa\bbb\ccc\" SPL '-2:-1' = "bbb\ccc"
"d:\aaa\bbb\ccc\" SPL '0:-1' = "d:\aaa\bbb\ccc"
"d:\aaa\bbb\ccc\" SPL '0:-2' = "d:\aaa\bbb"
"d:\aaa\bbb\ccc\" SPL '0:1' = "d:\aaa"
"\\servr\sys\aaa\bbb\ccc\" SPL 0 = "\\servr\sys\"
"\\servr\sys\aaa\bbb\ccc\" SPL '0:-3' = "\\servr\sys\aaa"
"\\servr\sys\aaa\bbb\ccc\" SPL -3 = "aaa"
"\\servr\sys\aaa\bbb\ccc\" SPL -1 = "ccc"
"d:\aaa\bbb\ccc\" SPL '2:-1' = "bbb\ccc"
"d:\aaa\bbb\ccc\ddd" SPL '2:-1' = "bbb\ccc\ddd"
"d:\aaa\bbb\" SPL '2:-1' = "bbb"
"d:\aaa" SPL '2:-1' = ""
2) Added: support for user-generated warnings, via three new configuration
directives in TLIB.CFG:
SAY <message>
WARN <message>
ABORT <message>
Use the SAY parameter to display a message to the console (in the
Windows version of TLIB, the message goes in the Status Log). For
example:
say Please don't keep modules checked-out/locked for weeks at a time!
WARN is similar to SAY, except that a TLIB "ERROR: in configuration
file" message will also be displayed.
ABORT is just like WARN, except that TLIB will halt after displaying
the error message, rather than continuing.
Note that if you make your tlib.cfg SAY a message that begins with
"Note: ", "Warning: ", or "ERROR: " then command-line versions of TLIB
will colorize it and/or prevent it from scrolling off the screen
(according to how the COLORIZE and ERRORPAUS parameters are configured),
and Windows versions of TLIB will pop up the message in a dialogue
box for the user (as well as putting it in the status log).
For example:
say Note: Please don't keep files locked for weeks at a time!
3) Added: support for load-time conditionals in TLIB.CFG. The following
new configuration directives are provided:
IFF <expression>
ENDIF
IFF <expression>
ELSE
ENDIF
Note that the IFF/ENDIF and IFF/ELSE/ENDIF directives are quite
different from the IF/ENDIF construct. IF/ENDIF is used to specify
configuration parameters which pertain to files that match one or
more wild-card specs. An IF parameter's wild-card specification
is re-tested for each file that TLIB processes.
In contrast, the IFF/ENDIF and IFF/ELSE/ENDIF directives are processed
only as TLIB.CFG is being read. (For command-line versions of TLIB,
that means they are processed only when TLIB loads; however, TLIB for
Windows re-reads TLIB.CFG every time you change the current directory.)
In addition, IFF tests are conditioned upon Boolean expressions,
rather than upon wild-card specifications. Boolean expressions
are expressions of the sort used in a LET assignment, but with the
added constraint that the result must be numeric. Zero is taken as
"false" and non-zero means "true".
Example:
iff '%NECESSARY%'==''
warn Oh, dear! Environment variable %%NECESSARY%% is undefined!
endif
Example:
let ONE=5-4
iff %ONE%==1
say Hey, it works!
else
abort This is impossible!
endif
³ Example:
³
³ REM This example displays the current directory's path.
³ REM First, get "truename" of current directory:
³ Let currentdir=UNQ NAM ".\"
³ REM It may not have a trailing slash, so add one:
³ Let lastch= '%currentdir%' SST '-2:1'
³ iff ('%lastch%' NE '\') AND ('%lastch%' NE ':')
³ Let currentdir = UNQ ('%currentdir%' . '\')
³ endif
³ REM Display the result (and also workdir)
³ Say currentdir=%currentdir%, workdir=%tlibcfg:workdir%
Useful example:
REM Pull in "personal.cfg" from current or parent directory,
REM 0-3 levels up. First, find the personal.cfg. (If the file
REM does not exist, then the SIZ operator returns -1 for its.)
set pname='personal.cfg'
iff (SIZ %pname%) == -1
let pname='..\' . %pname%
iff (SIZ %pname%) == -1
let pname='..\' . %pname%
iff (SIZ %pname%) == -1
let pname='..\' . %pname%
iff (SIZ %pname%) == -1
set pname=''
endif
endif
endif
endif
iff '' eq %pname%
say Warning: personal.cfg not found, default config used.
else
let psize=siz %pname%
let fullpname=uc unq nam %pname%
let pname=unq %pname%
include %pname%
say Note: a %psize%-byte %pname% (full path %fullpname%) was loaded.
endif
Or, for something really obscure:
Rem Set %X% to any integer value:
let x=-46
Rem Then test the MOD operator:
let easyway= %x% mod 3
let hardway= %x% - (3*(%x% / 3))
iff %hardway% <> %easyway%
abort This is impossible!
else
say (%x% MOD 3) = %EasyWay% (the remainder left after %x%/3)
endif
4) Fixed: a bug that was introduced in TLIB 5.02f/á2 (beta), which could
cause false "bad dot command" errors during U (update) commands when
locking was enabled. [Rich W.]
5.02g/á2 26-Mar-96 (beta)
1) Added: support for the new NT351BUG configuration parameter.
When an application either closes a file or do a "file commit," the
operating system is supposed to update the directory information to
reflect an changes in file size and date. However, Windows-NT 3.51
has a bug which causes directory information to be incorrectly
reported for a varying period of time (typically 1-15 seconds)
after the file close or file-commit operation.
We paid Microsoft $150 for the privilage of reporting this bug, and
their response was that they had disabled file-commits for 16-bit
applications, as an "optimization," and they do not intend to fix
it in any NT 3.51 service pack. Believe it or not!
(Please, don't anybody tell them that they could optimize NT even
more, and make it go even faster, if they disabled writes, too.)
So, we have an experimental workaround now built into TLIB, to
use an open/lseek/close sequence to look up file lengths, rather
than the normal (and much faster) findfirst (directory look-up)
approach.
If you need to configure this option, TLIB will tell you so.
Otherwise, don't, since it adds significant overhead to some
operations. (This is in contrast to the NTFS35BUG parameter, which
adds very little overhead.)
To work around the bug in Windows-NT 3.51, and also a bug that was
present in NT 3.5, configure these two parameters:
NT351BUG Y
NTFS35BUG Y
The defaults are NT351BUG N and NTFS35BUG N.
2) This version also has some debug code in it that causes odd-looking
extra lines to be added to the journal file.
5.02g/á
1) Changed: the order in which TLIB opens files during a U (update)
command, so that it will abort the update if a reference copy of the
source file needs to be created but we can't open the reference copy
for writing.
The most common cause of this is that someone at another network
workstation is running a program (such as an editor or debugger)
that is keeping the reference copy open.
[Rob W.]
2) Added: Better diagnostics for some network errors.
5.02f/á2
1) Added: support for transparently handling DOS, Unix, and Mac-format
ASCII text files. As input to TLIB (for updates), any of the three
formats are now handled equivalently. For output (extracts), the
default is DOS format (CR+LF), but you can control this with the new
NEWLINE configuration parameter:
NEWLINE CRLF The default, DOS format (carriage return + line feed)
NEWLINE CR Mac format (carriage returns only)
NEWLINE LF Unix format (line feeds only)
Note: this only affects the operation of TLIB in FILETYPE TEXT mode.
If your TLIB library is in FILETYPE BINARY format, then the NEWLINE
configuration parameter is ignored, and no end-of-line translations
are done. Also, this only affects the handling of your text files;
TLIB's library files are still stored in DOS format (with CRLF after
each line).
There is one small side-effect to this new feature that may affect
some users of older versions of TLIB. TLIB now handles CR/LF,
LF alone, or CR alone in your text file as all being equivalent.
Earlier versions of TLIB handled CR/LF or CR alone as being
equivalent, but LF alone was handled as a plain text character.
So, if you had a file that contained a spurious line-feed character
somewhere, you may notice this difference in behavior, because if
you extract the file (TLIB E) and then immediately update (TLIB U)
TLIB will report that the file has changed! What happened is that
the line containing the lone LF character was seen as a single line
in the TLIB library and during the extract, but was split into two
lines during the update. If you let TLIB store the new "changed"
file, and then extract it again, you will find that your text file
now has a CR+LF (or whatever you configured for the NEWLINE parameter)
in place of the LF that it had there before.
Caveat: Ctrl-Z is still recognized as an end-of-file character, even
in Unix-format files. Ctrl-D is not recognized as special in any
way. So, if you have a file that contains a ctrl-Z character and
you don't want TLIB to truncate the file at that point, you must
configure FILETYPE BINARY for that file when you create the TLIB
library for it.
[several people]
2) Changed: some internals, for compatibility with the new Windows
version (currently in beta-test).
5.02e/á8
1) Changed: when -n{filename} on the command line is used with an E
command to extract into a temporary file, TLIB no longer changes
the work directory tracking file.
2) Changed: Increased the maximum possible length of the echoed
pseudo-command line that is shown when multiple files are being
processed (via wild-cards and/or file lists). This will prevent
truncation of the line when work directories and/or library file
directories are deeply nested.
3) Improved: several error and warning messages.
5.02e/á3
1) Changed: the behavior of TLIB when "QUERIES N" is configured, to
suppress a "Create a new branch?" question when a 2nd-level branch
version is about to be created.
[Richard B.]
2) Added: the ability to get the path\name of the tlib configuration
file(s), as if they were environment variables, from within the
configuration file(s), via the %tlibcfg:...% syntax. Two forms
are allowed: %tlibcfg:cfgfile% and %tlibcfg:curfile%.
For example, to display the path\name of the main configuration
file whenever TLIB starts, you could could configure:
numbanner 1
banner 1,"config file='%TLIBCFG:CFGFILE%'"
Even if you are using include directives, %TLIBCFG:CFGFILE% is
the name of the first/main configuration file, not the included
configuration file. To get the name of the current configuration
file, use %TLIBCFG:CURFILE%. For example, in a "master" tlib.cfg
intended to be included from other tlib.cfg files, you might
configure this:
numbanner 2
banner 1,"main/first config file='%TLIBCFG:CFGFILE%'"
set masterfile=%TLIBCFG:curfile%
banner 2,"master config file='%MASTERFILE%'"
Note the use of a temporary SET variable to store a copy of
%tlibcfg:curfile%. It is needed because by the time that TLIB
displays the BANNER, it is no longer reading configuration files,
so there is no "current" configuration file.
3) Added: additional "TREEDIRS Y" diagnostics to detect and report
situations in which a TLIBWORK.TRK file in the wrong directory
could otherwise cause TLIB to deduce an incorrect work directory.
E.g., if both the current directory and a parent directory contain
tlibwork.trk files, then TLIB will report an error (unless you
constrain where TLIB looks via the WORKDEPTH parameter, below).
4) Added: a new configuration parameter, WORKDEPTH nn, which can
be used to specify the minimum subdirectory depth for a work
directory. For example:
WORKDEPTH 0 (the default: work directories can be in or
below the root directory)
WORKDEPTH 1 (work directories must be at least 1 level below
the root directory)
WORKDEPTH 2 (work directories must be at least 2 levels below
the root directory)
5.02e/á
1) Added: another option suffix for the U (update) command. You can now
force creation of a branch version by adding a "B" suffix.
Obviously, it would make no sense to combine the "B" suffix (create
branch) with either the "S" suffix (specify new version) or the "M"
suffix (increment minor trunk version). So, that means there are
now four new TLIB commands:
UB - Update, forcing creation of a new branch version
UBK - Update, creating a new branch, and keep locked/checked-out
UBF - If source newer than library, then Update creating a new branch
UBFK - If source newer, then update to a new branch and keep locked
However, before you can use the new commands you must add them to
the "COMMANDS" configuration parameter in TLIB.CFG. The new version
of TLIBCONF (5.02e or later) will insert these automatically, but
if you are already using TLIB then it will be simpler for you to
just edit your TLIB.CFG file and add ",UB,UBF,UBK,UBFK" or
",UB/A,UBF/A,UBK/A,UBFK/A" to the end of the COMMANDS parameter.
(The "/A"s are overrides for the wild-card search modes, and are
recommended for the U commands if you use named project levels.)
[Randy L.]
2) Added: better diagnostics for a PC-NFS 5.01a network ideosyncracy.
[Steve K.]
3) Changed: TLIBX.EXE (the DOS-extended version of TLIB) is now using
version 3.2 of the Blinker DOS Extender.
4) Changed: the default for the ONETHREAD configuration parameter is
now ONETHREAD Y, to work around a severe performance problem in
Windows NT.
If you use TLIB2.EXE under OS/2 version 1.3, you'll probably find
that performance is improved if you configure "ONETHREAD N" in
TLIB.CFG. For OS/2 versions 2.0 and later, it doesn't usually seem
to make much difference which way it is set.
6) Changed: the way that TLIB parses a date/time string, to let you
optionally use a slash instead of a comma to separate the date
from the time. This is useful if you use the ES command with a
specified date/time in lieu of a version number, and you want to
pass the date/time to TLIB indirectly, as a parameter to a batch
file which invokes TLIB.
The problem is that DOS's obnoxious command.com converts commas
(and semicolons and equal signs) into spaces, so that (for example)
a date/time like "25-Dec-94,12:00:00" turns into two parameters,
"25-Dec-94" and "12:00:00" when you pass it to a .bat file.
So, if you need to do this, we now let you specify the date/time
as "25-Dec-94/12:00:00", so that command.com won't mangle it when
you pass it as a parameter to a .bat file.
[Steve D.]
7) Added: support for the new "-r" command-line option, to force
"TOPRELATI Y" for the remainder of the current command-line, only.
The -r option should be specified before the command you wish it
to affect. But if you use it in combination with the -q ("quiet")
or -d ("debug") option, then specify the -r after the -q or -d.
You can specify "-r" or "-r1" to force "TOPRELATI Y", when source
file paths are relative to the main work directory (instead of
relative to the current directory).
You can also specify "-r0" to force "TOPRELATI N", if the source
file paths are relative to the current directory rather than to
the work directory.
(Like the TOPRELATI configuration parameter, the "-r" option does
not affect the operation of TLIB unless the current directory is
unequal to the work directory.)
Note: The -r option is intended only for use with individual file
names, not with wild-card specifications.
Q: Do you run TLIB from another program under Windows or OS/2? Ask us
about beta-testing our new TLIB API, which is a version of TLIB that
is incorporated into a Windows or OS/2 DLL, with a simple API defined
so that your program can efficiently call it to do TLIB commands!
5.02d 30-Jan-95
1) Fixed: a bug which could prevent you from halting output by pressing
something other than a space at a "...press [spacebar] to continue..."
prompt, during display of a large delta (after you entered "?" to
the "Comment line?" prompt), or during the display of a long list of
version numbers.
2) Added: the "SMOOTH" option to CMPR 5.02, so that it can generate
more concise deltas for large (multi-pass) files in the ONEPASS,
INSDEL, SPERRY, IBMUPDATE, PANVALET, and LIBRARIAN output formats.
The SMOOTH option tells CMPR to "resynchronize" between passes, so
that the output does not show a bogus edit for lines that have
moved across the DIFFLINES-long line buffer boundary. This
effectively makes DIFFLINES vary from pass to pass, according to
the contents of the files, for files that are longer than the
configured DIFFLINES number of lines. The default DIFFLINES size
is 3000, so the SMOOTH option does not affect operation with files
that are smaller than that.
If you are using CMPR to generate TLIB-compatible deltas ("NORMAL"
mode), then you should not specify the SMOOTH option, since TLIB
uses only fixed-length pass sizes, and cannot handle the variable-
length pass sizes which result from the SMOOTH option.
Run CMPR with no parameters for help.
3) Fixed: a bug which could cause TLIB to hang if your file contained
a keyword flag followed by a format string that lacked a terminating
delimiter character, and we improved some related error diagnostics.
[Greg H.]
5.02c 23-Jan-95
1) Added: support for two new variants of the M (migrate) command, to
allow the user to override TLIB's determination of the most recent
common ancestor of the two versions to be merged.
The MSS (and MFSS) commands take four parameters:
TLIB MSS filename.ext toVer baseVer fromVer
For example, suppose that version 7 of myfile.prg is the latest
"standard" version, and version 7.(5)3 is a customized variant
of it. Now, suppose that you fix a bug in version 7.(5)3, and
store it as version 7.(5)4, but the bug was also present in the
standard version.
Of course, the problem would have been simpler if you'd put the
bug fix onto the standard version first, instead of the customized
version. Then you could have simply migrated all improvements to
date into from the standard version into the customized version.
Unfortunately, sometimes you may not have the luxury of making
that choice; if the customer has a "sev 1" problem, you may have
no choice but to first implement the fix in his customized version.
In that case you cannot use the old M or MS command to merge the
bug fix into version 7, because TLIB has no way of knowing that only
the last revision to this customized variant is applicable to the
standard version. If you were to do "TLIB MS myfile.prg * 7.(5)4"
then TLIB would add all the changes between versions 7 and 7.(5)4 to
the latest trunk version, with the result that the customizations
would also become part of the standard version (which is not what
you want).
Instead, you should use the MSS command, to tell TLIB that you
want only the changes between versions 7.(5)4 and 7.(5)5 added
to the standard version:
TLIB MSS myfile.prg * 7.(5)3 7.(5)4
The MFSS command is just like the MSS command, except that TLIB
will silently skip files for which no action was needed. That
doesn't do any good for the example above, but is can be useful
when the changes must be made to many files.
Suppose, for example, that lastweek.snp is a snapshot taken (with
the S command) of your customized project level before you made
an elaborate set of changes to many of the source files in the
customized level, to fix a complex bug. Also, assume that the
standard level's project level tracking file is f:\std\tlibwork.trk
and the customized level's project level tracking file is
f:\cus\tlibwork.trk.
You need to migrate that bug fix into the standard project level.
To do so, you would do the following command (while working at
the standard level):
TLIB MFSS *.* @f:\std\tlibwork.trk @lastweek.snp @f:\cus\tlibwork.trk
Or, if the standard version is always the latest trunk versions,
this does the same thing:
TLIB MFSS *.* * @lastweek.snp @f:\cus\tlibwork.trk
That tells TLIB to migrate into the current (standard) level all
changes made to the customization level since the lastweek.snp
snapshot was taken.
As with all of the Migrate commands, the result is a batch script,
MIGRATE2.BAT, which you must run to finish the migration. After
you have done so, you will be left with a set of checked-out files
which have had the needed changes made to them. If there were any
"conflicts" which TLIB's DIFF3 utility was unable to resolve (i.e.,
if your fix changed lines that were specific to the customized
version), then you'll have to resolve the conflicts manually. They
will be flagged in the source files with distinctive text lines,
"###Change collision detected" (or whatever you have configured for
the D3COLLIDE configuration parameter), so that you can easily find
them with TLIBSCAN or your favorite GREP utility.
A comparison between the M, MS, and MSS commands may be instructive.
They all do the same thing, except that with the MSS command you
must specify all three version numbers for the merge, but the MS
and M commands determine one or two of the versions for you
automatically.
With the MSS command, you specify a total of three versions, and
what is to be merged into the first of them is specified by a
pair of versions (baseVer and fromVer):
TLIB MSS filename.ext toVer baseVer fromVer
But with the MS command, you do not specifiy the base version; it is
determined automatically by TLIB as the most recent common ancestor
of the other two versions:
TLIB MS filename.ext toVer fromVer
The M command is similar to the MS command except that the version
into which the changes are to be added is not specified, either.
It is taken as being whatever version is current at the current
project level:
TLIB MSS filename.ext fromVer
2) Fixed: a bug related to the RELAXVERS parameter. If RELAXVERS Y
is configured, then you are allowed to skip version numbers. So
you could, for example, have a TLIB library containing a sequence
of versions like 1, 2, 4, 5, 5:1, 5:2, 7, etc. (in this example,
versions 3 and 6 have been skipped).
However, if you tried to extract version 5:* or 2:* (the most
recent minor revision of version 5 or version 2, respectively),
then previous releases of TLIB would fail with the following error
message, even when RELAXVERS Y was configured:
ERROR: No such version...
This is corrected in TLIB 5.02c, if RELAXVERS Y is configured.
[Ron S.]
3) Fixed: the broken "REPLROBR Q" configuration parameter.
[Matt H.]
4) Fixed: READONLYB Y was broken in the 1-user versions of TLIB 5.02b.
One symptom was the error:
ERROR: Could not replace myfile.ext because it is read-only.
[Greg A.]
5) Refined: the ERRORPAUS parameter. It can now cause a pause just
before TLIB exits, to give you time to read error messages, for
users who run TLIB from a batch file (since the next command in the
batch file could otherwise cause the error message to scroll off
the screen and be missed).
Also, if you configure QUERIES N but leave ERRORPAUS unconfigured,
the default is now ERRORPAUS 0 (pauses disabled). This will avoid
breaking some front-end programs and editor macros which configure
TLIB with QUERIES N because they depend upon TLIB never prompting
for user input.
6) Added: the EXITPAUSE parameter. If you want TLIB to always pause
before exiting, you can configure:
EXITPAUSE Y
The default is:
EXITPAUSE N
7) Added: "colorized" error and warning messages, and the COLORIZE
configuration parameter. By default, if ANSI.SYS support is
available, TLIB will now attempt to highlight error and warning
messages through the use of ANSI escape seqences to selecting the
colors. To disable this, you can configure:
COLORIZE N
To force TLIB to colorize error and warning messages, without
testing whether ANSI.SYS support is available, you can configure:
COLORIZE Y
The default is to check for ANSI.SYS support, and colorize only
if ANSI.SYS is loaded; this can be explicitly configured as:
COLORIZE Maybe
Note #1: TLIB also suppresses the ANSI escape sequences when in
SLICKEPSI mode; that is, when running in the "concurrent process
buffer" of the SlickEdit and Epsilon editors. So, an alternate
way to prevent colorization is to configure SLICKEPSI Y. This will
avoid warnings with older versions of TLIB that don't support the
new COLORIZE configuration parameter. However, this also affects
some other aspects of console I/O, since the SlickEdit and Epsilon
concurrent process buffers cannot support some operations (such
as single-character-at-a-time keyboard input).
Note #2: if you want a colored DOS prompt, but TLIB's ANSI escape
sequences interfere with it, there are two things you can do to
solve the problem:
a) You can simply disable TLIB's ANSI escape sequences, by
configuring COLORIZE N. Unfortunately, this will prevent
colorization of TLIB's error and warning messages.
b) To have colorized TLIB error and warning messages, and also
retain your colorful DOS prompt, you can set your DOS prompt
environment variable to select the prompt color of your choice,
use TLIB's BANNER configuration parameter to reset the screen
color to white when TLIB starts up.
Thus, your PROMPT setting in AUTOEXEC.BAT (and in CONFIG.SYS,
under OS/2) might be, for example:
Rem - bright, light blue prompt
PROMPT=$e[1;36m$d $t $p]
To your TLIB.CFG, add:
Rem - reset screen color to normal (white) at TLIB start-up:
numbanner 1
banner 1,"[0m"
Rem - (where "" is the escape character, ASCII 27)
º Or, (with TLIB 5.04f and later) you can use TLIB's COLOROFF parameter
º to reset your screen color to whatever you wish; the COLOROFF
º string will be output immediately following every colorized "ERROR:",
º "Warning:" or "Note:". For example:
º
º COLOROFF [1;36m
º
º The default is:
º
º COLOROFF [0m
5.02b 9-Jan-95
1) Added: a warning for when the TRACK Y is configured, and "a=y" is
specified for the current project level, and the NF command skips a
file because the library already exists, and yet the file is not
already listed in the current project level. (This situation may
result from a new library creation being aborted before TLIB gets a
chance to update the project level tracking file.)
[Tina L.]
2) Added: the ability to pause if an error or warning message has been
displayed, and the ERRORPAUS configuration parameter, which controls
this feature. Pausing after errors or warnings is intended to
prevent important messages from being overlooked because they
scrolled off the screen before being read.
To control this feature, configure ERRORPAUS to one of these four
settings:
ERRORPAUS 0 (disable pauses except in interactive mode;
this is the default if QUERIES N is configured)
ERRORPAUS 1 (pause if "ERROR" was displayed, but not for
| "Warning" or "Note"; was default until TLIB 5.03x)
ERRORPAUS 2 (pause if "ERROR" or "Warning" was displayed,
| but not for "Note"; this is the usual default)
ERRORPAUS 3 (pause for "ERROR", "Warning" or "Note")
ERRORPAUS 4 (pause after every screenfull of text, as in
interactive mode)
If you want to start a long job and return later to see whether
there were any errors, then you may prefer to configure ERRORPAUS 0
and simply redirect output into a file, for later inspection. TLIB
will detect the fact that output has been redirected, and error and
warning messages will be written to both "stderr" (usually the
console) and "stdout" (the file to which you have redirected output).
If, when you return, you see error messages on the screen, you can
inspect the file with your redirected TLIB output.
Note that the ERRORPAUS parameter only affects operation in "non-
interactive mode" (i.e., when all TLIB commands and parameters were
specified on the command line).
If you don't specify the TLIB commands and parameters on the command
line, then TLIB will operate in "interactive mode," and prompt you for
them. In this mode, TLIB always pauses after each screen of text,
even if there are no errors, and regardless of the ERRORPAUS setting.
The default is "ERRORPAUS 1", which pauses only for "ERROR" messages.
5.02a 6-Jan-95
1) Added: the MAKEDIRS configuration parameter, through which you can
tell TLIB to automatically create missing directories, as necessary,
in most circumstances.
To tell TLIB to create directories, configure:
MAKEDIRS Maybe
or
MAKEDIRS M
A few networks and operating systems may have bugs which cause
incorrect error codes to be returned under various circumstances,
such as when a file cannot be created because the directory is
missing. If "MAKEDIRS M" does not work for you, and you suspect
that this might be the reason, then you can try configuring:
MAKEDIRS Y
Configuring MAKEDIRS Y causes TLIB to assume that a missing directory
could be the true cause for a file-create to fail, even if an error
code was returned indicating some other cause. Do not configure
MAKEDIRS Y unless you suspect that your network or operating system
has this bug.
The default behavior for TLIB is not to create missing directories,
but to give an error message, instead. This is similar to what happens
if you configure:
MAKEDIRS N
The only difference between configuring MAKEDIRS N and leaving the
MAKEDIRS parameter unconfigured is that if MAKEDIRS is not configured
then TLIB can also display a "hint" when a file create fails due to
a missing directory. The hint suggests that configuring MAKEDIRS M
might solve the problem.
[Woody D., Mark V.]
2) TLIBX, the DOS-extended TLIB, is (finally) out of beta!
5.01p/á9 21-Dec-94 (beta)
1) Fixed: a bug which caused TLIB to get stuck in "interactive" mode
(i.e., with "...press [spacebar] to continue..." prompts) if, during
an update ("U" or "N") command with wild-cards, the user viewed
a delta by typing "?" at the "Comment line?" prompt, and the delta
was more than one screen in length. Thus, a "tlib u *.c" command
would scroll continuously for files with no changes, until the first
"...press [spacebar] to continue..." prompt during display of a
delta, and from then on TLIB would pause after every screenful.
5.01p/á8 19-Dec-94 (beta)
1) Fixed: a problem with "-d" debug output, which could cause a stack
overflow due to runaway recursion. Also, reduced stack usage a bit
in some circumstances, and increased the available stack slightly.
2) Fixed: a problem with interactive mode (with "press [spacebar]" prompts
every sheight lines) in the network versions of TLIB. This bug could
cause the L command to emit a bogus "bad dot command" error if you
pressed something other than the spacebar.
[Tina L.]
5.01p/á7 15-Dec-94 (beta)
1) Fixed: a confusing error message.
The situation is that READONLYB Y was configured, so "browse mode"
files (files that are not checked-out/locked) should be read-only.
Suppose that someone else has a file checked-out/locked, and you
attempt a browse-mode extract of the file, but for some reason your
existing copy of the file was not read-only (perhaps you did an
"attrib -r").
The misleading error message which TLIB used to give was:
ERROR: Browse mode extract can't be used to replace a
checked-out file.
The error message has been corrected to be:
ERROR: Browse mode extract can't be used to replace a
read/write file.
[David Br.]
5.01p/á6 9-Dec-94 (beta)
1) Updated: the DOS extender version used in TLIBX (the DOS-extended
TLIB). This fixes the problem with VCPI & XMS support.
[Adam V., Bob W.]
5.01p/á5 8-Dec-94 (beta)
1) Better diagnostics for the Windows-NT 3.5 problem which
configuring "NTFS35BUG Y" works around.
5.01p/á4 19-Nov-94 (beta)
1) Added: You can now configure "PROJLEV EQUALS" as the equivalent
of "PROJLEV =".
Why would you want to? Because you might want to configure
"PROJLEV %X%" and use a DOS environment variable to set X, but
DOS will not allow you to set an environment variable to "=".
You can put "set X==" in your TLIB autoset file, but you cannot
set a regular DOS environment variable that way. So, we now
allow you to configure "PROJLEV EQUALS", instead. [Erik R.]
2) Added: a configuration option, NTFS35BUG, to tell TLIB to work
around a bug in Windows-NT 3.5's NTFS file system. If you are
running Windows NT with an NTFS file system, either on your
workstation PC or your network file server, you should configure:
NTFS35BUG Y
This tells TLIB to do an explicit file-commit after appending
additional data to a file, such as a TLIB library. If this is
not done, then directory look-ups (find-first) sometimes report
the wrong file sizes for recently-closed files.
Note: do not configure both "NTFS35BUG Y" and "USEDUPHAN Y".
[Tim M., Larry F., Dean S., Mike L., Nina B., Brent H.]
3) Added: minor improvements to TLIBCONF.
5.01p/á3 27-Oct-94 (beta)
1) Improved: flexibility of allowed responses when asking whether to add
a module to a project level. You can now also press Enter (or Esc)
to skip the file entirely.
2) Fixed: another TLIBCONF bug that could cause "Out of memory" errors.
This is now TLIBCONF 5.01n/3.
[Steve H., Michelle W.]
3) Clarified: a misleading warning message (the "was changed" warning
that can be displayed by the UD command).
[Diana C. & Gary J.]
4) Added: The SHOWLNAME ("SHOW Library NAME") configuration parameter.
For more concise messages, you can now configure:
SHOWLNAME N
This inhibits display of library & lock file names in most common
TLIB messages. The default is still SHOWLNAME Y.
(See also the QUIET Y configuration parameter.)
[Diana C. & Gary J.]
5) Fixed: Changes in the status of files as the result of A, AX, and
AD commands were not always reflected in the set of files found by
subsequent commands that utilized the "T" and "A" search modes
(which search project levels), until you exited TLIB and then
restarted it.
For example, if you did an AX command to eXclude a file from
the current project level, and then did an LT command to list
the versions of files in the current project level, the excluded
file could be (incorrectly) found as one of the files in the
project level. For example, the following should not list the
versions of myfile.c, but it could do so in previous versions
of TLIB:
tlib ax myfile.c al myfil*.c
[Diana C. & Gary J.]
5.01p/á 3-Oct-94 (beta)
1) Improved: TLIB's configuration process for the LEVEL parameter, so
that you can override it with a later LEVEL for the same n=name.
This was done for a customer who needed a generic multi-level
TLIB configuration, which would be configured properly regardless
of whether the current directory was a "standard" directory or
a "customization" directory.
This customer has a half-dozen or so different products, each of
which gets slightly customized for each of perhaps as many as 50
or 60 customers. A particular developer may work on several
products, and on both standard and customized variants of each.
Warning: the following description of how we set up TLIB for this
customer assumes an intimate familiarity with TLIB's named project
level mechanisms. If you're new to TLIB, you'll probably find it
befuddling.
He has a work directory for each variant of each product, in a
tree like this:
c:\work\product1\std\ "standard" directory for product 1
c:\work\product1\cust1\ 1st customized directory for " "
c:\work\product1\cust2\ 2nd customized directory for " "
etc.
c:\work\product2\std\ "standard" directory for product 2
c:\work\product2\cust1\ 1st customized directory for " "
c:\work\product2\cust2\ 2nd customized directory for " "
etc.
The goal was to configure TLIB so that the current project level,
library path, etc. would all be deduced by TLIB automatically from
the current work directory, all with a single TLIB.CFG file. Here's
an excerpt from the TLIB.CFG file:
! Get the name of the current directory, and of the directory
! above it. The current directory is the customer name, and the
! directory above it is the product name:
set CUST=%tlibcfg:workdir:-1%
set PROD=%tlibcfg:workdir:-2%
! There must be an "ordinal.inc" file in each project level
! reference directory, which includes a single line like this one:
! set ORD=20
! That will set the branch number for customized versions of each
! module stored at that level. In effect, the ordinal is a customer
! number. We recommend that the ordinals NOT be adjacent integers.
! Instead, space them by 5 or 10 (e.g., use 5, 10, 15, 20, etc.)
! In the "standard" (%PROD%_std) levels, the ordinal should be:
! set ORD=1
include \\acme\sys\levls\%PROD%\%CUST%\ordinal.inc
! There is just one set of library files for all the customized
! (and std) variants of each product, of course:
path \\acme\sys\libs\%PROD%\
! The current project level is determined by the current directory:
projlev %PROD%_%CUST%
! The LEVEL line is very long. (In case it got truncated on your
! screen or print-out, it ends in "b=1 c=%!ORD% a=y")
level n=%PROD%_%CUST% d=\\acme\sys\levls\%PROD%\%CUST%\ i=%PROD%_std b=1 c=%!ORD% a=y
! Here's the tricky part. When the current directory is for one of
! the standard levels (i.e., %CUST%==std), the following LEVEL parameter
! replaces the previous level, and thus it avoids the circularity of
! "level n=xyz_std i=xyz_std ...", but if the current directory is any
! other level, the following LEVEL parameter just defines the standard
! level from which the current level inherits.
level n=%PROD%_std d=\\acme\sys\levls\%PROD%\std\ b=0 c=1 a=y
[Jeff M.]
2) Added: the "-s" option to WHEREIS v1.7, plus useful errorlevels. If it
finds one or more files, it returns errorlevel 0. If it finds no files,
it returns errorlevel 1.
Run WHEREIS with no parameters for help.
5.01n 29-Sep-94
1) Fixed: If, when you run TLIBCONF, you select "project-oriented"
or ISO 9001-style mode, TLIBCONF 5.01n/2 will configure the APX
command as "APX/L" (default search mode "L") rather than "APX/T".
The "T" search mode is not useful for the APX command, since it
would not find excluded files.
5.01n/á2 17-Aug-94 (beta)
1) Fixed: a bug which showed up if your work directory was a project level
reference directory. When updating a module which was not listed in
the current project level, but was listed in a parent level, the wrong
project level tracking file was being updated. The parent project
level tracking file was updated instead of the current one, even if
s=New was configured for the current project level. This has been
corrected.
[Gary K.]
2) Fixed: TLIBX 5.01n/á (the DOS-extended TLIB 5.01n/á) generated a stack
overflow error (or even re-booted the computer, in some environments).
[Bob W., et al]
However, there is still a problem in TLIBX.EXE, which (very rarely)
causes the computer to re-boot if used with a VCPI or XMS memory
manager. However, if it is used with a DPMI memory manager (such
as Windows or QEMM) then the problem does not occur. We've traced
the problem to a vendor library that we're using, and they've managed
to reproduce it, and we expect that they will correct it soon. Until
they do, however, we're still calling TLIBX a "beta" version.
Note that this problem will NOT affect you if you are using a DPMI
memory manager, such as Windows or QEMM.
3) Improved: TLIBCONF 5.01n, with improved messages and better tlib.cfg
output when ISO-9001 style project levels are picked.
4) Changed: the banner for the OS/2 & NT protected mode TLIBs, to show
the version number with a "/P" to distinguish them from the DOS TLIBs.
5.01n/á 28-Jul-94 (beta)
1) Improved: TLIB's "|more" functionality, in which output pauses after
every screen-full of text, when in interactive mode (i.e., when the
user has been prompted for input).
As before, if all the needed parameters are specified on the command
line, then this feature is disabled, so that you can use TLIB as a
strictly command line-driven program, such as in batch files, without
being prompted to "press [spacebar] to continue."
However, now TLIB has better handling of situations in which, for
example, a long menu-style prompt could cause an error message from
the previous command to scroll off the screen before the user had time
to read it.
[Gary J. & Diana C.]
2) Added: the ability to specify the command arguments along with the
command, when you are prompted by TLIB for a command. So, for instance,
you could enter "L myprog.c" to list the versions of myprog.c, instead
of just entering "L" and then responding to the "List versions of what
source file?" prompt.
[Gary J., Diana C.]
5.01m 06-Jul-94
1) Added: a feature which allows you to use pieces of your work directory
path at other places in your TLIB configuration file, in other
configuration parameters. (Note: your work directory path is usually
set automatically to be your current directory at the time you start
TLIB, though if TREEDIRS Y and/or WORKDIR is configured, there are
exceptions, as explained elsewhere in this document and the TLIB User
Manual.)
Thus, for example, if you have a large number of projects, you can
configure TLIB with a "generic" project level that is named the same
as whatever your current work directory is.
The syntax is an extension of the existing %TLIBCFG:WORKDIR% construct,
which lets you specify one or two numbers to select which parts of the
path you want.
Suppose that %TLIBCFG:WORKDIR% is "C:\WORK\ABOMB\". This path is
considered to have three parts: part #0 is the drive/root ("C:\"),
part #1 is the top subdirectory ("WORK"), and part #2 is the lower
subdirectory ("ABOMB").
The syntax to get specific parts of the path is: %TLIBCFG:WORKDIR:nn:mm%,
where nn is the number of the left-most part, and mm is the number of
the right-most part. (Also, if mm=nn, that is if you only want one
part of the path, you can leave out the ":mm".)
For example, if %TLIBCFG:WORKDIR% is "C:\WORK\ABOMB\" then:
%TLIBCFG:WORKDIR:0:0% = "C:\"
%TLIBCFG:WORKDIR:0% = "C:\"
%TLIBCFG:WORKDIR:1% = "WORK"
%TLIBCFG:WORKDIR:2% = "ABOMB"
%TLIBCFG:WORKDIR:1:2% = "WORK\ABOMB"
%TLIBCFG:WORKDIR:0:1% = "C:\WORK"
%TLIBCFG:WORKDIR:0:2% = "C:\WORK\ABOMB"
%TLIBCFG:WORKDIR% = "C:\WORK\ABOMB\"
You can also count the parts from the right-most, by specifying
negative numbers. The right-most (lowest level) directory is part -1.
This is useful when you want the current directory name, but don't
know how "deep" it is.
So for the example above, part 2 can also be specified as part -1,
and part 1 as part -2:
%TLIBCFG:WORKDIR:-2% = "WORK"
%TLIBCFG:WORKDIR:-1% = "ABOMB"
To experiment with this feature, use the BANNER or PROMPT to display
the results, like this:
set xxx=%tlibcfg:workdir:2:-1%
set yyy=%tlibcfg:workdir:-1%
numbanner 1
banner 1,"xxx=`%xxx%' yyy=`%yyy%'"
Then run TLIB to see what values xxx and yyy get.
WARNING: be sure that if you configure either TREEDIRS Y or WORKDIR,
you do so BEFORE any reference to %tlibcfg:workdir%, to ensure that
TLIB deduces the correct work directory!
Here's an example of how you might use this feature to set up a generic
project level, whose name was deduced from the name of your current
work directory:
set dir=%tlibcfg:workdir:-1%
level n=%dir% d=\\server\sys\levels\%dir% a=Y
projlev %dir%
! createtf y <-- this is optional
Here's a similar, but fancier configuration, which defines a generic
ISO-9001-style 3-level "promote" structure:
set dir=%tlibcfg:workdir:-1%
level n=%dir%_DEV d=x:\levs\%dir%\dev\ a=y f=y p=%dir%_TST i=%dir%_REL
level n=%dir%_TST d=x:\levs\%dir%\tst\ w=n f=y p=%dir%_REL
level n=%dir%_REL d=x:\levs\%dir%\tst\ w=n
! Developers set projlev like this:
projlev %dir%_DEV
! Testers should configure:
! projlev %dir%_TST
[Diana C., Gary J., David M.]
5.01L 17-Jun-94
1) Fixed: "ERROR: Out of memory." from TLIBCONF. The fixed TLIBCONF
displays version number 5.01L/2. The bug was present in TLIBCONF
5.01L, which shipped 6/14 through 6/16/94.
12-Jun-94:
2) Added: a new option for the LEVEL parameter. You can now configure
"w=N" to tell TLIB that this is a "non-writable" project level, at
which the U (update) and E (check-out for modification) commands are
prohibited.
This is provided for the convenience of users who must comply with
ISO 9001, which mandates a 3-level promote structure, and prohibits
direct updates to the upper levels. Under the ISO 9001 scheme, all
work must be done at the lowest project level, and then promoted to
the upper levels with the AP command.
The default, when w= is not specified, is w=Y (the level is writable).
Example:
TLIB.CFG contains:
LEVEL n=REL d=H:\TLIBLEVS\REL\ w=N
LEVEL n=TEST d=H:TLIBLEVS\TEST\ p=REL w=N f=Y
LEVEL n=DEV d=H:\TLIBLEVS\DEV\ p=TEST i=REL f=Y a=Y
In this example, DEV (the development level) is the "lowest" level
(with the highest version numbers), which is where the development
work is done. All Updates must be done at the DEV level. It
promotes to TEST and inherits from REL.
The "upper" levels (REL and TEST) are non-writable, because "w=N"
had been configured.
The "f=Y" used in this example means that the levels are "fully-
populated" (not sparse). See the manual for details about why you
might prefer sparse vs. fully-populated levels. Look in the index
under "sparse."
3) Added: TLIBCONF 5.01L can now configure TLIB for ISO-9001 behavior,
with a three-project-level promote structure, and with w=N configured
for the test and release levels.
4) Fixed: When a U (update) command is done but there are no changes, the
source file is normally changed from checked-out-for-modification/locked
to browse-mode (and set to read-only if READONLYB Y is configured).
This means that if there is a %l (lock status) keyword in the source
file, the source file needs to be refreshed so that the %l keyword
information reflects the changed lock status (unless you've configured
FIXKEYWD N). However, TLIB was not doing this. Now it does.
[Joe G.]
5) Changed: TLIB now opens the journal file in deny-write mode, rather
than deny-all (exclusive) mode. This should allow SCOPY to copy the
journal file even as TLIB is appending to it, and vice-versa.
5.01k 26-May-94
1) Fixed: a bug which caused incomplete lock status information to be
echoed to "standard error" if output was redirected. You can now get
a fairly concise lock status report from TLIB by redirecting output to
NUL, as in this example:
tlib t *.c,*.h >nul
2) Fixed: a bug in the LOGPREFIX configuration parameter, which caused
it to pad with garbage characters instead of blanks if the configured
column number was greater than 1.
This example will only work correctly in TLIB 5.01k and later:
logprefix 2,"{"
A workaround was to configure with leading blanks, and specify column 1.
This example is equivalent to the previous one, but it works correctly
in all versions of TLIB:
logprefix 1," {"
[Jason F.]
3) Fixed: a bug in the network version of TLIBX 5.01j/á1 (the beta DOS-
extended version of TLIB) which caused Novell Netware user ID lookup
to fail ("ID *NOVELL*"). We also probably fixed Artisoft Lantastic
user ID lookup ("ID *LANTASTIC*"), but that has not yet been tested.
Also, the beta DOS-extended version of TLIB now displays the amount
of available RAM.
The fixed version is TLIBX 5.01k/á1.
[Tom C.]
4) Improved: error reporting, for a strange network problem reported by
[Alain H.]
5) Fixed: a bug which caused "ERR: svLbSt" or "ERR: p2veF" when extracting
a specified version by date/time from a multi-pass library file.
[David R.]
5.01j 25-Apr-94
1) Fixed: A couple of subtle bugs caught by PC-LINT. Obviously, we'd not
been using PC-LINT frequently enough.
a) "AATTR S" and "AATTR R" configuration settings didn't work in 5.01i.
b) a possible bug in the c= option of the LEVEL configuration parameter.
PC-LINT is from Gimpel Software, Tel: 215-584-4261.
Address: 3207 Hogarth Lane, Collegeville, PA 19426.
PC-LINT is a superb product, a genuine must-have for every serious C
programmer. Plus, they now have a C++ version available (which we've
not tried).
5.01i 19-Apr-94
1) Added: code to work around a Netware 3.12 bug which prevented the
CREATETF Y configuration setting from working; instead, it displayed
"ERROR: Cannot open path\tlibwork.trk, error -30299,22,-30299".
[John W.]
2) Fixed: a bug which caused TLIB to exit after displaying the message,
"ERROR: truncation failed...". This problem was discovered by someone
running a beta-level Novell Netware requester with Windows-NT, under
which the standard file-truncation function, DOSNEWSIZE(), apparently
doesn't work.
This would not have been a serious problem, however, were it not for
the TLIB bug which caused TLIB to exit when this happened. This bug
has been corrected in TLIB 5.01i.
Before deleting lock files, TLIB truncates them to 0-length. This is
in case the user doesn't have file-delete permissions for the network
directory containing the lock files. So, if you do have delete
permission, it really doesn't matter if the file-truncate function
fails.
[Brian D.]
3) We've built a beta-test version of a DOS-extended TLIB, called
TLIBX.EXE, which is available to authorized TLIB beta testers for
download from our BBS, in the file TLIB501X.ZIP. (Call us if you
want to be a beta tester.)
TLIBX should work well in an environment in which there is at least
one megabyte of extended memory, and a DPMI, VCPI or XMS host (such
as under Windows, or with QEMM or 386MAX, or under plain DOS if
HIMEM.SYS is loaded).
Because it is a protected-mode program, TLIBX.EXE is better than
TLIB.EXE for handling very large files, without the possibility of
running out of memory.
Currently, TLIBX.EXE may be as much as 15-20% slower than TLIB.EXE
for some operations, except that with TLIBX.EXE you may be able to
avoid the use of MULTIPASS mode for large files (which slows TLIB.EXE).
We hope to resolve the performance problem soon, which will make
TLIBX.EXE more suitable for use as a general replacement for TLIB.EXE,
for people who need to manage very large files.
4) Added: Another new configuration parameter, FNAMECASE <U/L/A>, to
control the "case" (upper-case vs. lower-case) of file names. The 3
choices are:
FNAMECASE Upper - Force all file names to upper-case
FNAMECASE Lower - Force all file names to lower-case
FNAMECASE Auto - Behavior depends upon operating system
This affects the case of file names recorded in the journal file, and
the "%n" keyword, as well as the actual names used when creating files.
The default is FNAMECASE A.
If you have a case-sensitive network server (e.g., a Unix machine),
you may want to configure FNAMECASE U.
[Bob W.]
5) Fixed: A bug in the network version (only) of TLIB, which prevented
sharing error retries under some circumstances when doing an N or U
command. Instead, TLIB would just give an immediate "ERROR:" message,
such as:
ERROR: Cannot open "filename", error = 32,13,32.
or
ERROR: Cannot open "filename", error = 5,13,5.
The file that the open failed upon could be almost any file that TLIB
uses, including library files, lock files, reference copies of source
files, tracking files, and the journal file. This bug was introduced
with TLIB 5.01a, 9-Nov-93.
[David A.]
6) Changed: some error handling logic, so that the N and U commands will
abort without storing a new version if an error occurs while TLIB is
trying to open a tracking file. Also, improved some error messages.
[David A.]
7) Added: A new configuration parameter, USEUMBS <Y/N>, which controls
whether or not TLIB will attempt to "link" and use "UMBs" (Upper
Memory Blocks), if available, under DOS 5.0 and later. Upper Memory
Blocks are conventional memory areas between 640K and 1024K, which
are commonly provided on 80386 or better computers by programs such
as EMM386, 386MAX and QEMM.
There are two possible settings:
USEUMBS Yes - TLIB will link Upper Memory Blocks if they
are available. This is the default.
USEUMBS No - TLIB will not link upper memory blocks.
Note: Our CTMAP memory manager can also provide upper memory blocks
on some 80286 and 80386 computers which use Chips & Technologies
chipsets; see CTMAP09C.ZIP. However, CTMAP's UMBs are always
"linked" and available, so they are unaffected by the TLIB "USEUMBS"
configuration parameter.
The USEUMBS parameter is ignored in protected mode: by OS2TLIB under
OS/2 or Windows-NT, and by TLIBX (the DOS Extended TLIB) when DPMI,
VCPI or XMS extended memory is available.
By default, if TLIB runs low on memory under DOS 5.0 or later, it will
ask DOS to "link" any available upper memory blocks, thereby making
them available as normal DOS memory to programs like TLIB. When TLIB
does this, it displays a message:
*** UMBs linked ***
For most users, this is good: it means that TLIB has additional memory
that it can use when processing large files.
However, if you have a problem with badly interacting programs, that
you suspect might be a memory usage conflict, especially when running
a DOS "task switcher" or similar program, you may wish to configure:
UseUMBs N
This will prevent TLIB from attempting to use Upper Memory Blocks.
(You can also accomplish the same thing by using DOS's SETVER command
to make TLIB think it is running under DOS 4.)
[Bobby P.]
5.01h 7-Mar-94
1) Added: A new configuration parameter, READONLYT <Y/N/W>, to control
whether or not TLIB will set tracking files (tlibwork.trk) to read-only.
There are three possible settings:
READONLYT Yes - TLIB sets all tracking files to read-only
when not open. This is the default.
READONLYT No - TLIB does not set tracking files to read-only.
READONLYT Workdir - Only work directory tracking files will be
marked read-only. Project level tracking files
will be left writable.
This parameter is intended for use with the network edition of TLIB
when used with Sun PC-NFS, since apparently with PC-NFS only the
"owner" of a file can change the file from read-only to read-write.
{Note: if you configure READONLYT W, then you may also need to
configure READONLYB W, a new option added in TLIB 5.04. 9/25/96}
This parameter can also be used to work around a bug in some versions
of Novell Netware. This Netware bug causes files to lose their
"sharable" attribute (which you set with Novell's FILER utility)
whenever a program (such as TLIB or DOS's ATTRIB command) changes the
read-only attribute. See READ_ME.TOO for details (READ_ME.TOO is
included with the network editions of TLIB).
[Bob W.]
2) Changed: TLIB's U (update) command. Formerly, the U command could,
when no new version needed to be created (because there were no changes),
close the library file and then immediately reopen it to change the
date/time stamp, unless TOUCHU N was configured.
Aside from a miniscule performance degredation, this didn't cause any
problems, except that we suspected that it uncovered what may be a bug
in Microsoft's alpha pre-release "Chicago" operating system, that
caused the protected-mode TLIB (when run under NT and accessing the
library files over a network) to display a dire-looking message similar
to this:
ERR: 0020h=DOSSETFILEINFO(3,1,4027:F940,12)
...which just meant that TLIB could not adjust the date/time of your
library file.
TLIB 5.01h has been changed to avoid the extraneous close/reopen
(and also to provide a better error message if DOSSETFILEINFO failed).
Unfortunately, this change apparently doesn't avoid the "Chicago" bug.
[Martin H.]
3) Added: the new SETFTIMEW configuration parameter, mainly for use when
running TLIB under MS-DOS in an OS/2 VDM. Configuring SETFTIMEW Y
tells TLIB that a file must be open with write access if its date/time
is to be changed.
SETFTIMEW N - normal
SETFTIMEW Y - write access is required to set a file's date/time
Note: TLIB will tell you if you should configure this parameter.
[Kurt W.]
4) Changed: the way that TLIB parses configuration parameters, so that
you can have an "_" (or "=") following the parameter name, instead of
a blank, if you wish.
This adds convenience when specifying configuration parameters on the
command line, so that you needn't put simple configuration parameters
in quotes. For example, the following are now equivalent:
TLIB c filetype_binary n myfile.dat
TLIB c "filetype binary" n myfile.dat
Using "_" to avoid typing a blank and quote marks only saves a couple
of keystrokes when typing. However, it avoids problems when passing
TLIB configuration parameters to .bat files, since DOS's command
processor strips off quote marks in .bat file parameters.
The "=" (as a third alternative to a blank or "_") is allowed because
we've observed a tendency for users to get confused and use "=" instead
of a blank. However, it has the same problem that quote marks have:
when passed as a .bat file parameter, "=" gets stripped off by the DOS
command processor.
5) Added: a new option for the SLASHCONT configuration parameter:
SLASHCONT Maybe
You can configure "SLASHCONT Maybe" (or just "SLASHCONT M") if you
don't want to have to enter a backslash at the end of to-be-continued
comments, except for comments specified on the command line.
Like SLASHCONT Y (the default), this lets you run "TLIB U" or "TLIB N"
with a comment on the DOS (or OS/2 or NT) command line, and not be
prompted for additional comments for each file (unless the command-line
comment ends in "\").
However, like SLASHCONT N, this lets you interactively enter multi-line
comments which are terminated by a blank line rather than needing
backslashes at the ends of every line except the last one.
There are three cases:
1) You specified a comment on the command line, with no backslash
at the end.
You'll be prompted for additional comments only if SLASHCONT N
is configured.
2) You specified a comment on the command line, with a backslash at
the end.
You'll be prompted for additional comments regardless of how
SLASHCONT is configured. (But if SLASHCONT N is configured, the
backslash becomes part of the first comment line.)
3) You did not specify a comment on the command line.
You'll be prompted for additional comments regardless of how
SLASHCONT is configured.
Similarly, there are three cases when entering additional comments:
1) You entered a comment line with no backslash at the end.
If SLASHCONT N or SLASHCONT M is configured, then you'll be prompted
for additional comment lines. But if SLASHCONT Y (the default) is
configured, this will be taken as the last comment line, and the
U or N command will finish.
2) You entered a comment line with a backslash at the end.
You'll be prompted for additional comments regardless of how
SLASHCONT is configured. (But if SLASHCONT N or SLASHCONT M is
configured, the backslash will become part of the comment line.)
3) You entered a blank line.
If SLASHCONT Y (the default) is configured, this aborts the update.
If SLASHCONT N or SLASHCONT M is configured, then this aborts the
update only if this is the first/only comment line; otherwise, it
terminates comment-entry, and causes the U or N command to finish.
Summary:
default
SLASHCONT <Y/N/M> | Yes | No | Maybe
------------------------------------------------+-------+------+--------
Requires "\" to continue interactive comments? | yes | no | no
Allows mass wild-card updates w/o prompts? | yes | no | yes
We suspect that most users will prefer SLASHCONT Y (the default, "yes")
or SLASHCONT M ("maybe"), rather than the old SLASHCONT N ("no").
[Bob W.]
6) Changed: TLIB's errorlevel return value when processing multiple files
(via wild-cards and/or file lists) to the the maximum of the errorlevels
which would have been reported for any of the individual files, had such
a file been processed by itself (without wild-cards).
This has the effect of ensuring that if an error occurred for any of
the processed files (and the error was severe enough to have caused a
non-zero error level), then the errorlevel will be non-zero.
In previous versions of TLIB, except for the "T" (test lock) command,
the errorlevel was not meaningful unless only one file was specified.
[Kurt W.]
7) Changed: the way that TLIB "deletes" lock files when the network does
not allow delete permission. This should now result in 0-length lock
files instead of lock files containing the special name, "anyone".
Also, we changed the "C" (checked-out) and "O" (own checked-out) wild-
card search modes to ignore 0-length lock files.
8) Improved: error messages when an illegal LEVEL configuration parameter
is specified in tlib.cfg.
9) Added: support for two new options on the REPLROBR ("replace read-only
browse") configuration parameter, to allow replacement of read/write
source files if they aren't checked-out/locked by the current user ID:
REPLROBR Querywritable
REPLROBR Writable
Normally, for silent replacement of browse-mode files, you would
configure READONLYB Y and REPLROBR Y, and then TLIB's "E" (and "EBF")
commands will silently replace those files that have the read-only
attribute set, and that are not checked out to the current user ID.
"REPLROBR Querywritable" (or "REPLROBR Q") is similar to REPLROBR Y,
but if a source file that the user doesn't have checked-out/locked is
writable, the user is asked whether or not he wants to replace a
read/write source file. READONLYB Y must be configured to use this
option. Read-only source files are silently replaced, just as when
REPLROBR Y is configured.
"REPLROBR Writable" (or just "REPLROBR W") now lets TLIB replace
writable browse-mode files without complaint, when READONLYB N is also
configured.
(It is also possible to force silent replacement when extracting if
you configure REPLACE Y or REPLACE A, but that is dangerous and we
strongly recommend against it.)
If for some reason you don't wish to configure READONLYB Y, you can
configure REPLROBR W ("writable"), and TLIB's extract commands will
silently replace files that you don't have checked out, even if those
files are not read-only.
BEWARE: if you configure REPLROBR W, then TLIB's determination of
whether or not it can silently replace a file is made solely on the
basis of whether or not YOU have the file checked out. Plus, if you
have configured LOCKING B (per-project-level locking), then the
determination only considers locks at the current project level.
TLIB's check-in/out locking mechanism does not keep track of which
computer or directory the files have been extracted into, so if you
configure REPLROBR W and you use a different user ID, or if you've
configured LOCKING B and have a file checked out at a different project
level, you may accidentally replace checked-out files! Therefor, if
you configure REPLROBR W, it is CRITICALLY IMPORTANT that you only
use one user ID when working in a given work directory, and that
you also use a different work directory for each project level if you
configure LOCKING B (per-project-level locking).
The allowed REPLROBR and READONLYB parameter settings are now:
REPLROBR <Y/N/Q/W>
READONLYB <Y/N>
This table relates the REPLROBR and READONLYB setting combinations
that make sense together:
REPLROBR setting READONLYB must be Silent replacement?
N either No
Y Y if read-only & not locked by you
Q Y if read-only & not locked by you
W N if not locked by you
For most network edition users, REPLROBR Y and READONLYB Y are still
the best choices.
[David A., Mike C.]
10) Added: a facility to "dump" most of TLIB's configuration data into
a file, so that you can see the result of the environment variable
substitutions, include directives, etc..
The "-cfilename" option writes the configuration information to filename.
--------
Example:
tlib -cmyfile.txt q
...runs TLIB, writes the configuration data to myfile.txt, and then
exits to the operating system. ("Q" is "quit").
Note: The configuration parameters that TLIB dumps are the ones that
you can reference as pseudo-environment variables in the configuration
file via the %tlibcfg:parametername% syntax.
Note that empty/do-nothing if/endif blocks in your configuration file
will not appear in the dumped configuration data. For example, if you
configured:
if *.c,*.h
track y
endif
track n
...then the if/endif block does nothing, so TLIB ignores it.
[Kurt W.]
11) Fixed: a misleading message. When the T command was used with the
default "C" (checked-out files) wild-card search mode, and none of
the specified files were checked out (so that no lock files were
found), it is not an error condition; it just means that none of the
specified files were checked-out and locked. However, TLIB was
displaying the following error message:
ERROR: No lock files found for: "filespec".
This was especially confusing for file lists:
ERROR: No lock files found for: "@myfiles.lis".
Beginning with version 5.01h, TLIB no longer displays the word "ERROR"
under this circumstance.
[David T.]
5.01g 24-Jan-94
1) Fixed: a bug which could cause an "ERR: ddvdl" when doing a U (update)
command when there were no changes to the source file, and tracking was
enabled, and the current version was not the last version in the TLIB
library. [Jeff D.]
2) Added: a helpful display of the old and new file dates when TLIB asks
if you want to replace an already-existing source file during an E
(extract) command, and a warning if you are about to replace a newer
file with an older one. However, this feature is disabled if you
configure OLDDATE N (since the dates are of little significance then).
[Tom L.]
2) Fixed: bugs in TLIBCONF 5.01e. One bug caused it to fail with an "Out
of memory" error if, in answer to question 10, you specified a libraries
directory on drive "D:". Another could cause protection exceptions
under OS/2 or NT, or hangs under DOS, if you specified a libraries
directory with no drive letter. The fixed version is TLIBCONF 5.01f.
[Russ VZ.]
3) Improved: error handling in TESTLOCK, when a directory was specified with
no trailing backslash. The improved version is TESTLOCK 1.06.
5.01f 12-Jan-94
1) Fixed: a bug in the 1-user versions of TLIB 5.01d and 5.01e, which broke
the "S" (snapshot) command. Symptoms were protection exceptions (in
protected mode), "ERROR: invalid version number" messages, and bad
snapshot files.
This bug only affected the 1-user versions; the network versions were
fine. Consequently, the network versions of TLIB 5.01e and TLIB 5.01f
are identical except for the version number displayed.
[Russ VZ., Dov]
5.01e 7-Jan-94
1) Fixed: TLIB was allowing users to enter comments containing ctrl-Z
characters, and TLIB stored them along with the rest of the comment.
However, ctrl-Z is the DOS end-of-text-file character, and so if there
is a ctrl-Z in a text-format TLIB library, TLIB stops reading it at
that point. The user sees the following error:
ERROR: The TLIB library (junk.tlb) may be damaged. It contains a
ctrl-Z at offset nnnn (mmmm bytes before end-of-file).
Continue?
...where nnnn is the file-offset of the ctrl-Z character.
If you encounter this problem, you can solve it by editing your TLIB
library file with a text editor, and deleting the ctrl-Z character from
the .V or .N comment line.
TLIB 5.01e avoids the problem by checking for and removing ctrl-Z
characters from the comments that you enter.
[Dov]
5.01d 21-Dec-93
1) Fixed: a rare but very nasty bug that could result in two ".1" branch
versions being created with identical version numbers. This is a very
severe problem because the second version cannot be retrieved (except
by patching the library file)!
Although this was (in its effects) the worst TLIB bug we'd seen in a
long, long time, it was also very unusual, because of the combination
of events necessary to trigger it:
The problem occurred only for large files, when the library file was
2 or more "passes" (e.g., a text file of more than MAXLINES/PASSSIZE
lines); and only when the first pass had no changes (i.e., the first
change in the file was at or after the MAXLINE-th line); and TLIB was
automatically creating a new ".1" branch; and another ".1" branch
already existed.
This bug has been fixed (and if anyone encounters it and needs help
recovering their data, they can call us for how to patch up the library
files.) [John M.]
2) Fixed: a message with an embedded (ASCII 1) character in it.
3) Added: a new option for the LEVEL parameter. You can now configure
"c=nnn" (where nnn is an integer) to tell TLIB what branch number you
prefer be used when TLIB is creating a new branch version. The "branch
number" is the (parenthesized) number of the branch, not the number of
the version within the branch.
If TLIB creates a new branch to store a new version of any file for
this project level, TLIB will try to use nnn as the branch number (or,
if branch nnn already exists, TLIB will create the next-higher unused
branch version number).
This is for aesthetics; by using the c= option, you can make all the
branch versions for a particular level share the same branch number
(though the branches may still sprout from different trunk versions).
You may want to use this in combination with the b= option (which
forces branch creation).
Example:
TLIB.CFG contains:
LEVEL n=STD d=H:\TLIBLEVS\STD\ a=Y
LEVEL n=CUST1 d=H:TLIBLEVS\CUST1\ i=STD b=1 c=10
LEVEL n=CUST2 d=H:TLIBLEVS\CUST2\ i=STD b=1 c=20
If the current version of FOO.C is 7, and you customize it for
level CUST1, then the new version created by the "U" (update)
command would (by default) be 7.(10)1, instead of 7.1 [which is
equivalent to 7.(1)1, since the default branch number is "1"].
5.01c 15-Dec-93
1) Improved: a slightly confusing TLIB error message.
2) Improved: TLIBCONF 5.01e. It now offers to configure TLIB to use a
project-oriented mode, in which most commands default to using the
project-level search modes for file names and wild-card specs.
Also, TLIBCONF now checks whether or not your specified library file
PATH is to an existing directory, and if not then TLIBCONF will offer
to create the directory for you.
Also, if you have an Artisoft Lantastic network, TLIBCONF will offer
to configure "ID *LANTASTIC*", so that TLIB will look up your user
name from your Lantastic log-in name.
3) Added: a program called TESTLOCK (or TESTLOKR) 1.04, to test your
network's file-sharing, region-locking, and file-commit support.
Although this is pretty basic stuff, TESTLOCK uncovers network or
Operating System bugs on quite a few systems! See TESTLOCK.TXT or
TESTLOCK.DOC (in the TESTLOCK.ZIP archive) for more information.
4) Added: COMPAR.BAT, to compare 2 versions within a TLIB library, or to
compare a file with an old version.
5) Improved: COPYTRAK 5.01a, to enable it to read a tracking file which
TLIB has open.
6) Improved: COPYTRAK 5.01a, by adding the -q option (which suppresses
the copyright banner).
7) Added: FASTEBFT.BAT and FASTEBFT.AWK (pronounced "Fast E B F T"), which
can be used to dramatically speed up the "TLIB EBFT *.*" command.
The EBFT command is used in networked environments when a fully-populated
named project level is in use, to refresh any out-of-date browse-mode
files that you may have:
TLIB EBFT *.*
You might want to do this, for example, when you are about to run MAKE
to rebuild your programs.
Unfortunately, the current implementation of TLIB's EBFT command is
rather sluggish when there are a lot of files (it spends about 60
milliseconds per source file on a 33 MHz 80486). So, if you have 1000
source files, it could take a full minute to run the EBFT command -
even if no files needed to be refreshed.
To speed up the process, use the following sequence, instead:
FASTEBFT d:\leveldir\TLIBWORK.TRK
IF EXIST .\FASTEBFT.LIS TLIB EBFL @FASTEBFT.LIS
For large numbers of files, this is 5-8 times faster!
Limitations:
a) This only works if you are using named project levels (a.k.a.
"advanced version tracking").
b) The d:\leveldir\TLIBWORK.TRK specified should be the tracking file
for the current project level, as specified in your PROJLEV
configuration parameter. FASTEBFT.BAT doesn't read your TLIB.CFG
file, and so doesn't know what the current project level is.
c) You need AWK. The Duff AWK that you got with TLIB will work fine,
but Thompson AWK is even faster.
d) OS/2 users can rename FASTEBFT.BAT to FASTEBFT.CMD. However, if
you run a DOS version of AWK (such as Duff AWK), then you won't
see the output messages from FASTEBFT.AWK. To rectify this, you
can use .bat script tricks:
i) Create a RUNDOS.BAT file containng this one line:
%1 %2 %3 %4 %5 %6 %7 %8 %9 >stdout.tmp
ii) Copy FASTEBFT.BAT to FASTEBFT.CMD
iii) Edit FASTEBFT.CMD, changing the "AWK" command line to run
"RUNDOS AWK" instead instead of just "AWK", and adding the
following 2 lines after the "RUNDOS AWK" line:
type stdout.tmp
del stdout.tmp
e) FASTEBFT won't work if your current project level is "sparse"
(i.e., if some of the files in the current project level are just
inherited from another project level, rather than actually being
listed in the current level's tlibwork.trk file).
f) FASTEBFT needs the new 5.01a (or later) version of COPYTRAK.EXE.
Note: It is our hope to eventually make FASTEBFT obsolete, by speeding
up TLIB's EBFT command. [Rob R.]
5.01c/á2 07-Dec-93 (beta)
1) Added: a "critical error" handler, to avoid Abort/Retry/Fail errors.
5.01c/á 22-Nov-93 (beta)
1) Fixed: a bug which could cause:
ERROR: couldn't determine full path of ".\\mydir\subdir\myfile.ext"
(followed by several other error messages)
The problem occurred when using wild-card specifications with the L
(library files) search mode, when TREEDIRS Y was configured and the
current directory was a subdirectory of the main work directory, and
a full source file path was specified.
2) Fixed: a bug in wild-card handling when TREEDIRS Y was configured
and the current directory was a main (top) project level reference
directory.
In this situation, the A and T search modes (which search against the
project level) should have been able to find all files in the tree of
subdirectories unless a specific directory was specified.
Thus, for example, if the current directory is the main/top directory
in the project level's directory tree, then:
TLIB EBFT *.* (should refresh all directories in the tree)
TLIB EBFT .\*.* (should refresh only the top directory)
However, this was broken; both forms found only the files in the
top/current directory.
This bug has been fixed.
3) Added: the new FIND1FILE configuration parameter. If you configure:
FIND1FILE Y
then TLIB will handle even exact file names as if they were wild-card
specifications.
This means that if you are using TREEDIRS Y and a named project level,
and the file is listed in the project level tracking file as belonging
in a subdirectory, and the current directory is the main (top) work
directory, then with every wild-card search mode except W (work file),
TLIB will translate the file name according to the current project
level, adding a subdirectory specification if necessary.
Thus, as long as the current project level tracking file lists
"SUBDIR\MYFILE.C", it is not necessary to specify the subdirectory
when extracting SUBDIR\MYFILE.C:
TLIB E MYFILE.C (extracts .\SUBDIR\MYFILE.C)
Examples, with FIND1FILE Y configured:
TLIB E MYFILE.C (extracts .\SUBDIR\MYFILE.C)
TLIB E SUBDIR\MYFILE.C (extracts .\SUBDIR\MYFILE.C)
TLIB E .\MYFILE.C (extracts .\MYFILE.C)
Examples, with FIND1FILE N (the default) configured:
TLIB E MYFILE.C (extracts .\SUBDIR\MYFILE.C)
TLIB E SUBDIR\MYFILE.C (extracts .\MYFILE.C)
TLIB E .\MYFILE.C (extracts .\MYFILE.C)
Warning: if the current project level contains several files of the
same name (in different subdirectories), the L, C and O search modes
will retrieve only one of them.
[Jim S.]
4) Added: the ability to configure the default wild-card search mode for
any TLIB command, via an extension to the COMMANDS parameter syntax.
To override the default wild-card search mode for a command, simply
edit the COMMANDS parameter in tlib.cfg, adding "/x" to the command,
where "x" is one of the six legal wild-card search modes.
For example, if your configured COMMANDS was:
COMMANDS U,UK,US,UD,UKM,UKS,E,ES,EB,...
Then you could change the default wild-card search mode for the various
U (update) commands to "O" ("owned" files) by adding "/O" to each
command, like this:
COMMANDS U/O,UK/O,US/O,UD/O,UKM/O,UKS/O,E,ES,EB,...
A future TLIBCONF will utilize this facility to optionally configure
TLIB to be more "project oriented." That is, it will make the default
search mode for most commands be "T" or "A" (to search the project
level), and you'll need to first add your source files to the project
level via the "A" command before you can extract and/or update them
(unless you override the search mode).
5) Added: the ability to continue the COMMANDS configuration parameter
onto additional lines in the configuration file, by adding a trailing
backslash ("\") character.
COMMANDS is the only configuration parameter which can be continued
in this way.
Input lines in TLIB's configuration file should never exceed 254
characters in length. However, it is possible for a COMMANDS parameter
to be too long to fit on a 254-character line, so we've added a way
to extend it to the desired length.
For example, these two COMMANDS parameters are equivalent:
COMMANDS U/O,UK/O,US/O,UD/O,UKM/O,UKS/O,E,ES,EB,EBS,L,T,H,Q
COMMANDS U/O,UK/O,US/O,UD/O,UKM/O,UKS/O\
,E,ES,EB,EBS,\
L,T,H,Q
Note that leading whitespace (tabs and/or blanks) is ignored on the
continuation lines.
Important: as listed in the COMMANDS configuration parameter, the TLIB
commands must have their suffix characters in alphabetical order.
Thus, this is okay:
COMMANDS U/O,UK/O,US/O,UD/O,UKM/O,UKS/O,E,ES,EB,EBS,L,T,H,Q
but this is in error:
COMMANDS U/O,UK/O,US/O,UD/O,UMK/O,UKS/O,E,ES,EB,ESB,L,T,H,Q
because UMK should be UKM, and ESB should be EBS.
Unfortunately, the current edition of TLIB doesn't do much validity
checking of the COMMANDS parameter, and so will not detect this error.
6) Added: code to look-up a Lantastic user name for utilization as a TLIB
user ID.
To try this out, use the CW (configure WHO) command:
TLIB CW *LANTASTIC*
Or configure:
ID *LANTASTIC*
Caveat #1: If you are logged into two different servers with two
different user names, there currently is no way to predict which user
name will be returned. Please tell us if you'd like a way to do this.
We think we know how to do it, but we'll need a Guinea pig to test it.
Caveat #2: Lantastic does not (currently) support OS/2 or Windows-NT,
so this feature is for DOS (real-mode) only.
[David D., Ron T.]
7) Fixed: a bug which could cause "ERR: insr".
[Ronald C.]
5.01b 17-Nov-93
1) Fixed: a bug in TLIB 5.01a which caused:
ERROR: No such version in path\libfile.ext: "1".
This could also be followed by either or both of the following error
messages:
ERROR: keyword and/or logflag info in myfile.ext was not updated
because it could not be written.
ERR: OpenInp(path\libfile.ext) w/ old handle=nn.
This happened when a new TLIB library file was created for a large
(multipass) source file, if the source file contained keywords and/or
a revision history block, or if TLIB needed to create a reference copy
of the source file in a project level reference directory.
The error occurred after TLIB had updated the library file, while TLIB
was preparing to refresh the source file (to update the keywords or
revision history), or to create the reference copy of the source file.
2) Changed: the date,time format in a TLIB library to pad the hours and the
day-of-the-month to be two digits, so that listed versions line up better.
[Rob R., etc.]
3) Fixed: an obscure bug in the UD (discard changes) command, which could
cause the wrong message to be generated if for some reason TLIB was
unable to extract the previous version for comparison purposes.
These two warning messages were interchanged:
ERROR: source.ext has been renamed to "source.tm0"
Warning: source.ext is not read-only.
(Note that the UD command needs to extract the previous version of your
source file to determine whether you've made changes to the source file;
if you've changed it, then your changes are saved in a temporary file.)
Also, clarified the message displayed if a UD is done when the library
file does not exist.
4) Fixed: several bugs having to do with archived (PKZIP'd) library and
lock files.
a) Checking-out/locking could result in a temporary copy of the lock
file erroneously being left in the ARCTEMP directory in the event
of the following warning:
Note: file.ext was already checked out to you
b) The UD command did not work with archived library files.
c) The N and U commands did not work correctly with multi-pass files
under some circumstances when either a reference copy needed to
be updated (due to r=y being configured on the LEVEL parameter
for the current named project level), or the source file needed
to be refreshed (to update keywords and/or a revision history log).
Creating a new library erroneously left a copy of the library file
in the ARCTEMP directory, and when updating an existing library
with a new version, the temporary copy of the library in the ARCTEMP
directory was being prematurely deleted, which caused the source
and/or reference files to not be extracted. This could cause
any or all of the following errors:
ERROR: Could not reopen library file "path\libfile.ext", error #2.
ERROR: keyword and/or logflag info in source.ext was not updated
because it could not be written.
ERROR: reference copy path\source.ext could not be refreshed.
[Peter C.]
5) Added: the new TOUCHSOUR N/Y/M/R ("touch source") configuration
parameter, to control the file date with which a source file is left
after an update (U or N command).
(To "touch" the source file is to set its last-modified date/time stamp
to "now.")
There are four choices: TOUCHSOUR N/Y/M/R
TOUCHSOUR No -- Never touch the source file; preserve its
date/time stamp even if TLIB modified it to
update keywords or a revision history log.
(This is the default.)
TOUCHSOUR Yes -- Touch the source file iff the library was
successfully updated, regardless of whether or
not TLIB modified the source file.
TOUCHSOUR Modified -- Touch the source file only if TLIB modified it
to update keywords or a revision history log
(with FIXKEYWD Y configured), or to remove an
embedded comment line (with CMTFLAG configured).
TOUCHSOUR Revhist -- Touch source only if a revision history log was
inserted (due to FIXKEYWD Y) or a comment line
was removed (with CMTFLAG configured); i.e., if
the line numbers changed. (This is useful for
keeping source files "in synch" with debugger
line numbers).
Note that this affects the date/time stored in the TLIB library file,
as well as the date/time of the actual source file. However, it does
not affect the date/time of any reference copy of the source file
which TLIB creates due to the r=y option on the LEVEL configuration
parameter; reference copies are always created with the current date/
time (which may be a few seconds newer than that of the source file
in your work directory, even if TOUCHSOUR Y is configured).
Related parameters:
AATTR Set/Preserve/Reset
FIXKEYWD Yes/No
[Rob R., Steve K., Bob F., Phil A., Joshua G., Joe M., Phil H.]
6) Fixed: LISTBLD 5.00c, to find indented C-language #include directives.
7) Enhanced: LISTBLD 5.00c, to recognize Baily Controls' "Batch90" language
include directives.
[Les H.]
5.01a 9-Nov-93
1) Fixed: an embarassing bug in TLIBCONF 5.01b which caused it to get
"stuck" on question #10, refusing to accept any answer. The fixed
version is TLIBCONF 5.01c.
5.01a 1-Nov-93
(real-mode network version is 122010 bytes, CRC16=56EC)
1) Fixed: a problem that could cause "awaiting access..." hangs when
processing multiple files via a file list, and removed the debug code
that was added in 5.01a/á4 to help track down this problem. [Kevin H.]
2) Fixed: a bug in the keyword expansion algorithm, which caused TLIB to
improperly parse a keyword flag line in your source file unless there
was at least one character of white-space (blank or tab) after the
keyword flag and before the quoted format string.
Thus, if you had configured:
keyflag 3,"--keyflag--"
and your source file contained:
/*--keyflag--"Version %f, date %d"*/
/* "" */
then the keyword information would not be inserted.
However, if your source file contained:
/*--keyflag-- "Version %f, date %d"*/
/* "" */
then it worked fine (due to the blank after --keyflag--).
This bug was introduced in TLIB 5.0 (TLIB 4.12 did not have this
problem), and is now fixed. [Michael M.]
3) Expanded and improved: TLIBCONF.
This is TLIBCONF 5.01b. It now asks a couple of additional questions,
and configures several additional common parameters. We also clarified
some of the existing questions.
This should be helpful to new users of TLIB.
5.01a/á4 28-Oct-93 (beta)
(real-mode network version is 121898 bytes, CRC16=46C5)
1) New: PVCS-to-TLIB, RCS-to-TLIB, and TLIB-to-TLIB conversion utilities!
The purpose of the PVCS-to-TLIB and RCS-to-TLIB conversion utilities
is to aid customers who are upgrading to TLIB from these products.
Since TLIB 5.01 directly supports all possible version numbers that
can be generated by PVCS and MKS RCS (except for punctuation
differences), the PVCS-to-TLIB and RCS-to-TLIB conversion utilites
are able to convert all PVCS or RCS versions (including branches)
into TLIB versions. Also, all version labels are automatically
converted into TLIB snapshot files.
If you are converting from a variant of RCS other than the one sold
by Mortice Kern, the RCS-to-TLIB conversion utility might still work,
but we've only tested it with Mortice Kern's RCS. Please call us
and tell us about your success or problems converting from other RCS
variants. If you have trouble, we may be able to help.
The purpose of the TLIB-to-TLIB conversion utility is to assist users
who need to convert TLIB libraries from one format to another. For
example, if you had accidentally stored text files in binary-format
TLIB libaries, then you might want to convert those libraries to text
format, so that TLIB's "delta review" and keyword features would be
available. Similarly, if you have TLIB libaries which require too
much RAM for TLIB to process in your preferred DOS environment, then
you could convert them to a smaller MAXLINES setting, to conserve
RAM memory.
See CONVERT.TXT for details.
2) Added: support for the "-q2" command-line option, which is just like
the "-q" (or "-q1") option except that it also suppresses display
of any user-configured BANNER lines (see the BANNER and NUMBANNER
configuration parameters).
3) Changed: TLIB's algorithm for determining the current work directory
when TREEDIRS Y is configured but WORKDIR is not configured.
As in earlier releases, TLIB searches the current and parent
directories for a TLIBWORK. However, if no TLIBWORK.TRK file is
found, TLIB will no longer simply assume that the current directory
is the work directory; instead, TLIB prompts the user to specify
which directory is the work directory, and creates the TLIBWORK.TRK
file there.
The question asked is similar to the following:
TREEDIRS Y was configured but the main/top work directory could
not be deduced, because TLIBWORK.TRK was not found in or above
the current directory, `C:\WORK\CURRENT\'.
Enter the depth of the main work directory, 0-2, where 0 is `C:\',
and 2 is `E:\WORK\CURRENT\':
This should prevent problems that some users have experienced with
TLIB choosing the wrong directory as the main work directory, if
that was not the current directory the first time they ran TLIB
in that work directory tree.
Note: If you configure QUERIES N (to prevent TLIB from asking questions
of the user), and TLIB cannot determine the main work directory, then
TLIB aborts rather than allowing the user to specify the work directory.
4) Improved: the way that TLIB determines the case (upper vs. lower) of
the file name inserted via the %n keyword into an extracted file.
In earlier versions of TLIB 5, the file name might be inserted as lower-
case even with an upper-case-only file system, if the user had specified
the the file name as lower-case and the file did not already exist.
Now, however, the DOS (real mode) TLIB always forces the inserted %n
keyword's file name to upper-case, and the protected mode (OS/2 & WinNT)
TLIB does a "find-first" directory look-up of the source file to
determine the correct case for the name.
[Ken W.]
5) Fixed: an error-handling bug which could cause any of several symptoms
if a command specifying a specific version number was done with a
snapshot or tracking file used to specify the version number, but
the source file was not listed in the snapshot or tracking file.
Example:
tlib ebs myfile.c @tlibwork.trk
(where myfile.c isn't listed in tlibwork.trk)
In each case, a proper error message was generated:
ERROR: Version number for "MYFILE.C" isn't specified in "tlibwork.trk".
However, there were several possibilities for what happened next,
depending upon the circumstances:
ERR: spv (internal error)
ERR: spv2 (internal error)
TLIB could prompt for the missing version number, then complete the
command successfully (if you entered a proper version number).
TLIB could abort the command, but exit with errorlevel 0 instead of
errorlevel > 0.
This has been fixed to ensure that TLIB will simply abort the command.
If only one file was specified on the command line, then TLIB will
exit with errorlevel > 0 to indicate an error.
(Note, however, that if several files are specified, or a wild-card
spec or file-list is used to specify the files, the errorlevel is
still unpredictable.) [Rob R.]
6) TLIB no longer retries file-open sharing errors when reading input
files for an N or U command, since those files should not be subject to
contention by other TLIB users. This prevents the annoying 1-3 minutes
of "awaiting access..." retry attempts when, for example, the following
command finds TLIB's own $TLIB_TM.0 temporary file but cannot read it
because TLIB itself has the file open in an exclusive SHAREing mode:
tlib n *.* initial version
Note that this particular case (of TLIB's N or U command finding the
$TLIB_TM.0 file) can be avoided by setting your TEMP or TMP environment
variable to point to another directory. [Mike S.]
7) Fixed: Tabs are now acceptable in lieu of blanks in the LEVEL
configuration parameter. [Karl H.]
8) Added: some debug code for tracking down an unresolved problem that
can cause "awaiting access..." hangs when processing multiple files
via a file list. [Kevin H.]
9) Clarified: a couple of TLIBCONF's questions (slightly). This is
TLIBCONF 5.01a.
5.01a/á3 14-Sep-93 (beta)
(real-mode network version is 120890 bytes, CRC16=0DAA)
1) Fixed: an innocuous bug that sometimes caused the following message
when TLIB was analyzing a binary file for the N (create New library)
command:
Warning: d_stats != chk_stats
[Tim M. and others]
2) Fixed: a bug in TLIBSMP which caused it to fail in various ways when
wild-cards were used to process multiple binary-format TLIB libraries.
The most common symptom was the message:
Format error
The fixed program is TLIBSMP 5.00c. [Starry C.]
3) Fixed: a bug in TLIB which caused the "t=" and "l=" fields in the
tracking files to not be stored during a U (update) command in which
no new version was created because there were no changes. The effect
of this was to cause an unnecessary re-extract of the source file the
next time an EBF command was done. This bug only affected users who
had tracking enabled ("TRACK Y") but no named project level (PROJLEV
and LEVEL not configured, or PROJLEV configured to "*").
[Greg G.]
4) Fixed: an innocuous bug in TLIB which could cause an extra error
message if an error occurred during certain commands which take a
specified version number as a parameter. For instance, an error in
the command:
TLIB EBFS @X.LIS *
could (after the proper error message was displayed) result in the
following spurrious message also being displayed:
ERROR: Illegal command: "*"
5.01a/á2 (unreleased)
1) Fixed: a bug in 5.00m which caused all TLIB commands to fail if WORKDIR
was configured to a path that lacked a trailing backslash.
For example:
WORDIR C:\MYWORK (broken in TLIB 5.00m)
Workaround is to configure it in the supposedly-equivalent way, with
the trailing backslash specified:
WORDIR C:\MYWORK\ (works in all versions of TLIB 5)
2) Improved: scanning for keyflags and logflags in source files that are
stored in tab-compressed libraries. This is of consequence only if
you have configured keyflag or logflag at column 9 or greater, or if
you have used embedded white-space in the keyflag or logflag string
(neither of which is recommended).
In earlier version of TLIB, the examination of each source and library
line for a keyflag and/or logflag was done after the tab-to-blank
expansion during an extract, and after the blank-to-tab compression
on an update. This led to some rather weird behavior when the keyflag
or logflag was indented by more than 7 spaces. (One manifestation
of this problem was a revision history log that got appended to rather
than replaced on updates.)
With this improvement, TLIB now examines the source and library lines
after the tab-to-blank expansion during an extract, so that if your
source files have no explicit tabs you can use both blank-to-tab
compression (ENTABU Y), and an indented keyflag and/or logflag.
For more on keyflags and logflags, see the chapters on "Keywords" and
"Revision History Log" in the printed TLIB Manual.
5.01a/á1 (unreleased)
1) Added: support for the RELAXVERS configuration parameter. If you
configure RELAXVERS Y, then TLIB will allow you to create versions
with branch or trunk number zero, and/or to skip versions. This is
not intended for general use, but rather to allow conversion of
PVCS and RCS files to TLIB, via the new PVCSTLIB.AWK and RCS2TLIB.AWK
conversion tools.
Support for version number zero and skipped version numbers is new to
TLIB 5.01, and is not supported by TLIB 5.00m and earlier.
BEWARE: IF YOU USE SKIPPED OR ZERO VERSION NUMBERS, THEN YOUR TLIB
LIBRARIES WILL *NOT* BE COMPATIBLE WITH TLIB 5.00m AND EARLIER!
Note: To specify a zero branch version number, you MUST always also
specify the parenthesized number-of-the-branch.
For example, suppose that you had a PVCS archive from which you built
an equivalent TLIB library, using PVCSTLIB.AWK. Suppose, also, that
the PVCS archive contained PVCS branch version number "3.2.1.0".
then the equivalent TLIB 5.01 version number would be "3:2.(1)0",
and you CANNOT abbreviate it to "3:2.0".
This is a special case which applies only to branch version zero of
branch number one, ".(1)0". For any other branch version within branch
number one, the "(1)" can be omitted for brevity, so that, for example,
"3:2.(1)4" is equivalent to "3:2.4".
This restriction exists is so that we can maintain compatible behavior
with earlier TLIBs, which considered, for instance, "4.0" to be another
way of referring to version "4".
5.00m 15-Aug-93 (posted on BBS but never shipped)
1) Changed: the default way that TLIB interprets path\file specifications
under some circumstances when you are working in a subdirectory other
than the main work directory when TREEDIRS Y is configured, and...
Added: the new TOPRELATI configuration parameter, to tell TLIB how to
interpret such file names or relative paths.
In TLIB 5.00L and earlier, it was assumed that all such paths were
relative to the current directory. However, this prevented correct
operation with file lists and snapshot files that included the relative
subdirectories, since TLIB would erroneously interpret such paths
as being relative to the current directory, rather than relative to the
main (top) work directory.
The symptom of this problem was that various TLIB operations involving
file lists or snapshot files would fail to work correctly with TREEDIRS Y
configured, unless the current directory was the main work directory.
For example, snapshot file entries could end up with doubled subdirectory
names, like "IOSTUFF\IOSTUFF\BUFFERS.H" instead of "IOSTUFF\BUFFERS.H".
The TOPRELATI ("top-relative") parameter enables you to tell TLIB how
to interpret such file names. It has no effect on TLIB's operation
unless TREEDIRS Y is configured AND the current directory is not WORKDIR.
That is, if WORKDIR is the current directory, or TREEDIRS N is configured,
then the TOPRELATI paramter is ignored.
The three possible settings are:
TOPRELATI Y names are relative to WORKDIR
TOPRELATI N names are relative to current directory (like TLIB 5.00L)
TOPRELATI Maybe names are relative to current directory except when
the names are read from a TLIB snapshot (version label)
file. This is the default.
[Carl M.]
2) Fixed: a bug similar to problem (1), above, which occurred when
TREEDIRS Y was configured. This problem caused the M (migrate) command
to generate a MIGRATE2.BAT that did not work properly if the current
directory was not the main (top) work directory.
Specifically, the generated MIGRATE2.BAT contained subdirectory
specifications which assumed that the MIGRATE2.BAT was being run from
the main/top work directory, even though that was not actually the
current directory.
In TLIB 5.00M and later, the generated MIGRATE2.BAT in this situation
now depends upon the setting of the new TOPRELATI configuration parameter.
If TOPRELATI Y has been configured, then the file specifications in
the generated MIGRATE2.BAT are relative to the main work directory;
otherwise, they are relative to the current directory (this is now the
default behavior). [David A.]
3) Fixed: an erroneous message ("Truncating %s back to %ld bytes.") in which
the number of bytes was garbled. This message was only displayed under
certain rare circumstances in which TLIB was recovering from a network
failure. [Les H.]
4) Fixed: erroneous command-line parsing, which caused a backslash at the
end of a quoted string to be interpreted at an "escape" of the closing
quote. (This was a feature of the C runtime library, which surprised us.)
The symptom of the problem was that commands like:
tlib c "workdir c:\mydir\" u *.c
...did not work. (In this particular example, you'd get the TLIB menu
or "command:" prompt.)
This is now fixed, so that backslashes on the TLIB command line are not
treated specially.
This fix makes TLIB 5.00m behave like TLIB 4.12 in its command-line
parsing. It also has the side-effect of preventing you from including
a double-quote mark inside a quoted parameter on the TLIB command line.
This seems unimportant, however. [Carl M.]
5) Changed: the default JOPTIONS setting is now "JOPTIONS UOCAP". Note that
this is not what the manual says the default is. [David A.]
6) Fixed: When standard output was redirected, and TLIB issued a message
indicating who had a file checked-out/locked (e.g., when the "E" command
failed because someone else was already working on the file), then only
part of the message was being echoed to stderr.
This has been corrected. [Andy P.]
7) Probably fixed: "Warning: only nnn words of stack remained unused."
We increased the stack size a bit to avoid this innocuous warning.
5.00L 27-May-93
1) Fixed: a bug which caused TLIB to abort with "ERR: workdir_is_projdir..."
and "ERR: AmbigPROJLEV" messages. [Rob R.]
5.00k 21-May-93
1) Changed: the method we use to "flush" directory information when running
under DOS 3.3 and later, since some networks do not properly flush
directory information when a duplicate file handle is closed. This
should reduce the number of networks for which TLIB must resort to a
(slow) full close/reopen sequence to force file directory entries to
be updated.
2) Modified: the heuristics we use when analyzing binary files, to avoid
extremely sluggish operation of the "U" (update) command when storing
highly uniform (homogenous) binary files.
Note that this fix is effective only with newly created TLIB libraries.
If you experience extremely slow performance while updating binary
TLIB library files that were created with an earlier version of TLIB,
then to solve the problem you will have to delete the old library file
and re-create it with TLIB 5.00k or later.
This problem was seen when storing a .DBF file which consisted almost
entirely of blanks. [Rick S.]
(Note: TLIB 5.01 comes with the "TLIBTLIB" conversion utility, which
can be used to automate the tedious process of creating a new TLIB
library containing all the versions and comments that were in the old
one.)
3) Fixed: In the network edition of TLIB, if ID was configured to *NOVELL*,
*NETNAME*, etc., and there was a reference to %TLIBCFG:ID% later in
the configuration file but not in a help, banner or prompt line, then
the %TLIBCFG:ID% reference was incompletely resolved. That is, it
came out to be "*NOVELL*" or whatever, rather than the actual network
user name. This has been fixed. [Red M.]
4) Fixed: a minor bug which prevented the end-of-line from being written
to stdout (console) after the Y or N was echoed when the user entered
the answer to a yes/no interactive question while stdout (output)
was redirected to a file.
5) Added: support for another microcontroller assembler 'include' directive
syntax to LISTBLD 5.00b. [Kent T.]
6) Improved: LISTBLD 5.00b, so that the REMOVE and RELATIVEPATHS options
behave more reasonably when specified in combination.
When the REMOVE option is specified without RELATIVEPATHS, then any
relative paths are ignored, and LISTBLD removes every entry in the
output file list which matches the specified input file(s).
When the REMOVE option is specified with RELATIVEPATHS, the complete
path+name must match for each entry to be removed.
For example, suppose the EXCLUDE.LIS and MYFILES.LIS file lists are
as follows:
exclude.lis myfiles.lis
----------- ------------
iostuff.c aa\iostuff.c
f\analyze.h iostuff.c
bb\iostuff.c
analyze.h
aa\analyze.h
compute.c
f\analyze.h
Then specifying REMOVE without RELATIVEPATHS...
LISTBLD @exclude.lis myfiles.lis REMOVE
results in:
myfiles.lis
-----------
compute.c
and several warnings about duplicate entries being deleted (because
the multiple "iostuf.c" and "analyze.h" entries are not allowed when
RELATIVEPATHS isn't specified).
However, specifying REMOVE with RELATIVEPATHS...
LISTBLD @exclude.lis myfiles.lis REMOVE RELATIVEPATHS
results in:
myfiles.lis
-----------
aa\iostuff.c
bb\iostuff.c
analyze.h
aa\analyze.h
compute.c
7) Fixed: a subtle bug in TLIB's automatic branching algorithm, which
could cause TLIB to create a higher-numbered branch than was necessary,
if the branch was from an early trunk version number and a later trunk
version already had branches from it.
For instance, if you had a TLIB library containing versions 1, 2 and
2.1, and you extracted version 1, modified it, and updated the library
(with TRACK Y configured), then TLIB would automatically create the new
branch version, but as version 1.(2)1 instead of version 1.1 [which is
equivalent to 1.(1)1].
This didn't really cause any problems, but it was not how we intended
it to work, and it seemed aesthetically displeasing.
This has been corrected. [Mark B.]
8) Fixed: Although the user manual is ambiguous on the point, it was our
intention that the S (snapshot) command record the latest trunk versions
unless PROJLEV was configured to a named project level (in which case
the versions current in that project level should be recorded), or
unless "PROJLEV =" was configured (in which case the version nubers for
tracked files should be taken from the work directory's tlibwork.trk
file). Thus, the S command should record the version numbers which the
E command would have extracted.
However, TLIB 5.00j and earlier did not behave this way in one case.
When "basic tracking" was used (i.e., "TRACK Y" configured, but no
PROJLEV), instead of recording the latest trunk versions for tracked
files, the S command recorded the versions listed in the work directory's
TLIBWORK.TRK file. That is, the S command was behaving as if "PROJLEV ="
was configured.
In TLIB 5.00k, this has been corrected. If PROJLEV is not configured
(or is configured to nothing), then TLIB's S command will record the
latest trunk versions for both tracked and untracked files, which is
consistent with the version number retrieved by the E (extract) command.
If you would prefer, instead, that the version numbers from the work
directory's TLIBWORK.TRK file be recorded, you can configure "PROJLEV =".
For example, suppose that:
- the latest trunk version of XYZ.C is version 5
- but thework directory TLIBWORK.TRK file contains the line:
XYZ.C v=3
- the TLIB.CFG file contains:
if *.c,*.h
track y
endif
REM - same as not configuring projlev at all:
projlev
And suppose that you do the commands:
TLIB S TEST.SNP XYZ.C,*.H
TLIB C "PROJLEV =" S TEST2.SNP XYZ.C,*.H
Then the TEST.SNP snapshot will contain
XYZ.C v=5
but the TEST2.SNP snapshot will contain
XYZ.C v=3
[Starry C.]
9) Fixed: A problem with the M (migrate) command, which occurred when
"TREEDIRS Y" was used, and a file to be migrated was in a subdirectory,
and the migrate operation degenerated into a simple copy because no
merge was actually required.
This would happen if, for example, the current version of mydir\file.c
was version 4, and you migrated version 4.2 into the current version.
The problem was that the generated MIGRATE2.BAT file utilized the DOS
"copy" command to append the source file onto a single-line file
containing the special "...[COPIED_nn]" comment line. However, it
turns out that the DOS copy command to append one file to another
("copy file1+file2") does not work if file1 is not in the current
directory.
Consequently, TLIB 5.00k no longer uses the DOS copy command in the
generated MIGRATE2.BAT file. Instead, it uses a new option on the
SCOPY program.
So, we also...
10) Enhanced: the SCOPY program, to accept an additional command-line
parameter, to add a line to the top of the copied file. This is for
use by the MIGRATE2.BAT file which is generated by the M (migrate)
command.
5.00j 29-Mar-93
1) Fixed: A TLIB 5.00i warning message ("File lock failed...") was
incorrect. It came out
...File lock failed on File lock failed on %s
Instead of
...File lock failed on <filename>
This has been fixed. [Bennett S.]
2) Fixed: a problem caused by an bug/idiosyncrasy in at least one version
of Lan Manager. It seems that under Lan Manager, closing a duplicated
file handle sometimes causes the directory information to be updated,
and sometimes does not... which badly confused TLIB.
This problem seemed to occur when (because CREATETF Y was configured)
TLIB created a previously-nonexistant project level tracking file on
the network drive, and tried to add more than one file to it (because
wild-cards or @filelists were used to specify multiple source files).
If the tracking file already exists, then Lan Manager's behaviour is
apparently at least consistent, which avoided the problem.
The symptom was an endless error/retry loop with the message:
Warning: <filename> cache length failure (nnn -> mmm); recovering...
TLIB now has code to handle this situation. [Chuck F.]
3) Added: a cute little AWK program called ANSIFY.AWK, to add pretty
ANSI highlighting to the prompts and help which are generated (in
tlib.cfg) by TLIBCONF. The instructions are in comments in the
program itself (ansify.awk). It works with Duff AWK (included with
TLIB), or Thompson AWK (the fastest AWK around), or MKS AWK (another
popular AWK).
5.00i 08-Mar-93
1) Fixed: a bug which caused the S (snapshot) command to create a work
directory tracking file if one did not already exist, even when
tracking was disabled. [Scott L.]
2) Fixed: the "SUPPRESS 2" option. (If you've never seen a TLIB message
suggesting that you configure "SUPPRESS 2", then this doesn't affect
you.) [Scott L.]
3) Fixed: TLIB so that it will not abort when asked to store a 0-length
file, and changed it to allow storing such files. [Lance C. L.]
4) Fixed: The additional comment line records were recorded in the
journal file with only 12 fields instead of 13 (11 leading commas
instead of 12).
5.00h 07-Feb-93
1) Fixed: a bug which caused the error message to be slightly garbled if
an NS command was attempted with a prohibited starting version number.
2) Fixed: a deficiency in TLIBCONF. It was leaving the EBF (freshen
browse-mode files) command out of some of the prompt and help menus.
5.00g 21-Jan-93
1) Fixed: a bug which could cause various problems when "PROJLEV *" or
"PROJLEV =" was configured, including error messages similar to the
following:
ERROR: Could not create "d:\direct" (for project-level *).
or:
ERROR: Could not open "d:\direct" (for project-level *).
where "d:\direct" is actually a directory. [Tony L.]
2) Changed: the format of the lock status information (reported by, for
instance, the "T" command).
5.00f 18-Jan-93
1) Fixed: a bug which caused TLIB to try to extract to the wrong directory,
or record the wrong relative path in the tracking file when an E (extract)
command was done and:
- "TREEDIRS Y" was configured, and
- "TRACK Y" was configured, and
- the current directory was not the WORKDIR (working directory), and
- a wild-card file specification was used that did not include a
directory specification, and
- the L (default), C, or O wild-card search-mode was used.
Now such commands will only extract to the current directory.
2) Optimized: the EBF ("freshen source files") command, to improve
performance when used with a slow "remote" (modem-attached) network
connection, by eliminating some "find-first" (directory look-up)
operations (used to check the length of the library file) when a simple
version-number comparison allows us to determine that a source file
needn't be extracted.
This optimization helps only slightly with normal local area network
connections, since find-first is normally a very fast operation.
However, with at least one vendor's remote network access package,
a find-first to look up a file on a network drive is hideously slow.
Whether or not TLIB can optimize the EBF command to avoid the find-first
depends upon the form of the command that you use. If TLIB can deduce
the exact version numbers needed without checking the length of the
library file, then the extra find-firsts are avoided. For example:
tlib ebfs *.c,*.h * -- can never be optimized, due to the
"floating" version number ("*", meaning
"latest trunk version")
tlib ebf @snapshot.txt -- optimized because version numbers are
taken from the snapshot version label file
tlib ebft *.c,*.h -- optimized (for normal project levels)
because the version numbers are found
in the project-level tracking file
[Bruce C., Mark E.]
3) Added: a new configuration option, which subtly affects the operation
of the EBF command.
Normally, the EBF command will extract any named source file which
does not already exist in the work directory, as well as those which
are determined to be out-of-date according to the information in the
work directory's TLIBWORK.TRK file.
However, one of our users is using a scheme for taking work home in
which the source files are not left in the working directory, and he
needed for TLIB to ignore the absence of the source files, and make
its determination of which files to extract solely on the basis of
the information in TLIBWORK.TRK.
To tell TLIB that his source files are elsewhere, he can now configure:
ELSEWHERE Y
However, most users should leave this configuration parameter set to
the default:
ELSEWHERE N
4) We rearranged the documentation file, 5P00NEWS.DOC, slightly. (This
file describes the differences between TLIB 4.12 and TLIB 5.00.)
(5P00NEWS.DOC is available as part of the OLDSTUFF.ZIP archive on our
BBS, in the TLIB file area. 7/96)
5.00e 5-Jan-93
1) Fixed: a bug in the OS/2 edition which could (under rare curcumstances)
cause TLIB to display "ERR: LAls" and abort during an update of a large
TLIB library.
2) Fixed: a bug which prevented specification of a "date,time" in lieu
of a specified version number. Either a date alone, or a time alone
worked okay, but not date and time together. [Jonathan L.]
3) Fixed: a bug which caused the M (migrate) command to produce a
somewhat garbled REM line in the MIGRATE2.BAT file if tracking was
disabled. The garbled portion was the "current" version number, e.g.:
REM Migrate v=1.5 into test.c [v=18] (current v=?:?.(?)?.(?)?.(?).?)
[Jonathan L.]
4) Fixed: a bug which prevented proper resolution of a %tlibcfg:id%
reference embedded in a BANNER line, if the ID was configured to
one of the special network IDs, such as *NOVELL*. [Dave Bl., Jonathan L.]
5) Improved: error message when an invalid version number is specified by
the user. [Dave Bl.]
6) Fixed: some of the errors in 5P00NEWS.DOC, and incorporated PROJLEV.DOC
and TRACKFIL.DOC into 5P00NEWS.DOC.
(5P00NEWS.DOC is available as part of the OLDSTUFF.ZIP archive on our
BBS, in the TLIB file area. 7/96)
7) Added: support for specifying a date and/or time in lieu of the version
number for the SS (snapshot specified versions) command. [Dave Bl.]
5.00d 14-Dec-92
1) Fixed a bug in the migrate command which caused the following error:
run-time error R6000
- stack overflow
The error only occurred if tracking was enabled but the working
directory's TLIBWORK.TRK file did not already exist. [Paul J.]
2) Fixed: the "PROJLEV *" configuration setting, which did not work at
all. [Brian W.]
3) Changed: the default PROJLEV behavior, and added a new special
PROJLEV setting which is equivalent to the old default.
The default PROJLEV configuration setting is "nothing"; which is
like configuring just "PROJLEV" with nothing after it. That is,
neither "PROJLEV <project-name>" nor "PROJLEV *" is configured.
In TLIB 5.00c and earlier, when tracking was enabled ("TRACK Y")
the default PROJLEV setting caused TLIB's "E" (extract) command to
consult the working directory's tracking file to decide which versions
to extract by default. Thus, if you extracted a file, you would
always get the version you last had.
Now, however, with the default PROJLEV setting, the "E" command will,
by default, extract the latest trunk version. However, automatic
branching will still work; that is, the "U" (update) command will,
still consult the working directory's tracking file to decide what
version number to create for the new version. So, if you started
with version 12, and version 13 already existed, then the U command
would know to store the new version as 12.1, rather than 14.
This is a better default behavior for the vast majority of users.
If you prefer the old behavior, you can now configure "PROJLEV =",
but we suspect that few users will want to do this.
Configuring "PROJLEV *" is similar to the default PROJLEV setting,
except that automatic branching is disabled. Thus, if you extracted
version 12 and modified it, but version 13 already existed, then
when you stored the new version, TLIB would (unless you overrode it)
create the new version as number 14, rather than 12.1, just as if
tracking were disabled. (This is also the way that TLIB 4.12 worked).
4) Added: experimental code to try to work around a bug in some recent
Microsoft networks.
For maximum safety, and to detect a very dangerous known bug in some
versions of Novell Netware, TLIB contains special code to verify the
size of a TLIB library after appending a new version, thereby making
absolutely certain that the new version was successfully stored.
This special code is only executed after TLIB has successfully written
the new "delta" information, and closed the library, all without any
errors being reported by the operating system or network.
If the verification fails (i.e., the new library size is too small),
it is indicative of a bug in the network. For example, Novell Netware
will, under some rare circumstances (probably when there are bad
blocks on the server disk drive), leave the library file somewere
between the old size and the proper new size (and an exact multiple
of 1024 bytes in length). This is the Novell Netware bug which our
verification code was intended to detect.
However, some Microsoft networks also have a bug which is detected
by this code. These networks erroneously report to TLIB that the file
is still the old size, which used to cause TLIB to halt with an error
message. Yet after TLIB exited, if you checked the size of the TLIB
library (say, with the "dir" command), you'd find that the file really
had been extended to the proper new length, after all.
This bug has been reported when running the protected mode version of
TLIB (OS2TLIB.EXE) under a pre-release Windows-NT, and also when
running the DOS version of TLIB under Microsoft's just released
"Windows For Workgroups" product.
TLIB 5.00d contains experimental code to detect the Microsoft network
problem, and to try to work around it by retrying the library file
length verification several times, using two different methods, and
displaying various debug messages as it does so.
If the Microsoft network problem is detected, TLIB will display the
message:
Probable Microsoft network bug detected. Retrying:
<various other messages may follow>
If you see this message, please use "PrtScrn" to save it, and please
call us.
5) Changed: the SWIDTH (screen width) configuration parameter is no longer
limited to a maximum of 140 characters. If another program is driving
TLIB, you may wish to configure SWIDTH to a very large number (the
limit is now 32765), to prevent TLIB from splitting its messages into
multiple lines. This makes it easier for a program to tell where one
TLIB message ends and the next begins.
5.00c 23-Nov-92
1) Fixed: a build error in the real-mode (DOS) version which caused TLIB
to abort with:
ERR: u_tM
This error also caused the TLIB banner to say that it was version
"5.00b" instead of "5.00c".
5.00b/5.00c 16-Nov-92
1) Fixed: a bug which caused TLIB to fail "awaiting access..." when
"@tlibwork.trk" was used as a file list or a version number
specification.
2) Improved: SCOPY 5.0e, so that it can copy a tracking file without
waiting for TLIB to close it.
3) Fixed: a bug which prevented an EB (extract for browse) command from
replacing an already-existing read-only browse mode copy of a file,
even when REPLROBR Y was configured, if you also had the file checked-
out for modification in another directory. [Brian W.]
4) Fixed: a bug which caused
ERROR: "-n" may not be used in this context.
when the M (migrate) command was used to migrate changes in a project-
level reference directory. [Andy S.]
5) Improved: some error checking & messages.
6) Fixed: garbled error message:
ERROR: "file.ext" is not on the same drive as WORKDIR (::)
[Keith B.]
5.00b 23-Oct-92
1) Fixed: it turned out that the tracking file support changes made
in TLIB 5.00a didn't work under Novell Netware, due to a bug
in Netware (it doesn't flush directory information to disk when
a DUP'd file handle is closed). TLIB 5.00b adds code to detect
this situation, issue a warning, and henceforth work around the
problem. [Bruce E.]
2) Fixed: When file "region locking" wasn't working (say, because
SHARE wasn't loaded), TLIB 5.00a was emitting a large number of
obnoxious error messages. This has been reduced to a single, helpful
error message. [Bruce E.]
3) Fixed: TLIB 5.00a was still, under some circumstances, doing
unnecessary close/reopens of the tracking files, which slowed it
down a bit. This has been corrected.
5.00a 21-Oct-92
1) Fixed: a few misleading messages in TLIBCONF, and a TLIBCONF bug
which prevented users from picking one of the displayed menu choices.
2) Changed: TLIB (both DOS and OS/2 editions) so that it will echo
error/warning messages and prompts to "standard error" (stderr) as
well as "standard output" (stdout) when stdout has been redirected.
This was done because some ex-Unix users like to redirect stdout
to NUL, which used to cause them to miss important error messages.
To see how this works, you could do:
os2tlib e nonexistantfile >nul
Only the error message is echoed to stderr, so all you'll see is
something like this:
ERROR: No such library file: "f:\srclibs\nonexist._$"
3) Added: the "-e" command-line option to TLIB, to override TLIB's
automatic determination of whether stdout has been redirected.
You may specify "-e1" to tell TLIB that stdout has not been
redirected, so that TLIB will NOT echo error/warning messages and
prompts to stderr.
This is mainly for use with TEE to capture the output from the OS/2
edition of TLIB into a file. Examples:
os2tlib -e1 | tee >tlib.log
or os2tlib -e1 u *.c,*.h My comment | tee >tlib.log
You can also specify "-e0" (or just "-e") to force TLIB to echo
error/warning messages and prompts to stderr even when stdout has
not been redirected, though we can't think of any good reason to
do this.
Note: this option was documented incorrectly in the user manual
(the descriptions of the "-e1" and "-e0" options were swapped).
4) Fixed: TLIB to prevent an unnecessary warning & question when using
the APX (promote exclusion) command, similar to the following:
Warning: promote of yourfile.c [v=X] to RELEASE will replace [v=5].
Promote it anyhow? Y
5) Fixed: A bug in which the default PATH configuration parameter (i.e.,
the "CP" command setting) was incorrect. Symptom was that the "L"
(library files) wild-card search mode didn't work without PATH being
configured. [Ann K.]
6) Fixed: some subtle, unreported concurrency bugs. TLIB was opening
its temporary files ($TLIB_TM.*) for shared (rather than exclusive)
access, with the result that if TLIB was simultaneously running in
two sessions, they could interfere with each other's temporary files.
This caused files to sometimes be skipped when processing wild-cards,
and it generated the following error message:
ERROR: reading d:\$TLIB_TM.0 (read nn names, expected mm).
7) Changed: tracking file support to reduce the frequency with which
tracking files are closed and reopened. This should help performance
a bit for some commands, such as EBF (freshen browse-mode files).
8) Changed: The `F' (fast/freshen) option of the `E' (extract) command
now always extracts a source file which doesn't already exist.
[Note: in 5.00f & later, this behavior can be changed via the ELSEWHERE
configuration parameter. 18-Jan-93]
|