12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package fuse
- import (
- "fmt"
- )
- // Protocol is a FUSE protocol version number.
- type Protocol struct {
- Major uint32
- Minor uint32
- }
- func (p Protocol) String() string {
- return fmt.Sprintf("%d.%d", p.Major, p.Minor)
- }
- // LT returns whether a is less than b.
- func (a Protocol) LT(b Protocol) bool {
- return a.Major < b.Major ||
- (a.Major == b.Major && a.Minor < b.Minor)
- }
- // GE returns whether a is greater than or equal to b.
- func (a Protocol) GE(b Protocol) bool {
- return a.Major > b.Major ||
- (a.Major == b.Major && a.Minor >= b.Minor)
- }
- func (a Protocol) is79() bool {
- return a.GE(Protocol{7, 9})
- }
- // HasAttrBlockSize returns whether Attr.BlockSize is respected by the
- // kernel.
- func (a Protocol) HasAttrBlockSize() bool {
- return a.is79()
- }
- // HasReadWriteFlags returns whether ReadRequest/WriteRequest
- // fields Flags and FileFlags are valid.
- func (a Protocol) HasReadWriteFlags() bool {
- return a.is79()
- }
- // HasGetattrFlags returns whether GetattrRequest field Flags is
- // valid.
- func (a Protocol) HasGetattrFlags() bool {
- return a.is79()
- }
- func (a Protocol) is710() bool {
- return a.GE(Protocol{7, 10})
- }
- // HasOpenNonSeekable returns whether OpenResponse field Flags flag
- // OpenNonSeekable is supported.
- func (a Protocol) HasOpenNonSeekable() bool {
- return a.is710()
- }
- func (a Protocol) is712() bool {
- return a.GE(Protocol{7, 12})
- }
- // HasUmask returns whether CreateRequest/MkdirRequest/MknodRequest
- // field Umask is valid.
- func (a Protocol) HasUmask() bool {
- return a.is712()
- }
- // HasInvalidate returns whether InvalidateNode/InvalidateEntry are
- // supported.
- func (a Protocol) HasInvalidate() bool {
- return a.is712()
- }
|