Fixed TCC descriptions scrambled

Oct 24, 2011
Using TCC, when doing a "dir /z" on a directory containing more than about 500 files with descriptions, the description display is scrambled. That is, some or many of the files are matched with the wrong description.

The DESCRIPT.ION file is fine. Doing a "dir /z a*" displays correct descriptions for the subset, and moving some of the files to another directory transfers the correct descriptions.

I'm using TCC version 13.00.27 x64, Windows 7 x64

I don't know if this same situation exists in Take Command because I bought it but I only use TCC.
Oct 24, 2011
Thanks for the prompt response. I emailed you and attached the description file and the output of DIR /B. I also included the output of DIR /Z on 500 files and DIR /Z on 700 files.

I neglected to mention that when the descriptions become scrambled, no description at all is displayed for some of them.


Staff member
May 14, 2008
This turned out to be an obscure edge condition triggering a very old bug that had been waiting at least 15 years for you to step in it! :eek:

I've fixed it for build 40. (The good news is after staring at the code for a while I realized there was a better way to handle reading descriptions, so in build 40 it's substantially faster for large description files.)
Oct 24, 2011
Thanks again. I actually ran into the problem a while back, but I rarely have that many files in a directory, and usually only while I'm sorting them into subs. I do an awfully lot of work from the command line -- an old habit from my CP/M and ZCPR years that I've never been able to break. :)
May 24, 2010
Northlake, Il
Pizzaman ( :) ), why do you consider the fact that you do "an awfully lot of work from the command line" to be any kind of a problem? As I've often observed on this forum in the past, TCC is far more powerful than any GUI could possibly be, and I wasn't using the GUI all that much before my eyesight became an issue (and pretty much never since my eyesight did become an issue), and I don't miss it in the slightest. That's one of the main reasons I have 57 aliases defined at the moment (every program that I run on an at all regular basis has an alias, and the alias also includes the path (to keep my path variable shorter) and often those parameters that I virtually always use. And If I don't remember what the alias I need is? No problem. "Alias | List" takes care of it, and most aliases are defined with names like "xxx*TheRestOfAFullyDescriptiveName", and I even have an alias for "Alias List" (Alias AL*AliasList=Alias | List", I don't always make the concatenation of the letters before the asterisk and the letters after the asterisk form a "real" (group of) words because I want the alias name to ultimately really tell me what the alias does without me really having to think about it at all). And I would guess that the needs of a "developer" (which I would assume you are and I am now mostly only because I'm almost constantly developing programs that help me overcome one or more of my disabilities (bad memory in particular) are very different from the needs of a person who does not develop programs of one kind or another, 90% of the population. (More? Much more???) And I will note that, as of this second, I have 97 .btm programs "in development" (not a guess), and that's out of 334 .btm files on my RAM disk in total, the other 237 of which are some "combination" of one or more of "previous versions" (I only "throw away" a previous version of a program when I am absolutely sure that the "current" version has everything that I want and/or need in it, because I may (possibly accidentally) remove something that I want and/or need). Each "version" of a program is a fully-working copy of the program except that it does not yet do everything that I want the program to ultimately do), "Experimental" programs where I am checking out exactly how some facet of the TCC language "operates" because I think that I might use it and I want to make sure I understand it completely, and "Test" programs whose only job is to "test" other programs. (I test things exhaustively.) And I have 3 different "versioning" schemes that I use, one pretty "religiously" for things I intend to keep (a portion of the file name that contains the sequence: ".V201y-mm-dd." (and sometimes even .V201y-mm-dd-hh-mm" if there's going to be more than one version on the same date), "somethingI.btm" and "somethingII.btm" and ..., where each number basically identifies a new "approach" I am experimenting with, "something-n.btm" ... "something-3.btm", "something-2.btm", "something-1.btm", "something+1.btm", "something+2.btm", ..., where the minuses are back versions and the pluses are potential future versions (another kind of experimentation).

- Dan

P. S. Just in case you don't quite believe me, here's the total breakdown of the .btm files on my RAM disk. The numbers are so high because I start new projects before I finish old ones, and I start them because if I don't, I will entirely forget what I wanted to do much less how I wanted to do it; and has I have often mentioned I am very (as in "glacially") slow.
334 .btm files on Z: altogether

 78 "Exper" total
  6 "Exper" and "1." versioned
  1 "Exper" and "2." versioned
  1 "Exper" and ".V201" versioned
 70 "Exper" and not "I." and not "1." and not "2." and not "3." and not ".V201"

 70 "Test" total
  2 "Test" and "1." versioned
  1 "Test" and "2." versioned 
  1 "Test" and "3." versioned
 11 "Test" and ".V201" versioned
 55 "Test"  and not "I." and not "1." and not "2." and not "3." and not ".V201"

 84 ".V201" total
  1 "Exper"
 11 "Test"
 72 not "Exper" or "Test"

250 Not ".V201"

 77 Not ".V201" and "Exper" in total
  6 Not ".V201" and "Exper" and "1." versioned
  1 Not ".V201" and "Exper" and "2." versioned
 70 Not ".V201" and "Exper" and not "n." versioned

 59 Not ".V201" and "Test" in total
  2 Not ".V201" and "Test"  and "1." versioned
  1 Not ".V201" and "Test"  and "2." versioned
  1 Not ".V201" and "Test"  and "3." versioned
 55 "Test"  and not "n." versioned

114 Not ".V201" and not "Exper" and not "Test"
 12 Not ".V201" and not "Exper" and not "Test" and "II."
  3 Not ".V201" and not "Exper" and not "Test" and "I."
 99 Not ".V201" and not "Exper" and not "Test" and not "I." and not "II."
  2 Not ".V201" and not "Exper" and not "Test" and just "1." versioned
 97 Not ".V201" and not "Exper" and not "Test" and not numerically versioned

 97 Not "Exper" and not "Test" and not versioned in any way

And "coming up" with these numbers only took a few minutes (which was actually the amount of time it took the batch file to run) because it is automated with both that batch file (with an alias) and a "find" program I wrote years ago that basically allow me to do things like (in words, not syntax): "If it contains this but not that or this and that and neither this nor that...", presumably you get the idea, and the this'es and the that's can be specified as matching or ignoring case and have limited "pattern-matching" capabilities, exactly the same ones that TCC has ("*" and "?") without formally using "regular expresssions". The program is not complete (and sadly probably never will be) in that there is currently no way to "order" the matches as "this must become before that" (all of the matches are done on the entire text of the file), and this is not as slow as you might think it would be because the file is not read multiple times, strictly speaking it's not "read" even once, rather the input file is "mapped" entirely into virtual memory (a "memory-mapped" file which is effectively placed directly into virtual memory and is "read" exactly the same way that you would read any other byte in virtual memory, via a machine instruction of some kind) at the start of the program (via a C++ macro I wrote many years ago that first "creates" a file (for read access, so the API's name ("CreateFile" is a little bit odd), gets its size (GetFileSize API function), creates a file "mapping" ("CreateFileMapping" API function, not too surprisingly), maps a "view" of the file into virtual memory ("MapViewOfFile"), and "unmaps" it when done.) And if the input is coming in from standard input (not really very often the case the way I typically use the program), the program first reads the file and writes it to a temporary file in my "Temp" directory (which it then deletes when done, of course), which is actually on my RAM disk and so is very fast.
Oct 24, 2011
I used to live and breathe ZCPR and NZCOM. :)

