Unicode filenames in an ISO9660 file-system
chrisj at rtems.org
Thu Jul 14 05:48:24 UTC 2011
On 14/07/11 4:37 AM, Christophe Huriaux wrote:
> I'm about to implement the Joliet extension in the ISO9660 filesystem
> as part of my GSoC project.
Well done on the progress.
> This extension removes the limitations on
> the character set used (the ISO9660 standard implies a character set
> comprising only uppercase letters, digits and underscores in a
> filename.extension format), and brings the internationalization thanks
> to Unicode filenames.
> In order to maintain backward compatibility for systems which doesn't
> handle the Joliet extension, every entry in the directory structure of
> the ISO9660 volume is recorded twice :
> - One which is fully ISO9660 compliant (for older systems)
> - Another one with Unicode and long filenames support
> Since the RTEMS iso9660 implementation is going to be aware of those
> Unicode encoded records, I'll have to make a decision on how to handle
> them, should I :
> - use Joliet records and leave the filenames unchanged to the
> upper layers (and thus to the final application) : the end application
> should be able to interpret the character set (which is not the case,
> RTEMS is not designed to handle Unicode strings AFAIK, does it ?)
> - use Joliet records and somehow convert the filenames in an other
> character set in order to avoid compatibilty breaks
> - don't use Joliet at all : "classic" filenames (lowercase,
> special characters, ...) would not be handled in this case and it limits
> data interchange.
> I need comments from RTEMS users since I don't know all the internal
> of the OS, maybe I'm wrong regarding the Unicode support.
I do not know. I suppose it comes down to the cost in terms of code to
implement this. If it is not a big deal I would include it and look at
some sort of mount options to manage it. I suppose you can have
disabled, enable with mapping tables and pass through. By mapping tables
I was wondering if some sort to translation table can be used. Check the
DOSFS code. There is some support for this kind of thing
More information about the users