Просмотр исходного кода

Add flag to set human-readable notice format in console client

Rod Hynes 11 лет назад
Родитель
Сommit
b320be9c57
1 измененных файлов с 11 добавлено и 4 удалено
  1. 11 4
      ConsoleClient/psiphonClient.go

+ 11 - 4
ConsoleClient/psiphonClient.go

@@ -21,6 +21,7 @@ package main
 
 import (
 	"flag"
+	"io"
 	"io/ioutil"
 	"log"
 	"os"
@@ -41,6 +42,9 @@ func main() {
 	var embeddedServerEntryListFilename string
 	flag.StringVar(&embeddedServerEntryListFilename, "serverList", "", "embedded server entry list input file")
 
+	var formatNotices bool
+	flag.BoolVar(&formatNotices, "formatNotices", false, "emit notices in human-readable format")
+
 	var profileFilename string
 	flag.StringVar(&profileFilename, "profile", "", "CPU profile output file")
 
@@ -60,18 +64,21 @@ func main() {
 		log.Fatalf("error processing configuration file: %s", err)
 	}
 
-	// Set logfile, if configured
+	// Initialize notice output; use logfile, if configured
 
+	var noticeWriter io.Writer
+	noticeWriter = os.Stderr
 	if config.LogFilename != "" {
 		logFile, err := os.OpenFile(config.LogFilename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
 		if err != nil {
 			log.Fatalf("error opening log file: %s", err)
 		}
 		defer logFile.Close()
-		psiphon.SetNoticeOutput(logFile)
-	} else {
-		psiphon.SetNoticeOutput(psiphon.NewNoticeConsoleRewriter(os.Stderr))
 	}
+	if formatNotices {
+		noticeWriter = psiphon.NewNoticeConsoleRewriter(noticeWriter)
+	}
+	psiphon.SetNoticeOutput(noticeWriter)
 
 	// Handle optional profiling parameter