Files
rdu/scan.go
2024-08-20 23:11:32 +02:00

86 lines
1.4 KiB
Go

package main
import (
"fmt"
"os"
"path/filepath"
"syscall"
)
func getExts(exts []Ext, path string, size int64) []Ext {
ext := filepath.Ext(path)
if ext == "" {
ext = "none"
}
for i := 0; i < len(exts); i++ {
if exts[i].ext == ext {
exts[i].size += size
exts[i].count++
return exts
}
}
exts = append(exts, Ext{ext: ext, size: size, count: 1})
return exts
}
func getItems(d Dir) []Item {
var items []Item
for _, dir := range d.dirs {
items = append(items, Item{isDir: true, dir: &dir})
}
files := d.files
for _, file := range files {
items = append(items, Item{isDir: false, file: &file})
}
return items
}
func getPos(p string, items []Item) int {
for i, item := range items {
if item.isDir {
if item.dir.path == p {
return i
}
}
}
return 0
}
func getSize(path string) int64 {
file, err := os.Open(path)
if err != nil {
printerr(err)
return 0
}
defer file.Close()
info, err := file.Stat()
if err != nil {
printerr(err)
return 0
}
return info.Size()
}
func getDirMount(dir string) {
err := syscall.Statfs(dir, &config.dirMount)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
func recurse(d Dir) []Item {
var items []Item
for _, dir := range d.dirs {
items = append(items, Item{isDir: true, dir: &dir})
items = append(items, recurse(dir)...)
}
files := d.files
for _, file := range files {
items = append(items, Item{isDir: false, file: &file})
}
return items
}