-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Michael,
Michael B Allen wrote: > On Mon, 17 Oct 2005 10:20:06 +0200 Jelmer Vernooij > <[EMAIL PROTECTED]> wrote: > >>>> This breaks xattr binary compatibility with previous versions >>>> - is that a problem? >>> >>> I'd prefer not to break compatibility unless its really >>> necessary. Can we really not support a simple null terminated >>> utf8 string now? >>> >>> >>> The reason I deliberately chose the old format is that it is >>> particularly simple to hand marshall. The xattr.idl is written >>> as IDL for us, but I am hoping other projects (wine, the kernel >>> etc) will support our xattr format. Keeping the format really >>> easy to hand marshall makes it easier for those projects to not >>> use an IDL compiler if they don't want to. >>> >>> It it impossible to support a simple null terminated utf8 >>> string with the new [string] approach? >> >> The problem is not so much in that pidl can't support "simple" >> null-terminated utf8 strings, but more in the fact that it is not >> possible to use it in other IDL compilers (such as MIDL or >> WIDL). Please let me know which of the two you prefer, and I'll >> fix it. > > > How about providing an optional wire encoding in parathesis like > [string(UTF-8)] where the encoding is the standard identifier used > by iconv? This way you can keep unistr AND support [string]. This > is what I think I'm going to do with midlc but I haven't really > looked into it yet so I don't know if it works out in practice. We used to have a data type 'string' (as you might have seen) from which unistr was derived. We are now migrating to using [string] everywhere, but optionally also specifying the character set (for automatic conversion, very similar to what you propose), with the "charset" attribute. For example: [charset(UTF16),string] uint16 *foo_bar; The allowed arguments for charset() are currently UTF8, DOS, UTF16, UNIX and UTF16_BE, but I'd be happy to change that if there is good reason to. Cheers, Jelmer -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFDU+4HPa9Uoh7vUnYRAtFsAJ9TbKngiGLSOpnoC6JUnlFnzdGdMACaAr7l zdXLxNMmiX36mNDipln8+p8= =/TPK -----END PGP SIGNATURE-----
