Re: desktop schemas review [was: Re: GSettings migration status]

Alexander Larsson wrote:
On Sat, 2010-07-03 at 13:25 -0400, Ryan Lortie wrote:
On Sat, 2010-07-03 at 13:37 +0200, Christian Persch wrote:
This is a common error. Filenames need to be stored as "ay" and *NOT*
"s" (since "s" is UTF-8). (I think this needs some enhancement in
glib-compile-schemas to be able to still put a string in <default>.)
I'm not sure I buy into your hardline stance on this one.

I think it's not unreasonable to require that all filenames specified in
the settings be in a valid encoding (whatever that encoding is) on their
own filesystem (where "in a valid encoding" means "converts correctly to
and from unicode").  In that case, utf8 is appropriate here.

This is not right at all. Anything that does that is broken for two

1) Technically for unix all filenames are "valid" if they are byte
strings without the characters zero and '/'. If you enforce anything
else on your filenames there *will* be actual files on the system that
you can't store references too. I've fixed soo many bugs from people
thinking filenames are "utf8 strings", they are just not, they are byte
arrays. This sucks, but its reality and we have to handle it.

2) Storing a "converted" pathname (for instance from filename encoding
to utf8) is a bad idea, even if it succeeds. First of all, the encoding
is runtime dependent (env vars) so may change over time, secondly
roundtripping to unicode and back does not necessarily get you the same
exact bytes back, so you might not be able to actually open the file.

I've spent lots of work getting this right in e.g. gvfs, where raw
filenames are G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, but e.g.
standard::display-name is G_FILE_ATTRIBUTE_TYPE_STRING. Please don't
break this. Filenames are not unicode strings, they are byte array

Given that users may store file names in arbitrary encodings,
what is the best way to determine the encoding for display in
a file viewer?

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]