diff --git a/examples/findxattr/main.go b/examples/findxattr/main.go new file mode 100644 index 0000000..1635669 --- /dev/null +++ b/examples/findxattr/main.go @@ -0,0 +1,42 @@ +// Copyright (c) 2018 Versity Software, Inc. +// +// Use of this source code is governed by a BSD-3-Clause license +// that can be found in the LICENSE file in the root of the source +// tree. + +package main + +import ( + "fmt" + "log" + "os" + + scoutfs "github.com/versity/scoutfs-go" +) + +func main() { + if len(os.Args) != 3 || os.Args[1] == "-h" { + fmt.Fprintln(os.Stderr, "usage:", os.Args[0], " ") + os.Exit(1) + } + + f, err := os.Open(os.Args[1]) + if err != nil { + log.Fatalf("open %v: %v", os.Args[1], err) + } + + q := scoutfs.NewXattrQuery(f, os.Args[2]) + + for { + inodes, err := q.Next() + if err != nil { + log.Fatalf("Next(): %v", err) + } + if inodes == nil { + break + } + for _, inode := range inodes { + fmt.Println(inode) + } + } +} diff --git a/examples/listxattr/main.go b/examples/listxattr/main.go new file mode 100644 index 0000000..d79c8c5 --- /dev/null +++ b/examples/listxattr/main.go @@ -0,0 +1,42 @@ +// Copyright (c) 2018 Versity Software, Inc. +// +// Use of this source code is governed by a BSD-3-Clause license +// that can be found in the LICENSE file in the root of the source +// tree. + +package main + +import ( + "fmt" + "log" + "os" + + scoutfs "github.com/versity/scoutfs-go" +) + +func main() { + if len(os.Args) != 2 || os.Args[1] == "-h" { + fmt.Fprintln(os.Stderr, "usage:", os.Args[0], "") + os.Exit(1) + } + + f, err := os.Open(os.Args[1]) + if err != nil { + log.Fatalf("open %v: %v", os.Args[1], err) + } + + lxr := scoutfs.NewListXattrRaw(f) + + for { + attrs, err := lxr.Next() + if err != nil { + log.Fatalf("next(): %v", err) + } + if attrs == nil { + break + } + for _, attr := range attrs { + fmt.Println(attr) + } + } +} diff --git a/scoutfs.go b/scoutfs.go index 85efbcd..95179b4 100644 --- a/scoutfs.go +++ b/scoutfs.go @@ -447,7 +447,7 @@ func (l *ListXattrRaw) Next() ([]string, error) { buf := make([]byte, 256*1024) l.lxr.buf = uintptr(unsafe.Pointer(&buf[0])) - n, err := scoutfsctl(l.f.Fd(), IOCFINDXATTRS, uintptr(unsafe.Pointer(&l.lxr))) + n, err := scoutfsctl(l.f.Fd(), IOCLISTXATTRRAW, uintptr(unsafe.Pointer(l.lxr))) if err != nil { return nil, err }