shithub: snarflog

Download patch

ref: 2d82fa89d40ad04944ab45fa28ce6bc3cdc1b756
parent: a2bc51f7f3479008175e41367105e7ab2516318e
author: penny <penny@limitedideas.org>
date: Thu Nov 27 16:58:12 EST 2025

a few more touches

--- a/main.go
+++ b/main.go
@@ -15,8 +15,6 @@
 
 type snarfile struct {
 	fs.BaseFile
-	real *os.File
-	realwrite *os.File
 	snarfStream fs.Stream
 	mu sync.Mutex
 }
@@ -41,11 +39,18 @@
 }
 
 func (f *snarfile) Read(fid uint64, offset uint64, count uint64) ([]byte, error) {
-	real, _ := os.Open("/mnt/snarflogger/rsnarf")
+	real, err := os.Open("/mnt/snarflogger/rsnarf")
+	if err != nil {
+		return nil, err
+	}
 	defer real.Close()
-	var reader io.Reader = real
-	content, err := io.ReadAll(reader)
-	return content, err
+
+	buf := make([]byte, count)
+	n, err := real.ReadAt(buf, int64(offset))
+	if err != nil && err != io.EOF {
+		return nil, err
+	}
+	return buf[:n], nil
 }
 
 func newSnarf(fsys *fs.FS, name, uid, gid string, perm uint32, real *os.File, realwrite *os.File, stream fs.Stream) *snarfile {
@@ -52,8 +57,6 @@
 	stat := fsys.NewStat(name, uid, gid, perm)
 	return &snarfile{
 		BaseFile: *fs.NewBaseFile(stat),
-		real: real,
-		realwrite: realwrite,
 		snarfStream: stream,
 	}
 }
--