Me too. No Internet. We used RCPMs as our means of communication. Most of them ran ARUNZ. I programmed in Z80 assembly back then and wrote and/or updated a number of ZCPR utilities. I was pretty active. I loved the intimacy of a relatively small group of people doing their own thing. The Internet is too big for that, so I'm mostly a lone wolf nowadays. :)
May 20, 2008
Elkridge, MD, USA
I programmed in Z80 assembly back...
I bought a 4MB memory board for my Z80-based S100-system(accessed by port transfers), and used Z80 assembler to write a device driver to make it a CP/M BDOS-compatible virtual disk, detecting during system start (when nobody has yet gone back to the medieval fairy stories to call it "pulling yourself out of the swamp by your own bootstraps as the Baron Münchhausen did" -> bootstrapping -> booting), whether or not the board contained valid data so that it did not needed to be reloaded from 8.5-in diskettes.
Oct 24, 2011
Thanks Rex! The descriptions are now flawlessly accurate on directories with a large number of files. AND they're displayed much faster -- instantly. No more long pause before the file listing starts. I'm very appreciative.
Similar threads
Thread starter Title Forum Replies Date
MickeyF TCC crashing when copying multiple files (now resolved) Support 6
C COMSPEC constantly reset to TCC.EXE Support 6
rconn News Take Command / TCC / CMDebug / TCC-RT v28 Released Support 0
C How to? starting TCC/TCMD v25 Support 2
CWBillow TCC and TCMD in Powershell Support 6
rconn News Take Command / TCC / CMDebug / TCC-RT 27.01.24 uploaded Support 0
rconn News Take Command / TCC / CMDebug / TCC-RT 27.01.23 uploaded Support 0
Alpengreis Fixed Crash after copy dialog with big TCC.exception.log Support 5
rconn News Take Command / TCC / CMDebug / TCC-RT v27.01 Build 22 Uploaded Support 0
L FTYPE in TCC, less quirky than in cmd.exe Support 3
V Set path permanently from within TCC? Support 3
DrusTheAxe Runaway TCC.exception.log filling drive Support 5
rconn News Take Command / TCC / CMDebug / TCC-RT 27.0.21 uploaded Support 0
Joe Caverly tcc.exception.log Support 3
rconn News Take Command / TCC / CMDebug / TCC-RT 27.0.20 uploaded Support 0
rconn News Take Command / TCC / CMDebug / TCC-RT 27.0.19 Support 0
FreezerBurnt Help making a CMD and TCC compatible batch file Support 7
vefatica SCRIPT ... TCC disappears Support 2
rconn News Take Command / TCC / CMDebug / TCC-RT v27.0.18 Support 0
Jesse Heines Access Denied errors in TCC 27 Support 9
fpefpe How to? tcc inifile (%_ininame) Support 3
M How to? Black TCC Prompt Support 2
D Differences between TCC and CMD with COPY /b Support 4
M Oracle batch OPatch.bat.bat not working in TCC but correctly in CMD Support 5
Jay Sage Extra TCC Tasks Support 6
vefatica Can I turn off the minimize to tray mechanism in TCC? Support 5
N Command execution slows down in TCC Prompt after a while Support 6
R Upgrade TCMD 19 to TCC 26 Support 1
Joe Caverly Set a batch variable (%1 - %n) when TCC is executing a batch file Support 5
samintz How to? Is this doable in TCC? Support 2
rconn News Take Command / TCC / CMDebug / TCC-RT 26.02.41 Uploaded Support 0
D TCC tab detaching & restarting Support 3
Ó Recent git output not shown on TCC Support 1
P Kill all other instances of tcc from a btm batch file Support 2
L Using TCC.exe through an SSH connection Support 3
M TCC color issue in ConEmu Support 4
Alpengreis UTF-8 problem in TCC related to Python Support 7
Alpengreis Python support for 3.8.3 in TCC v26.x? Support 2
rconn News Take Command / TCC / CMDebug / TCC-RT 26.01.40 uploaded Support 0
Peter Murschall TCC V26.01.3x Debugging has problems with Alias /R Support 1
rconn News Take Command / TCC / CMDebug / TCC-RT 26.0.37 Uploaded Support 0
vefatica TCC waits for Office apps Support 4
Joe Caverly .BAT works in TCC-RT 25, but not in TCC-RT 26 Support 4
M Strange error messages from TCC in FTP copy Support 7
Kachupp Documentation tcc-rt versions Support 1
V Comments from a first-time user (TCC 26) Support 6
rconn News Take Command / TCC / CMDebug / TCC-RT 26.0.28 Support 0
C TCC 26 BATCOMP BTM problems? Support 5
E TCC/CMD difference Support 5
rconn News Take Command / TCC / CMDebug / TCC-RT Public Beta RC2 Support 0

Similar threads