aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-08-22 18:12:41 +0800
committerobscuren <geffobscura@gmail.com>2014-08-22 18:12:41 +0800
commit09c7d158d1180dc9ec042b67f8c1ecb1015a142e (patch)
tree55b6e96f3e7ff3a2ab0037eda1ce56282e508f46
parent9131a7c65eca0951f25c7ea12865244c60090b92 (diff)
downloaddexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.gz
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.bz2
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.lz
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.xz
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.zst
dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.zip
Error window
-rw-r--r--README.md2
-rw-r--r--ethereal/errors.go36
-rw-r--r--ethereal/main.go20
-rw-r--r--ethereum/main.go2
-rw-r--r--utils/cmd.go11
5 files changed, 67 insertions, 4 deletions
diff --git a/README.md b/README.md
index 2d4b128fc..8cdcfe2a6 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ Status](http://cpt-obvious.ethercasts.com:8010/buildstatusimage?builder=go-ether
Ethereum Go Client © 2014 Jeffrey Wilcke.
-Current state: Proof of Concept 0.6.4.
+Current state: Proof of Concept 0.6.5.
For the development package please see the [eth-go package](https://github.com/ethereum/eth-go).
diff --git a/ethereal/errors.go b/ethereal/errors.go
new file mode 100644
index 000000000..409b7a281
--- /dev/null
+++ b/ethereal/errors.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "gopkg.in/qml.v1"
+)
+
+func ErrorWindow(err error) {
+ engine := qml.NewEngine()
+ component, e := engine.LoadString("local", qmlErr)
+ if e != nil {
+ fmt.Println("err:", err)
+ os.Exit(1)
+ }
+
+ win := component.CreateWindow(nil)
+ win.Root().ObjectByName("label").Set("text", err.Error())
+ win.Show()
+ win.Wait()
+}
+
+const qmlErr = `
+import QtQuick 2.0; import QtQuick.Controls 1.0;
+ApplicationWindow {
+ width: 600; height: 150;
+ flags: Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint
+ title: "Error"
+ Text {
+ x: parent.width / 2 - this.width / 2;
+ y: parent.height / 2 - this.height / 2;
+ objectName: "label";
+ }
+}
+`
diff --git a/ethereal/main.go b/ethereal/main.go
index 4cb8630e8..3729dbdaf 100644
--- a/ethereal/main.go
+++ b/ethereal/main.go
@@ -1,6 +1,7 @@
package main
import (
+ "fmt"
"os"
"runtime"
@@ -12,7 +13,7 @@ import (
const (
ClientIdentifier = "Ethereal"
- Version = "0.6.4"
+ Version = "0.6.5"
)
var ethereum *eth.Ethereum
@@ -28,6 +29,23 @@ func run() error {
utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile)
db := utils.NewDatabase()
+ err := utils.DBSanityCheck(db)
+ if err != nil {
+ engine := qml.NewEngine()
+ component, e := engine.LoadString("local", qmlErr)
+ if e != nil {
+ fmt.Println("err:", err)
+ os.Exit(1)
+ }
+
+ win := component.CreateWindow(nil)
+ win.Root().ObjectByName("label").Set("text", err.Error())
+ win.Show()
+ win.Wait()
+
+ ErrorWindow(err)
+ os.Exit(1)
+ }
keyManager := utils.NewKeyManager(KeyStore, Datadir, db)
diff --git a/ethereum/main.go b/ethereum/main.go
index b7c8ea1e7..937a2b399 100644
--- a/ethereum/main.go
+++ b/ethereum/main.go
@@ -13,7 +13,7 @@ import (
const (
ClientIdentifier = "Ethereum(G)"
- Version = "0.6.4"
+ Version = "0.6.5"
)
var logger = ethlog.NewLogger("CLI")
diff --git a/utils/cmd.go b/utils/cmd.go
index cda735c27..3f3948d60 100644
--- a/utils/cmd.go
+++ b/utils/cmd.go
@@ -80,6 +80,16 @@ func confirm(message string) bool {
return r == "y"
}
+func DBSanityCheck(db ethutil.Database) error {
+ d, _ := db.Get([]byte("ProtocolVersion"))
+ protov := ethutil.NewValue(d).Uint()
+ if protov != eth.ProtocolVersion && protov != 0 {
+ return fmt.Errorf("Database version mismatch. Protocol(%d / %d). `rm -rf %s`", protov, eth.ProtocolVersion, ethutil.Config.ExecPath+"/database")
+ }
+
+ return nil
+}
+
func InitDataDir(Datadir string) {
_, err := os.Stat(Datadir)
if err != nil {
@@ -112,7 +122,6 @@ func InitConfig(ConfigFile string, Datadir string, EnvPrefix string) *ethutil.Co
func exit(err error) {
status := 0
if err != nil {
- fmt.Println(err)
logger.Errorln("Fatal: ", err)
status = 1
}