[Issue 19756] New: Add extended attributes support to std.file
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Mar 20 11:53:00 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=19756
Issue ID: 19756
Summary: Add extended attributes support to std.file
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P4
Component: phobos
Assignee: nobody at puremagic.com
Reporter: dlang-bugzilla at thecybershadow.net
Many operating systems and filesystems support adding short, arbitrarily-named
attributes to files. The way this is done is OS-specific. std.file should
provide a cross-platform interface to set, query, enumerate, and remove these
attributes.
The following supported OSes support extended attributes:
- Linux (getxattr family of functions, already in Druntime)
- FreeBSD (VOP_GETEXTATTR family)
- OSX (getxattr but a different API)
- Windows apparently supports extended attributes in FAT, HPFS, and NTFS.
I found some sample PowerShell code to access them here:
https://gist.github.com/jaredcatkinson/f1cd44a8605e05c2661bdeca558c03e1
However, it seems to be using kernel mode APIs and I'm not sure how that's
done from userspace. More research is needed. Windows seems to have a protected
"$Kernel." namespace which is similar to the "system." namespace in the Linux
kernel.
Note that alternate data streams (a different feature present in some
filesystems) is occasionally used for metadata on Windows, see e.g.
"Zone.Identifier" which is used to control whether to prompt users when opening
files downloaded from the Internet.
I have an implementation of a D wrapper around the Linux APIs here:
https://github.com/cybershadow/ae/blob/master/sys/file.d (search for XAttr)
The interface should be suitable for other platforms as well.
--
More information about the Digitalmars-d-bugs
mailing list