github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/io/f_unix.go (about) 1 //go:build !windows && !plan9 2 // +build !windows,!plan9 3 4 package io 5 6 import ( 7 "os" 8 9 "github.com/phayes/permbits" 10 ) 11 12 func matchFlags(add, remove fFlagsT, info os.FileInfo) bool { 13 mode := info.Mode() 14 perm := permbits.FileMode(mode) 15 16 return ((add.File() && mode.IsRegular()) || 17 (add.Dir() && mode.IsDir()) || 18 (add.Symlink() && mode&os.ModeSymlink != 0) || 19 (add.DevBlock() && mode&os.ModeDevice != 0) || 20 (add.DevChar() && mode&os.ModeCharDevice != 0) || 21 (add.Socket() && mode&os.ModeSocket != 0) || 22 (add.NamedPipe() && mode&os.ModeNamedPipe != 0) || 23 24 (add.UserRead() && perm.UserRead()) || 25 (add.GroupRead() && perm.GroupRead()) || 26 (add.OtherRead() && perm.OtherRead()) || 27 28 (add.UserWrite() && perm.UserWrite()) || 29 (add.GroupWrite() && perm.GroupWrite()) || 30 (add.OtherWrite() && perm.OtherWrite()) || 31 32 (add.UserExecute() && perm.UserExecute()) || 33 (add.GroupExecute() && perm.GroupExecute()) || 34 (add.OtherExecute() && perm.OtherExecute()) || 35 36 (add.SetUid() && mode&os.ModeSetuid != 0) || 37 (add.SetGid() && mode&os.ModeSetgid != 0) || 38 (add.Sticky() && mode&os.ModeSticky != 0) || 39 40 (add.Irregular() && mode&os.ModeIrregular != 0)) && 41 42 !((remove.File() && mode.IsRegular()) || 43 (remove.Dir() && mode.IsDir()) || 44 (remove.Symlink() && mode&os.ModeSymlink != 0) || 45 (remove.DevBlock() && mode&os.ModeDevice != 0) || 46 (remove.DevChar() && mode&os.ModeCharDevice != 0) || 47 (remove.Socket() && mode&os.ModeSocket != 0) || 48 (remove.NamedPipe() && mode&os.ModeNamedPipe != 0) || 49 50 (remove.UserRead() && perm.UserRead()) || 51 (remove.GroupRead() && perm.GroupRead()) || 52 (remove.OtherRead() && perm.OtherRead()) || 53 54 (remove.UserWrite() && perm.UserWrite()) || 55 (remove.GroupWrite() && perm.GroupWrite()) || 56 (remove.OtherWrite() && perm.OtherWrite()) || 57 58 (remove.UserExecute() && perm.UserExecute()) || 59 (remove.GroupExecute() && perm.GroupExecute()) || 60 (remove.OtherExecute() && perm.OtherExecute()) || 61 62 (remove.SetUid() && mode&os.ModeSetuid != 0) || 63 (remove.SetGid() && mode&os.ModeSetgid != 0) || 64 (remove.Sticky() && mode&os.ModeSticky != 0) || 65 66 (remove.Irregular() && mode&os.ModeIrregular != 0)) 67 }