pardon my ignorance but, is the host the Model T or is it the other way around?
On Sat, 27 Mar 2021 at 07:00, Brian K. White <[email protected]> wrote: > On 3/5/21 2:26 AM, Brian K. White wrote: > > On 3/4/21 7:23 PM, Peter Vollan wrote: > >> When using dlplus in Linux, you must make sure that all of the files > >> in the desklink directory are in all CAPITAL letters. If not, then > >> files will appear to transfer but those files will actually be mostly > >> null characters. So "file.do" is unacceptable, it must be FILE.DO. > >> Just one file that does not follow this rule could screw up all of > >> your downloads. It took me years of tearing my hair out and a half > >> dozen serial to USB convertors before I deduced this. > > > > Just a day or so ago I changed the default behavior not to mess with the > > filenames. > > > > Originally it was converting names to uppercase by default, but I think > > not doing the job fully, so it just made things worse when something > > didn't work and you're trying to figure out why not. > > > > It was screwing me up while trying to work with REXCPM. > > > > I reversed the default behavior so now it's "what you see is what you > get". > > > I think I just fixed that uppercase option in dlplus. > > Originally there was code in there to try to be case-insensitive and > display all uppercase to the client by default, and there was a "-f" > commandline flag to disable that. But as we discovered, the uppercase > conversion wasn't actually working. > > So a few weeks ago I reversed the logic to disable the case-insensitive > uppercase by default, and use a "-u" option to enable it, then actually > hid that -u from the help output since it wasn't actually working. > > Now I found the original problem, but am leaving the new default > behavior and -u option to get the uppercase behavior. > > So now, by default, it's case-sensitive on the host, and displays the > true filenames to the client. And the -u option makes it > case-insensitive on the host, and displays all uppercase to the client. > (which should probably go back to being default as long as it works, but > I'm not going to do that yet) > > The reason it used to produce zero-byte files was that, the host would > display a fictitious all uppercase filename to the client, and when the > user asks to load a file, TS-DOS would immediately create the empty file > on the client when the user hits the F1-Load button and answers Y, > before actually getting any data from the server. > > Then the server would try to open() the requested filename, which is the > uppercase version of the filename, which doesn't exists, so the server > sends back an error response to the client, and TS-DOS reports that as a > communication error and aborts the operation, but leaves behind the > empty new file it already created. > > The fix in the code was easy. The work of scanning all the files and > doing the case-insensitive match and remembering both the fake and real > filenames was already in there done by John I think. Merely in the > routine that opens a file, it was using the variable that holds the > filename as it came from the client, rather than the struct element that > holds the matching real filename. > > So, for bootstrapping REXCPM, or anything else where you get files with > mixed case on the host but things on the 100 expect them to all be > uppercase, you can use "dl -u" without having to rename all the files on > the host. > > -- > bkw >
