mirror of
https://github.com/kopia/kopia.git
synced 2026-01-25 14:58:00 -05:00
42 lines
744 B
Go
42 lines
744 B
Go
package hashcache
|
|
|
|
import "strings"
|
|
|
|
func isLess(name1, name2 string) bool {
|
|
if name1 == name2 {
|
|
return false
|
|
}
|
|
|
|
return isLessOrEqual(name1, name2)
|
|
}
|
|
|
|
func isLessOrEqual(name1, name2 string) bool {
|
|
parts1 := strings.Split(name1, "/")
|
|
parts2 := strings.Split(name2, "/")
|
|
|
|
i := 0
|
|
for i < len(parts1) && i < len(parts2) {
|
|
// an element is a directory if it has another element following it
|
|
dir1 := i+1 < len(parts1)
|
|
dir2 := i+1 < len(parts2)
|
|
if dir1 != dir2 {
|
|
// directories trump non-directories
|
|
return dir1
|
|
}
|
|
|
|
if parts1[i] == parts2[i] {
|
|
i++
|
|
continue
|
|
}
|
|
if parts1[i] == "" {
|
|
return false
|
|
}
|
|
if parts2[i] == "" {
|
|
return true
|
|
}
|
|
return parts1[i] < parts2[i]
|
|
}
|
|
|
|
return len(parts1) <= len(parts2)
|
|
}
|