ソースを参照

cmd/ethereum, cmd/utils: partial fix for chain import

Felix Lange 10 年 前
コミット
064279c0ec
2 ファイル変更4 行追加8 行削除
  1. 1 4
      cmd/ethereum/admin.go
  2. 3 4
      cmd/utils/cmd.go

+ 1 - 4
cmd/ethereum/admin.go

@@ -221,13 +221,10 @@ func (js *jsre) exportChain(call otto.FunctionCall) otto.Value {
 		fmt.Println(err)
 		return otto.FalseValue()
 	}
-
-	data := js.ethereum.ChainManager().Export()
-	if err := common.WriteFile(fn, data); err != nil {
+	if err := utils.ExportChain(js.ethereum.ChainManager(), fn); err != nil {
 		fmt.Println(err)
 		return otto.FalseValue()
 	}
-
 	return otto.TrueValue()
 }
 

+ 3 - 4
cmd/utils/cmd.go

@@ -158,13 +158,12 @@ func ImportChain(chainmgr *core.ChainManager, fn string) error {
 	var i int
 	for ; ; i++ {
 		var b types.Block
-		err := stream.Decode(&b)
-		if err == io.EOF {
+		if err := stream.Decode(&b); err == io.EOF {
 			break
 		} else if err != nil {
 			return fmt.Errorf("at block %d: %v", i, err)
 		}
-		if err := chainmgr.InsertChain(types.Blocks{b}); err != nil {
+		if err := chainmgr.InsertChain(types.Blocks{&b}); err != nil {
 			return fmt.Errorf("invalid block %d: %v", i, err)
 		}
 	}
@@ -174,7 +173,7 @@ func ImportChain(chainmgr *core.ChainManager, fn string) error {
 
 func ExportChain(chainmgr *core.ChainManager, fn string) error {
 	fmt.Printf("exporting blockchain '%s'\n", fn)
-	fh, err := os.OpenFile(fn, os.O_WRONLY|os.O_TRUNC, os.ModePerm)
+	fh, err := os.OpenFile(fn, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm)
 	if err != nil {
 		return err
 	}