Unfortunately we don't include specifications we've used during writing the library. And I'm not sure it's a good idea to include 'em
Maybe we should add some common asked questions to the FAQ instead?
Back to your questions:
1) File entry structure is limited with 256 bytes (size is stored as byte value according to the spec). So ISO9660 name is around 240 characters and Unicode Joliet name is 108 double-byte characters (additional space is reserved for some extra attributes).
Soon we'll be adding ISO9660-1999 extensions so it would be easier to bypass file system length limitations.
2) ISO9660 and Joliet file system structures do duplicate each other. So if system recognizes Joliet it would pick up Joliet file tree (for example - Windows). If not - ISO9660 would be used (for example - pure DOS). This means if you want to have disc readable everywhere you don't need to store more then 8 levels. Of course this limitation is not strict for Windows but for DOS you may have problems with deep directory structure.
3) Windows has some restrictions itself. So generally speaking it's a bad idea to have complete name longer then MAX_PATH (260 bytes) #define.
Longer names could work (for NTFS) and could not for other FS.
4) You need to play with IsInvalidKidIgnore parameter passed to tree creation. If set to TRUE we'll violate the spec and would create what you've passed to us (just as other burning applications f.e. Nero does). If set to FALSE you'll get either collition of CN_XXX_IGNORE callback with pointer to file name skipped. You can then add this name manually (after renaming or revisiting tree structure).
betty_crokker wrote:
I'm trying to make sure that the disc I create will be a valid Joliet disc, and I think I understand the Joliet restrictions, but there seem to be some inconsistencies. I don't know if it's my inexperience with the Joliet spec or some changes you made in StarBurn based on real-world experiences ... do you have a document that describes Joliet from the point of view of someone trying to author discs (and not somebody trying to build a CD burner or write a CD interface library)?
The disc I make will only be used in Windows machines (though not necessarily XP, I'd like to have the disc be readable in Windows 98 machines).
1) Length of file and folder names. It looks like the Joliet restriction is 128 bytes, and Joliet is always Unicode (right? or can it store in something like UTF-8?) so that means 64 characters. However, StarBurn accepts file and folder names up to 107 characters (108 fails every time)
2) In several of the samples, it mentions trouble if the number of levels exceed 8, but I thought that was one of the reasons to go with Joliet was that you could have as many levels as you want.
3) According to a web page I found on the Joliet spec, the file name plus complete path can't exceed 240 bytes (so 120 characters?) but I'm able to create files in subfolders where the name + path equal 254 characters and they work fine (at least on Windows XP). If name+path are 255 or more, Windows XP displays those files in Windows Explorer but the icon is wrong and the file is not accessible (can't open folders, run executables, etc.).
4) It looks like it's up to me to make sure that my tree structure doesn't exceed the Joliet restrictions - by that I mean that as long as each folder name doesn't exceed 107 characters, I seem to be able to nest them as many levels deep as I want without StarBurn warning me that my folder name is bad or that my folder structure isn't valid, but then the disc isn't necessarily readable. Right? Or is there a function somewhere that lets me ask whether the Joliet tree I've constructed is actually valid?
Thanks!