From a59a696b99e85d5486f40139fd5fc462402d44cc Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Sun, 20 Oct 2013 21:58:29 +0200 Subject: [PATCH] Added file writer --- gastenboek.go | 5 ++--- newEntry.go | 44 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/gastenboek.go b/gastenboek.go index a68720d..226d576 100644 --- a/gastenboek.go +++ b/gastenboek.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "os" "os/signal" ) @@ -9,8 +8,8 @@ import ( func signalCatcher() { c := make(chan os.Signal) signal.Notify(c) - for sig := range c { - fmt.Printf("Signal received: %v", sig) + for _ = range c { + //fmt.Printf("Signal received: %v", sig) } } diff --git a/newEntry.go b/newEntry.go index 427b820..16adf10 100644 --- a/newEntry.go +++ b/newEntry.go @@ -4,17 +4,23 @@ import ( "bufio" "fmt" "os" + "strconv" "strings" + "time" ) const ( maxContent int = 10000 maxSign int = 1000 + maxName int = 25 +) + +var ( + reader *bufio.Reader = bufio.NewReader(os.Stdin) ) func msgContent() (string, bool) { var msg string - reader := bufio.NewReader(os.Stdin) S: for { @@ -39,7 +45,6 @@ S: func msgSign() (string, bool) { var sign string var end int = -1 - reader := bufio.NewReader(os.Stdin) S: for { @@ -65,14 +70,39 @@ S: return sign, true } -func writeToFile(content string) bool { +func writeToFile(filename, content string) bool { + f, err := os.Create(filename) + if err != nil { + fmt.Println(err) + return false + } + defer f.Close() + buf := bufio.NewWriter(f) + + bytes, err := buf.WriteString(content) + if err != nil { + return false + } + + buf.Flush() + fmt.Printf("\nUw bericht van %v bytes is opgeslagen in het gastenboek. Druk op enter om terug te keren in het menu.\n", bytes) + + return true } func makeEntry() bool { clear() - fmt.Printf("Schrijf hieronder uw bericht aan het nieuwe bestuur van Thalia.\nU kunt alle tekens binnen de unicode gebruiken, u kunt maximaal %d bytes gebruiken.\nU Schrijft per regel, dus nadat een regel getypt is, is deze definitief.\nSluit uw bericht af met een regel \"Aldus ons bericht.\", u kunt het bericht daarna nog persoonlijk ondertekenen.\n", maxContent) + fmt.Print("Vul de naam van uw vereniging of commissie in: ") + name, nameOk := reader.ReadString('\n') + if nameOk != nil { + return false + } else if len(name) > maxName { + name = name[:maxName-1] + } + + fmt.Printf("\n\nSchrijf hieronder uw bericht aan het nieuwe bestuur van Thalia.\nU kunt alle tekens binnen de unicode gebruiken, u kunt maximaal %d bytes gebruiken.\nU Schrijft per regel, dus nadat een regel getypt is, is deze definitief.\nSluit uw bericht af met een regel \"Aldus ons bericht.\", u kunt het bericht daarna nog persoonlijk ondertekenen.\n", maxContent) var width, _ int = terminalSize() fmt.Print(strings.Repeat("-", width-1) + "\n") content, ok := msgContent() @@ -87,7 +117,9 @@ func makeEntry() bool { return false } - ok = writeToFile(content + "\n\n" + sign) + ok = writeToFile(strconv.FormatInt(time.Now().Unix(), 10)+" "+name, content+"\n\n"+sign) - return true + reader.ReadString('\n') + + return ok }