Mail Archives: cygwin/2024/01/11/11:41:42
On Jan 11 15:00, Martin Wege via Cygwin wrote:
> On Mon, Jan 8, 2024 at 3:11 PM Corinna Vinschen via Cygwin
> <cygwin AT cygwin DOT com> wrote:
> so this is IMO OK.
Yeah, but...
It's not just an open flag, it requires extending functionality of other
APIs and, for full support, tools, see
https://docs.oracle.com/cd/E19253-01/816-5175/6mbba7f02/.
It's also rather weird to call alternate data streams "extended
attributes", because that's just a small part of streams and it's
already supported via the Linux functions getxattr(2) and friends, see
https://man7.org/linux/man-pages/man2/getxattr.2.html
> > Apart from that, this sounds like a nice idea for Cygwin 3.6,
> > provided somebody implements it, https://cygwin.com/acronyms/#SHTDI
> >
> > Assuming we can live without actually having a subdir and just
> > allowing to open and create a file with the O_XATTR flag, it might be
> > pretty simple to implement. The path handling code would just have to
> > drop the colon from the list of characters converted to the private-use
> > Unicode area.
> >
> > Implementing the subdir is a bit more complicated, especially when
> > taking opendir/readdir of that virtual subdir into account, but it
> > would certainly be doable.
>
> How do other OSes implement the O_XATTR subdir?
IDK. But there are a few points we have to keep in mind from the
Solaris man page:
- Given fd is an open file descriptor,
openat(fd, ".", O_RDONLY|O_XATTR);
opens the virtual subdir containing the ADS of a file. It's the
only valid way to open the virtual dir. That's a bit of a relief
because it simplifies handling this in openat(2).
openat(fd, "foo", ...|O_XATTR);
allows to create or open an ADS for an open file fd.
- unlinkat, renameat, fstatat, fchownat, futimesat and fdopendir need to
be made ADS-aware. They only work on ADS if the fd arg already
resolves to an ADS, or if fd is the virtual ADS dir of a file and
(except in case of fdopendir) the path argument is the name of an
existing ADS.
- pathconf needs to support a new flag XATTR_ENABLED.
This can be made to work given the current fhandler framework in Cygwin,
but again, https://cygwin.com/acronyms/#SHTDI
FTR, I'm generally not a friend of ADS, because they look like a builtin
security problem. They don't show up in standard directory listings,
and you can't even see that a file has ADS, except you look for them
explicitely. This is a really user-unfriendly interface.
Corinna
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple
- Raw text -