[openbeosstorage] Re: Progress Update

Tyler Dauwalder <tyler@xxxxxxxxxxxxx> wrote:
> Well, at least you've been able to accomplish something productive. 
> I've just been plain worthless of late. Meanwhile, Axel appears to 
> have 
> hired a small firm to augment his contributions. ;-)

Damn, was it that obvious=3F ;-))

>... 
> > > Nice!
> > > Just a short question, now that I you've done all the hard work: 
> > > will
> > > the ISO-9660 fs module recognize the Joliet volume name as well=3F
> > > :-)
> Not currently. It's not difficult to find the Joliet volume name, but 
> it has to be converted from Unicode to something useful. Is there a 
> handy way to do that in the kernel, yet=3F If not, do you suppose that 
> might be something worth adding=3F I have to admit that non-ASCII 
> encodings are a bit foreign to me, being a pampered English-only 
> speaker.

Joliet uses unicode, while RockRidge/BeOS uses UTF-8 encoding.
From the upcoming locale kit (for use with OpenTracker first):

void
BUnicodeChar::ToUTF8(uint32 c, char **out)
{
        char *s =3D *out;

        if (c < 0x80)
                *(s++) =3D c;
        else if (c < 0x800) {
                *(s++) =3D 0xc0 | (c >> 6);
                *(s++) =3D 0x80 | (c & 0x3f);
        } else if (c < 0x10000) {
                *(s++) =3D 0xe0 | (c >> 12);
                *(s++) =3D 0x80 | ((c >> 6) & 0x3f);
                *(s++) =3D 0x80 | (c & 0x3f);
        } else if (c <=3D 0x10ffff) {
                *(s++) =3D 0xf0 | (c >> 18);
                *(s++) =3D 0x80 | ((c >> 12) & 0x3f);
                *(s++) =3D 0x80 | ((c >> 6) & 0x3f);
                *(s++) =3D 0x80 | (c & 0x3f);
        }
        *out =3D s;
}

This will do the trick; if you'd find the time, it would be a very nice 
advantage over the original DS-Add-on. But of course, I could also do 
it, if you don't want to :-)

Adios...
   Axel.



Other related posts: