ref: a2bc51f7f3479008175e41367105e7ab2516318e
parent: 80b771bdeb565f38e7e7dc643de61f7e152dd362
author: penny <penny@limitedideas.org>
date: Thu Nov 27 16:50:32 EST 2025
fix fundmamental mistake
--- a/main.go
+++ b/main.go
@@ -24,17 +24,26 @@
func (f *snarfile) Write(fid uint64, offset uint64, data []byte) (uint32, error) {f.mu.Lock()
defer f.mu.Unlock()
+ realwrite, err := os.OpenFile("/mnt/snarflogger/rsnarf", os.O_WRONLY, 0644)+ if err != nil {+ fmt.Printf("Coudn't open snarf for writing: %s\n", err)+ return 0, err
+ }
- f.realwrite.Write(data)
- _, err := f.snarfStream.Write(data)
+ defer realwrite.Close()
+ realwrite.Write(data)
+ _, err = f.snarfStream.Write(data)
if err != nil { fmt.Printf("Error writing to snarfStream: %v\n", err)+ return 0, err
}
return uint32(len(data)), nil
}
func (f *snarfile) Read(fid uint64, offset uint64, count uint64) ([]byte, error) {- var reader io.Reader = f.real
+ real, _ := os.Open("/mnt/snarflogger/rsnarf")+ defer real.Close()
+ var reader io.Reader = real
content, err := io.ReadAll(reader)
return content, err
}
@@ -49,7 +58,33 @@
}
}
+func mountmnt() {+ fid, dir := fs.NewFS("penny", "penny", proto.DMDIR|0644)+ stat := fid.NewStat("rsnarf", "penny", "penny", 0644)+ mntfile := fs.NewBaseFile(stat)
+ dir.AddChild(mntfile)
+ var fds [2]int
+ var err error
+ err = plan9.Pipe(fds[:])
+ if err != nil {+ fmt.Printf("Failed to create pipe for /mnt/snarflogger: %s\n", err)+ os.Exit(1)
+ }
+ rw := os.NewFile(uintptr(fds[0]), "")
+
+ go func() {+ if err := go9p.ServeReadWriter(rw, rw, fid.Server()); err != nil {+ fmt.Printf("failed to serve /mnt/snarflogger: %v\n", err)+ os.Exit(1)
+ }
+ }()
+
+ plan9.Mount(fds[1], -1, "/mnt/snarflogger", plan9.MREPL, "")
+ err = plan9.Bind("/dev/snarf", "/mnt/snarflogger/rsnarf", plan9.MREPL)+}
+
func main() {+ mountmnt()
fid, dir := fs.NewFS("penny", "penny", proto.DMDIR|0644)snarfStream := fs.NewSkippingStream(1024)
@@ -60,18 +95,7 @@
fmt.Printf("Err adding snarflog: %s\n", err)return
}
-
- realread, err := os.OpenFile("/dev/snarf", os.O_RDONLY, 0644)- if err != nil {- fmt.Printf("Coudn't open snarf: %s\n", err)- return
- }
- realwrite, err := os.OpenFile("/dev/snarf", os.O_WRONLY, 0644)- if err != nil {- fmt.Printf("Coudn't open snarf for writing: %s\n", err)- return
- }
- snarf := newSnarf(fid, "snarf", "penny", "penny", 0644, realread, realwrite, snarfStream)
+ snarf := newSnarf(fid, "snarf", "penny", "penny", 0644, nil, nil, snarfStream)
if err := dir.AddChild(snarf); err != nil { fmt.Printf("Err: %s\n", err)--
⑨