Files
rdu/checks.go
tom.chivert 8efc6d8c6d
build / build (push) Successful in 32s
slightly optimized cpu usage
2024-08-20 19:41:00 +02:00

86 lines
1.3 KiB
Go

package main
import (
"fmt"
"os"
"path/filepath"
"strings"
)
func isDevice(path string) bool {
info, err := os.Lstat(path)
if err != nil {
fmt.Println(err)
return false
}
return info.Mode()&os.ModeDevice != 0
}
func isPipe(path string) bool {
info, err := os.Lstat(path)
if err != nil {
fmt.Println(err)
return false
}
return info.Mode()&os.ModeNamedPipe != 0
}
func isSocket(path string) bool {
info, err := os.Lstat(path)
if err != nil {
fmt.Println(err)
return false
}
return info.Mode()&os.ModeSocket != 0
}
func isSymlink(path string) bool {
info, err := os.Lstat(path)
if err != nil {
fmt.Println(err)
return false
}
return info.Mode()&os.ModeSymlink != 0
}
func isSpecialFS(path string) bool {
if strings.Split(path, "/")[1] == "proc" {
return true
}
if strings.Split(path, "/")[1] == "sys" {
return true
}
if strings.Split(path, "/")[1] == "dev" {
return true
}
if strings.Split(path, "/")[1] == "run" {
return true
}
return false
}
func isSubfolder(path1 string, path2 string) bool {
path1 = filepath.Clean(path1)
path2 = filepath.Clean(path2)
return strings.HasPrefix(path2, path1)
}
func exclude(s string) bool {
if isSymlink(s) {
return true
}
if isPipe(s) {
return true
}
if isSocket(s) {
return true
}
if isDevice(s) {
return true
}
if isSpecialFS(s) {
return true
}
return false
}