♻️ refactor: split src into internal packages and cmd

This commit is contained in:
2026-07-16 23:51:39 +07:00
parent 2e320b03f3
commit a05d6bb7eb
28 changed files with 1355 additions and 1328 deletions
+37
View File
@@ -0,0 +1,37 @@
//go:build unix
package tsf
import (
"os"
"syscall"
)
func readFrameFile(filename string) (*frameFile, error) {
f, err := os.Open(filename)
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()
info, err := f.Stat()
if err != nil {
return nil, err
}
size := info.Size()
if size <= 0 || size != int64(int(size)) {
data, err := os.ReadFile(filename)
return &frameFile{data: data}, err
}
data, err := syscall.Mmap(int(f.Fd()), 0, int(size), syscall.PROT_READ, syscall.MAP_SHARED)
if err != nil {
data, err := os.ReadFile(filename)
return &frameFile{data: data}, err
}
return &frameFile{
data: data,
cleanup: func() error {
return syscall.Munmap(data)
},
}, nil
}