disk.go (836B)
1 // Disk exports the file system on the disk. 2 package main 3 4 import ( 5 "flag" 6 "fmt" 7 "log" 8 "net" 9 "os" 10 11 "lib9p" 12 "lib9p/diskfs" 13 ) 14 15 var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.") 16 17 func main() { 18 flag.Parse() 19 20 if flag.NArg() != 1 { 21 fmt.Fprintf(os.Stderr, "usage: %s [-D] <root>\n", os.Args[0]) 22 os.Exit(1) 23 } 24 25 listener, err := net.Listen("tcp", "127.0.0.1:5640") 26 if err != nil { 27 log.Fatalf("listen tcp: %v", err) 28 } 29 30 for { 31 conn, err := listener.Accept() 32 if err != nil { 33 log.Printf("accept connection: %v", err) 34 continue 35 } 36 disk, err := diskfs.Open(flag.Arg(0)) 37 if err != nil { 38 log.Fatalf("open file tree.") 39 } 40 go handle(conn, disk) 41 } 42 } 43 44 func handle(conn net.Conn, disk *diskfs.FS) { 45 srv := lib9p.NewServer(disk, 8*1024, conn, conn) 46 if *dFlag { 47 srv.Chatty() 48 } 49 srv.Serve() 50 }