From: Tom P. <kar...@gm...> - 2010-07-28 11:44:42
|
Hi, all. I tried to find the bug tracker for this project, but I couldn't see one anywhere, so if I'm posting in the wrong place please just point me to the right one. It seems that the Python libraries fail silently when a unicode name is passed into Direntry. I'm not sure quite when or where the failure occurs, but it's easily replicated: 1) Take a working Fuse filesystem 2) Add a fake dir entry to readdir, e.g.: yield fuse.Direntry('xxx') 3) Start the filesystem and list a directory (it complains about the fake entry, but otherwise works fine). 4) Stop the filesystem and change the fake entry to a unicode string, e.g. yield fuse.Direntry(u'xxx') 5) Start the filesystem and list a directory. There is no output or error message, nor any error messages on the running Fuse process (if in debug mode). I believe this to be a genuine bug, firstly because (I think) you should be able to return unicode file names, but mostly because of the silent nature of the failure. I am running the fuse bindings obtained by 'apt-get install python-fuse' on Ubuntu 10.04, so this may be a known and fixed problem, but without looking at a bug tracker I can't tell. Thanks a lot, Tom |
From: Sven U. <sve...@gm...> - 2010-07-28 18:33:35
|
Hello Tom, > 4) Stop the filesystem and change the fake entry to a unicode string, e.g. > yield fuse.Direntry(u'xxx') Hmm. This would not, by any chance, be stored as "007800780078"? > 5) Start the filesystem and list a directory. > > There is no output or error message, nor any error messages on the running > Fuse process (if in debug mode). > > I believe this to be a genuine bug, firstly because (I think) you should be > able to return unicode file names, but mostly because of the silent nature > of the failure. In that case, chances are _very_ high that somewhere on the way the string containing the filename will be clipped after the first \0 --- i.e. immediately. I don't think you can have unicode filenames, neither in fuse, nor anywhere else in Linux. utf-8, on the other hand, ought to work fine... Sven -- _ ___ ___ ___ __| |/ __|| __|/ __| The dCache File System / _` | (__ | _| \__ \ An archive file-system for PB of data \__,_|\___||_| |___/ http://www.desy.de/~utcke/Data/ |
From: Tom P. <kar...@gm...> - 2010-07-30 13:18:32
|
Yep, that's done it, thanks! I still think there's a bug here, though -- it really shouldn't fail silently. For the record, this works fine: yield Direntry(r.encode('utf_8', 'replace')) in readdir, and path = path.decode('utf_8') in getattr and readdir. Thanks again, Tom On 28 July 2010 19:33, Sven Utcke <sve...@gm...> wrote: > Hello Tom, > > > 4) Stop the filesystem and change the fake entry to a unicode string, > e.g. > > yield fuse.Direntry(u'xxx') > > Hmm. This would not, by any chance, be stored as "007800780078"? > > > 5) Start the filesystem and list a directory. > > > > There is no output or error message, nor any error messages on the > running > > Fuse process (if in debug mode). > > > > I believe this to be a genuine bug, firstly because (I think) you should > be > > able to return unicode file names, but mostly because of the silent > nature > > of the failure. > > In that case, chances are _very_ high that somewhere on the way the > string containing the filename will be clipped after the first \0 --- > i.e. immediately. > > I don't think you can have unicode filenames, neither in fuse, nor > anywhere else in Linux. utf-8, on the other hand, ought to work > fine... > > Sven > -- > _ ___ ___ ___ > __| |/ __|| __|/ __| The dCache File System > / _` | (__ | _| \__ \ An archive file-system for PB of data > \__,_|\___||_| |___/ http://www.desy.de/~utcke/Data/<http://www.desy.de/%7Eutcke/Data/> > > > ------------------------------------------------------------------------------ > The Palm PDK Hot Apps Program offers developers who use the > Plug-In Development Kit to bring their C/C++ apps to Palm for a share > of $1 Million in cash or HP Products. Visit us here for more details: > http://p.sf.net/sfu/dev2dev-palm > _______________________________________________ > fuse-devel mailing list > fus...@li... > https://lists.sourceforge.net/lists/listinfo/fuse-devel > |
From: Nikolaus R. <Nik...@ra...> - 2010-07-29 01:24:19
|
Tom Potts <kar...@pu...> writes: > It seems that the Python libraries fail silently when a unicode name is > passed into Direntry. Unicode doesn't say much. Which encoding are you using? Directory entries must not contain \0 bytes, but e.g. UTF-16 may encode some characters using \0 bytes. UTF-8 should work though. Best, -Nikolaus -- »Time flies like an arrow, fruit flies like a Banana.« PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C |