#1 Burning Software

It is currently Mon Apr 29, 2024 12:58 pm

All times are UTC




Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: Document of Joliet Restrictions?
PostPosted: Mon May 23, 2005 6:06 pm 
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!


Top
  
 
 Post subject: Re: Document of Joliet Restrictions?
PostPosted: Tue May 24, 2005 1:24 am 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
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!


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 25, 2005 4:56 pm 
4) I'm currently passing FALSE for IsInvalidKidIgnore, and when I add folders where the folder name itself is valid (say, 100 characters long and not containing any invalid characters) but would make the total directory name be too long, I don't get a COLLISION callback. So for example, if I create a folder in the root of my disc that has a 100-character name, and create a folder in that folder that's 100 characters long, and create a folder in that folder that's 100 characters long, that's a total of 300 characters in the path, and I'm pretty sure the Joliet spec says the maximum path is 240 characters, but no COLLISION callback.


Top
  
 
 Post subject:
PostPosted: Wed May 25, 2005 8:23 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
Not exactly... You'll have three DIFFERENT file entries each one describing 100 byte long name. See what I mean?

betty crokker wrote:
4) I'm currently passing FALSE for IsInvalidKidIgnore, and when I add folders where the folder name itself is valid (say, 100 characters long and not containing any invalid characters) but would make the total directory name be too long, I don't get a COLLISION callback. So for example, if I create a folder in the root of my disc that has a 100-character name, and create a folder in that folder that's 100 characters long, and create a folder in that folder that's 100 characters long, that's a total of 300 characters in the path, and I'm pretty sure the Joliet spec says the maximum path is 240 characters, but no COLLISION callback.


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 26, 2005 3:21 pm 
Sorry, I'm still confused :?

A couple different places on the web say that Joliet has two restrictions - one restriction on the length of an individual folder name, and one restriction on the total length of the path to get to a file (names of all folders in the path to that file plus the file name itself).

The name of a folder (according to what I've read) can't exceed 128 bytes, and since names are stored in Unicode, that means 64 characters. However, StarBurn will let me create folder names up to 107 characters long, and Windows will happily read them.

The total length of a path to get to a file can't exceed 240 bytes (or 120 characters), though it seems like Windows is happy if the total length doesn't exceed 255 characters.

So it seems like Windows will accept a lot of things that the Joliet spec says are illegal.

Is there a web site you would recommend that has a good description of the Joliet spec? Maybe it's just my misunderstanding of the web sites I've been reading that is getting me confused ...


Top
  
 
 Post subject:
PostPosted: Thu May 26, 2005 7:01 pm 
Offline
Site Admin

Joined: Fri Jun 18, 2004 12:03 am
Posts: 4089
Location: British Virgin Islands
OK, I'll try again :)

1) file entry itself cannot be more then 256 bytes (size member is only byte long). So we have not more then 240 bytes for name itself and 16 bytes for system data. StarBurn uses some extra space for extended (optional) attributes leaving 216 bytes for name. So for ISO9660 name can be 216-1 bytes and for Joliet it can be 216-1/2 (b/s of double-byte charaters) = 107 characters. Yes, Joliet specification would force you to have not more then 64 characters (double-byte) for the name. But virtually nobady (including file system drivers writes) stick with this rule. As ISO9660 names are stored in "short" form in the other file tree it does not matter how long would be Joliet name (until supported). If target OS would not understand Joliet names it would pick up always working ISO9660 file tree.

2) tree cannot be more then 8 levels deep for ISO9660. So if you want compatiblity between other FSes you don't need to store more then 8 leves for Joliet also.

2) path itself cannot be more then 256 bytes. As I've told Windows would support long file names - no problem. Alternative ISO9660 names would contain "short" alternative names so there's no problem also here.

Here's link to Joliet specification:

http://bmrc.berkeley.edu/people/chaffee/jolspec.html

I also had PDF document but I cannot find it :(

betty_crokker wrote:
Sorry, I'm still confused :?

A couple different places on the web say that Joliet has two restrictions - one restriction on the length of an individual folder name, and one restriction on the total length of the path to get to a file (names of all folders in the path to that file plus the file name itself).

The name of a folder (according to what I've read) can't exceed 128 bytes, and since names are stored in Unicode, that means 64 characters. However, StarBurn will let me create folder names up to 107 characters long, and Windows will happily read them.

The total length of a path to get to a file can't exceed 240 bytes (or 120 characters), though it seems like Windows is happy if the total length doesn't exceed 255 characters.

So it seems like Windows will accept a lot of things that the Joliet spec says are illegal.

Is there a web site you would recommend that has a good description of the Joliet spec? Maybe it's just my misunderstanding of the web sites I've been reading that is getting me confused ...


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 39 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group