Update dependency version for xds agent & common
[src/xds/xds-gdb.git] / main.go
diff --git a/main.go b/main.go
index 3df9e1a..b193676 100644 (file)
--- a/main.go
+++ b/main.go
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 "IoT.bzh"
+ * Copyright (C) 2017-2018 "IoT.bzh"
  * Author Sebastien Douheret <sebastien@iot.bzh>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,9 +34,9 @@ import (
 
        "path"
 
+       common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
        "github.com/Sirupsen/logrus"
        "github.com/codegangsta/cli"
-       common "github.com/iotbzh/xds-common/golib"
        "github.com/joho/godotenv"
 )
 
@@ -58,11 +58,11 @@ var AppSubVersion = "unknown-dev"
 
 // Create logger
 var log = logrus.New()
-var logFileInitial = "/tmp/xds-gdb.log"
+var logFileInitial = path.Join(os.TempDir(), "xds-gdb.log")
 
 // Application details
 const (
-       appCopyright    = "Copyright (C) 2017 IoT.bzh - Apache-2.0"
+       appCopyright    = "Copyright (C) 2017-2018 IoT.bzh - Apache-2.0"
        defaultLogLevel = "warning"
 )
 
@@ -100,12 +100,13 @@ func main() {
        logFile = logFileInitial
        fdL, err := os.OpenFile(logFileInitial, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
        if err != nil {
-               msgErr := fmt.Sprintf("Cannot create log file %s", logFileInitial)
-               exitError(syscall.EPERM, msgErr)
+               fmt.Printf("WARNING: Cannot create initial log file %s\n", logFileInitial)
+               log.Level = logrus.WarnLevel
+       } else {
+               log.Out = fdL
+               log.Level = logrus.DebugLevel
        }
        log.Formatter = &logrus.TextFormatter{}
-       log.Out = fdL
-       log.Level = logrus.DebugLevel
 
        agentURL = "localhost:8800"
        logLevel = defaultLogLevel
@@ -340,7 +341,13 @@ endloop:
                })
 
                gdb.OnDisconnect(func(err error) {
-                       fmt.Println("Disconnection: ", err.Error())
+                       errMsg := "\nXDS-Agent disconnected"
+                       if err != nil {
+                               fmt.Printf("%s: %v\n", errMsg, err.Error())
+                       } else {
+                               fmt.Println(errMsg)
+                       }
+
                        exitChan <- exitResult{err, int(syscall.ESHUTDOWN)}
                })
 
@@ -350,8 +357,14 @@ endloop:
                                log.Debugf("Recv OUT: <%s>", stdout)
                        }
                        if stderr != "" {
-                               fmt.Fprintf(os.Stderr, "%s", stderr)
-                               log.Debugf("Recv ERR: <%s>", stderr)
+                               // Filter-out ugly message (python error when cross gdb exited)
+                               if !strings.Contains(stderr, "readline.write_history_file") &&
+                                       !(strings.Contains(stderr, "Traceback") && strings.Contains(stderr, "__exithandler")) {
+                                       fmt.Fprintf(os.Stderr, "%s", stderr)
+                                       log.Debugf("Recv ERR: <%s>", stderr)
+                               } else {
+                                       log.Debugf("Recv ERR (FILTERED OUT): <%s>", stderr)
+                               }
                        }
 
                        // Correctly report error about init file
@@ -461,8 +474,8 @@ endloop:
                                                time.Sleep(time.Millisecond * 200)
                                        }
 
-                                       gdb.Write(command + "\n")
                                        log.Debugf("Send: <%v>", command)
+                                       gdb.Write(command + "\n")
                                }
                                log.Infof("Stdin scanner exit, close stdin (err=%v)", sc.Err())