commit | 503a7f60d699aeb59d42eefed0c64df14335b13f | [log] [tgz] |
---|---|---|
author | Denys Smirnov <denis.smirnov.91@gmail.com> | Sun Oct 21 23:58:10 2018 +0300 |
committer | Kuba Podgórski <kuba--@users.noreply.github.com> | Sun Oct 21 22:58:10 2018 +0200 |
tree | 018726e754745d27df7a9840ae74d7311fcc83cf | |
parent | d6d5129e8300f066a8935d3d42f09727fe48f010 [diff] |
support "F" variants of operations (on file descriptors) (#36) In unix, there is a possibility to create files without a path, for example by using O_TMPFILE flag in open(2). This change adds a set of "F" variants to all functions that accepts a file descriptor instead of a path. The change is only implemented for Linux, all other platforms use Name() call on a file to get its path.
Extended attribute support for Go (linux + darwin + freebsd).
“Extended attributes are name:value pairs associated permanently with files and directories, similar to the environment strings associated with a process. An attribute may be defined or undefined. If it is defined, its value may be empty or non-empty.” See more...
SetWithFlags
allows to additionally pass system flags to be forwarded to the underlying calls, FreeBSD does not support this and the parameter will be ignored.
The L
variants of all functions (LGet/LSet/...
) are identical to Get/Set/...
except that they do not reference a symlink that appears at the end of a path. See GoDoc for details.
const path = "/tmp/myfile" const prefix = "user." if err := xattr.Set(path, prefix+"test", []byte("test-attr-value")); err != nil { log.Fatal(err) } var list []string if list, err = xattr.List(path); err != nil { log.Fatal(err) } var data []byte if data, err = xattr.Get(path, prefix+"test"); err != nil { log.Fatal(err) } if err = xattr.Remove(path, prefix+"test"); err != nil { log.Fatal(err) } // One can also specify the flags parameter to be passed to the OS. if err := xattr.SetWithFlags(path, prefix+"test", []byte("test-attr-value"), xattr.XATTR_CREATE); err != nil { log.Fatal(err) }