keywords: don't fail on presence of "flags"

BSD file's support "flags". These have some similarity with xattr, but
for specific features, rather than general purpose key/values.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2016-10-31 13:25:11 -04:00
parent 84f1e6ebc6
commit e45837faea
Signed by: vbatts
GPG key ID: 10937E57733F1362
3 changed files with 23 additions and 1 deletions

View file

@ -165,7 +165,7 @@ var (
BsdKeywords = []string{
"cksum",
"device",
"flags",
"flags", // this one is really mostly BSD specific ...
"ignore",
"gid",
"gname",
@ -226,6 +226,8 @@ var (
"sha512": hasherKeywordFunc("sha512digest", sha512.New), // The SHA512 message digest of the file
"sha512digest": hasherKeywordFunc("sha512digest", sha512.New), // A synonym for `sha512`
"flags": flagsKeywordFunc, // NOTE: this is a noop, but here to support the presence of the "flags" keyword.
// This is not an upstreamed keyword, but used to vary from "time", as tar
// archives do not store nanosecond precision. So comparing on "time" will
// be only seconds level accurate.

15
keywords_bsd.go Normal file
View file

@ -0,0 +1,15 @@
// +build darwin freebsd netbsd openbsd
package mtree
import (
"io"
"os"
)
var (
flagsKeywordFunc = func(path string, info os.FileInfo, r io.Reader) (string, error) {
// ideally this will pull in from here https://www.freebsd.org/cgi/man.cgi?query=chflags&sektion=2
return "", nil
}
)

View file

@ -14,6 +14,11 @@ import (
)
var (
// this is bsd specific https://www.freebsd.org/cgi/man.cgi?query=chflags&sektion=2
flagsKeywordFunc = func(path string, info os.FileInfo, r io.Reader) (string, error) {
return "", nil
}
unameKeywordFunc = func(path string, info os.FileInfo, r io.Reader) (string, error) {
if hdr, ok := info.Sys().(*tar.Header); ok {
return fmt.Sprintf("uname=%s", hdr.Uname), nil