generate inode via path and time

This commit is contained in:
chrislu
2022-03-14 00:03:29 -07:00
parent 5cba8e51c5
commit bd5c5586b5
8 changed files with 19 additions and 40 deletions

View File

@@ -1,7 +1,6 @@
package util
import (
"os"
"path/filepath"
"strings"
)
@@ -43,29 +42,9 @@ func (fp FullPath) Child(name string) FullPath {
}
// AsInode an in-memory only inode representation
func (fp FullPath) AsInode(fileMode os.FileMode) uint64 {
func (fp FullPath) AsInode(unixTime int64) uint64 {
inode := uint64(HashStringToLong(string(fp)))
inode = inode - inode%16
if fileMode == 0 {
} else if fileMode&os.ModeDir > 0 {
inode += 1
} else if fileMode&os.ModeSymlink > 0 {
inode += 2
} else if fileMode&os.ModeDevice > 0 {
if fileMode&os.ModeCharDevice > 0 {
inode += 6
} else {
inode += 3
}
} else if fileMode&os.ModeNamedPipe > 0 {
inode += 4
} else if fileMode&os.ModeSocket > 0 {
inode += 5
} else if fileMode&os.ModeCharDevice > 0 {
inode += 6
} else if fileMode&os.ModeIrregular > 0 {
inode += 7
}
inode = inode + uint64(unixTime)*37
return inode
}