diff --git a/internal/protocol/message.go b/internal/protocol/message.go index 5d35f17cb..355050cab 100644 --- a/internal/protocol/message.go +++ b/internal/protocol/message.go @@ -58,6 +58,10 @@ func (f FileInfo) IsDirectory() bool { return f.Flags&FlagDirectory != 0 } +func (f FileInfo) IsSymlink() bool { + return f.Flags&FlagSymlink != 0 +} + func (f FileInfo) HasPermissionBits() bool { return f.Flags&FlagNoPermBits == 0 } @@ -101,6 +105,10 @@ func (f FileInfoTruncated) IsDirectory() bool { return f.Flags&FlagDirectory != 0 } +func (f FileInfoTruncated) IsSymlink() bool { + return f.Flags&FlagSymlink != 0 +} + func (f FileInfoTruncated) HasPermissionBits() bool { return f.Flags&FlagNoPermBits == 0 } @@ -110,6 +118,7 @@ type FileIntf interface { IsDeleted() bool IsInvalid() bool IsDirectory() bool + IsSymlink() bool HasPermissionBits() bool } diff --git a/internal/protocol/protocol.go b/internal/protocol/protocol.go index 7de53eab9..fb51a1c01 100644 --- a/internal/protocol/protocol.go +++ b/internal/protocol/protocol.go @@ -49,10 +49,14 @@ const ( ) const ( - FlagDeleted uint32 = 1 << 12 - FlagInvalid = 1 << 13 - FlagDirectory = 1 << 14 - FlagNoPermBits = 1 << 15 + FlagDeleted uint32 = 1 << 12 + FlagInvalid = 1 << 13 + FlagDirectory = 1 << 14 + FlagNoPermBits = 1 << 15 + FlagSymlink = 1 << 16 + FlagSymlinkMissingTarget = 1 << 17 + + SymlinkTypeMask = FlagDirectory | FlagSymlinkMissingTarget ) const (