// +build ignore,OMIT package main import ( "bufio" "io" "log" "net" "os" "os/exec" ) func main() { if len(os.Args) > 1 && os.Args[1] == "serve" { serve() } finger() } func finger() { c, err := net.Dial("tcp", "localhost:finger") if err != nil { log.Fatal(err) } io.WriteString(c, "rsc\n") io.Copy(os.Stdout, c) } func serve() { l, err := net.Listen("tcp", "localhost:finger") if err != nil { log.Fatal(err) } for { c, err := l.Accept() if err != nil { log.Fatal(err) } go serveConn(c) } } func serveConn(c net.Conn) { defer c.Close() b := bufio.NewReader(c) l, err := b.ReadString('\n') if err != nil { return } cmd := exec.Command("finger", l[:len(l)-1]) cmd.Stdout = c cmd.Stderr = c cmd.Run() }