shithub: snarflog

Download patch

ref: 80b771bdeb565f38e7e7dc643de61f7e152dd362
parent: 6e608f0e569550ffb3797896f16528c1fb5ba349
author: penny <penny@limitedideas.org>
date: Wed Nov 26 14:42:03 EST 2025

add automount

--- a/go.mod
+++ b/go.mod
@@ -2,10 +2,13 @@
 
 go 1.25.4
 
-require github.com/knusbaum/go9p v1.18.0
+require (
+	9fans.net/go v0.0.2
+	github.com/knusbaum/go9p v1.18.0
+	golang.org/x/sys v0.38.0
+)
 
 require (
-	9fans.net/go v0.0.2 // indirect
 	github.com/Plan9-Archive/libauth v0.0.0-20180917063427-d1ca9e94969d // indirect
 	github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
 	github.com/fhs/mux9p v0.3.1 // indirect
--- a/go.sum
+++ b/go.sum
@@ -19,7 +19,10 @@
 github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201020230747-6e5568b54d1a h1:e3IU37lwO4aq3uoRKINC7JikojFmE5gO7xhfxs8VC34=
 golang.org/x/sys v0.0.0-20201020230747-6e5568b54d1a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
+golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
--- a/main.go
+++ b/main.go
@@ -5,7 +5,9 @@
 	"os"
 	"io"
 	"sync"
+	"time"
 
+	"golang.org/x/sys/plan9"
 	"github.com/knusbaum/go9p/fs"
 	"github.com/knusbaum/go9p"
 	"github.com/knusbaum/go9p/proto"
@@ -50,7 +52,7 @@
 func main() {
 	fid, dir := fs.NewFS("penny", "penny", proto.DMDIR|0644)
 
-	snarfStream := fs.NewSkippingStream(1024) // Buffer size 1024 bytes
+	snarfStream := fs.NewSkippingStream(1024)
 	snarfLogStat := fid.NewStat("snarflog", "penny", "penny", 0644)
 	snarfLogFile := fs.NewStreamFile(snarfLogStat, snarfStream)
 
@@ -75,8 +77,34 @@
 		fmt.Printf("Err: %s\n", err)
 		return
 	}
-	if err := go9p.PostSrv("snarflogger", fid.Server()); err != nil {
-		fmt.Printf("Failed to post server: %v\n", err)
-		return
+	
+	go func() {
+		if err := go9p.PostSrv("snarflogger", fid.Server()); err != nil {
+			fmt.Printf("Failed to post server: %v\n", err)
+			os.Exit(1)
+		}
+	}()
+
+	for {
+		_, err := os.Stat("/srv/snarflogger")
+		if err == nil {
+			break
+		}
+		time.Sleep(100 * time.Millisecond)
 	}
+
+	srvFd, err := plan9.Open("/srv/snarflogger", plan9.O_RDWR)
+	if err != nil {
+		fmt.Printf("Failed to open /srv/snarflogger: %v\n", err)
+		os.Exit(1)
+	}
+	defer plan9.Close(srvFd)
+
+	err = plan9.Mount(srvFd, -1, "/dev", plan9.MBEFORE, "")
+	if err != nil {
+		fmt.Printf("Failed to mount: %v\n", err)
+		os.Exit(1)
+	}
+
+	select{}
 }
--