Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(405)

Delta Between Two Patch Sets: 2013/distsys/finger.go

Issue 61570044: code review 61570044: go.talks: add two talks by rsc (Closed)
Left Patch Set: Created 10 years, 1 month ago
Right Patch Set: diff -r 5c1ef7ac81bc https://code.google.com/p/go.talks Created 10 years, 1 month ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « 2013/distsys/addr5.go ('k') | 2013/distsys/hello.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 package main
2
3 import (
4 "bufio"
5 "io"
6 "log"
7 "net"
8 "os"
9 "os/exec"
10 )
11
12 func main() {
13 if len(os.Args) > 1 && os.Args[1] == "serve" {
14 serve()
15 }
16 finger()
17 }
18
19 func finger() {
20 c, err := net.Dial("tcp", "localhost:finger")
21 if err != nil {
22 log.Fatal(err)
23 }
24 io.WriteString(c, "rsc\n")
25 io.Copy(os.Stdout, c)
26 }
27
28 func serve() {
29 l, err := net.Listen("tcp", "localhost:finger")
30 if err != nil {
31 log.Fatal(err)
32 }
33 for {
34 c, err := l.Accept()
35 if err != nil {
36 log.Fatal(err)
37 }
38 go serveConn(c)
39 }
40 }
41
42 func serveConn(c net.Conn) {
43 defer c.Close()
44
45 b := bufio.NewReader(c)
46 l, err := b.ReadString('\n')
47 if err != nil {
48 return
49 }
50
51 cmd := exec.Command("finger", l[:len(l)-1])
52 cmd.Stdout = c
53 cmd.Stderr = c
54 cmd.Run()
55 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b