On 2018-06-04 13:23:59 +0000, Steven D'Aprano wrote: > On Mon, 04 Jun 2018 13:33:28 +0100, Paul Moore wrote: > > But there's also the question of what capability the kernel API has to > > express the queries. The fact that the Unix API (and the Windows one, in > > most cases - although as Eryk Sun pointed out there are exceptions in > > the Windows kernel API) uses NUL-terminated strings means that querying > > the filesystem about filenames with embedded \0 characters isn't > > possible *at the OS level*. > > I don't know whether or not the Linux OS is capable of accessing files > with embedded NULs in the file name. But Mac OS is capable of doing so, > so it should be possible. Wikipedia says: > > "HFS Plus mandates support for an escape sequence to allow arbitrary > Unicode. Users of older software might see the escape sequences instead > of the desired characters."
I don't know about MacOS. In Linux there is no way to pass a filename with an embedded '\0' (or a '/' which is not path separator) between the kernel and user space. So if a filesystem contained such a filename, the kernel would have to map it (via an escape sequence or some other mechanism) to a different file name. Which of course means that - from the perspective of any user space process - the filename doesn't contain a '\0' or '/'. Theoretically that mapping could be reversed in the standard library of a language which allows '\0' in strings (like Python), but since that would mean that programs written in that language see different filenames than programs written in other languages (especially C, which covers the majority of the GNU command line tools), this would be a very bad idea. Much better to have strange but consistent filenames if you mount a "foreign" file system. (This is btw also what Samba does, although it does a spectacularly bad job). hp -- _ | Peter J. Holzer | we build much bigger, better disasters now |_|_) | | because we have much more sophisticated | | | h...@hjp.at | management tools. __/ | http://www.hjp.at/ | -- Ross Anderson <https://www.edge.org/>
signature.asc
Description: PGP signature
-- https://mail.python.org/mailman/listinfo/python-list