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:
parent
84f1e6ebc6
commit
e45837faea
3 changed files with 23 additions and 1 deletions
|
@ -165,7 +165,7 @@ var (
|
||||||
BsdKeywords = []string{
|
BsdKeywords = []string{
|
||||||
"cksum",
|
"cksum",
|
||||||
"device",
|
"device",
|
||||||
"flags",
|
"flags", // this one is really mostly BSD specific ...
|
||||||
"ignore",
|
"ignore",
|
||||||
"gid",
|
"gid",
|
||||||
"gname",
|
"gname",
|
||||||
|
@ -226,6 +226,8 @@ var (
|
||||||
"sha512": hasherKeywordFunc("sha512digest", sha512.New), // The SHA512 message digest of the file
|
"sha512": hasherKeywordFunc("sha512digest", sha512.New), // The SHA512 message digest of the file
|
||||||
"sha512digest": hasherKeywordFunc("sha512digest", sha512.New), // A synonym for `sha512`
|
"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
|
// 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
|
// archives do not store nanosecond precision. So comparing on "time" will
|
||||||
// be only seconds level accurate.
|
// be only seconds level accurate.
|
||||||
|
|
15
keywords_bsd.go
Normal file
15
keywords_bsd.go
Normal 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
|
||||||
|
}
|
||||||
|
)
|
|
@ -14,6 +14,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
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) {
|
unameKeywordFunc = func(path string, info os.FileInfo, r io.Reader) (string, error) {
|
||||||
if hdr, ok := info.Sys().(*tar.Header); ok {
|
if hdr, ok := info.Sys().(*tar.Header); ok {
|
||||||
return fmt.Sprintf("uname=%s", hdr.Uname), nil
|
return fmt.Sprintf("uname=%s", hdr.Uname), nil
|
||||||
|
|
Loading…
Reference in a new issue