hi5 wrote: ↑
2019-11-11, 22:29 UTC
Bump for removal of UC2 in 9.5
Christian Ghisler is considering removing the UC2 support. However, I reported some remaining UC2-related bugs to Christian by email and asked to consider a possibility to fix at least some of them before removing UC2 support from TC. Christian Ghisler then wrote he will consider fixing at least one of that bugs.
I see no point to post that bugs as separate topics in Bug Reports forum, instead I'll just describe them below, so if there will be a decision to remove UC2 support before getting any of mentioned bugs fixed, this post may be separated from this topic and moved to Behavior will not be changed subforum.
1 and 2.
Bugs 1 and 2 (related). For both following bugs it looks like TC doesn't pass some correct 8.3 name at some stage of dealing with UC.EXE, so I consider below as TC bugs. To reproduce:
1) open in both TC panels the same path, but using different names:
in 1st panel open its long name path, so it will look like c:\longnametest\1\,
and 2nd pane open its 8.3 path, so it will look like c:\longna~1\1\
2) make a long name file in this dir with f.e. "name.eng.txt" as a long name with its "nameen~1.txt" as a 8.3 one
3) Execute cm_switchlongnames command, so TC will show 8.3 name of file "name.eng.txt" in 1st panel
4) bug 1: in a panel with 8.3 path (2nd panel in above steps),
try to pack nameen~1.txt: it will fail with error from UC2:
Code: Select all
SYSTEM ERROR: path not found (attempting to create C:\LONGNANMETEST\1\U$$VRKAI.TMP)
Packing from panel with long path (2nd panel in above steps) will work fine, you'll get an archive nameen~1.uc2 with a file nameen~1.txt inside. We'll use it to reproduce next bug.
5) bug 2: try to open the archive nameen~1.uc2 we made in step 4 from 1st panel (where current path is a long name path), TC will show an error:
Code: Select all
Error in packed file c:\longnametest\1\nameen~1.uc2!
Notes: unpacking archives with Alt+F6 works for both long and 8.3 path panels.
Bugs doesn't seem to occur if cm_swithlongnames mode is off (=TC shows long names in panel filelist).
Packing to long named UC2 archive isn't correct due to bug in UC.exe:
if we're packing files to .uc2 archive, UC.exe cuts archive name to 12 characters,
but it's not a unique 8.3 name of a file, but just 1st 12 characters of a long name we had in TC Pack Files dialog.
Which means if we're packing using TC some files to UC2 archives with different long names with the same first 12 characters, all files will go to the same UC2 archive which has that 12 first characters as its name.
Possible solutions for TC as shell:
a) cosmetic one: TC can itself cut the name of UC2 archive to 12 characters and show it like that it in Pack Files dialog, and show a warning if user will edit it to try to make it longer with the message that it will be cut to 12 characters anyway;
b) solution that will allow to pack to long name archives.
uc2 can create 60-byte empty archive (I sent a sample of such archive to Christian Ghisler by email).
TC can itself create such archive with a long name from Pack Files field.
This archive will have unique 8.3 name. TC can then pass that 8.3 name to UC.exe passing the list of files from source panel to pack, this will work fine.
Serious problem, due to bug in UC.exe: it CAN'T pack files (not folders!) with at least some non-English names, like files with Cyrillic character-names to UC2 archives.
Even though UC.EXE works only with 8.3 names, due to this bug it can't pack files with cyrillic long names even if latin short names are present for such files and are passed to UC.EXE.
However, since UC.exe packs files without cyrillic long names (so they only have latin 8.3 names) just fine,
there is a possible solution which uses symlinks, so it requires NTFS and should work on Vista+.
It may be used to pack such files and store their 8.3 names in resulting UC2 archive.
The point of solution is that TC as a shell may create a tree structure with full path and 8.3 names of files with cyrillic names we're packing somewhere in a root of %tmp%\_tc (assuming this is NTFS location) and pass this tree as a list to UC.exe.
UC.exe packs the content of original files if symlinks are passed to it, so this solution will work.
There is no need to for complicated filtering non-English long names to create symlinks only for them, you can just add this as an option "Don't store long names in uc2", so TC will re-create the tree of all original dirs and files 8.3 names and pass that to packer.
This bug if half of TC and half of UC2, and was partially fixed in 2010:
HISTORY.TXT wrote:22.01.10 Fixed: Open an UC2-packed file could leave a file "U$~reslt.ok" in directory of the archive -> explicitly delete it
However, under following coditions the file U$~RESLT.OK still appears:
1. Start TC, dirs in left & right panels may be completely different.
2. Open uc2 archive in left panel.
3. Press Tab to switch to right panel.
4. Refresh right panel with Ctrl+R: you'll see U$~RESLT.OK file there.
This U$~RESLT.OK is created only 1st time I open uc2 archive in certain panel.
Problems caused by this bug: U$~RESLT.OK file appears and stays undeleted in a path of panel opposite to one where archive is opened, and the timestamp of a folder in that opposite panel changes to a time of that U$~RESLT.OK file creation.