aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/geth/chaincmd.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/geth/chaincmd.go')
-rw-r--r--cmd/geth/chaincmd.go22
1 files changed, 21 insertions, 1 deletions
diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index 947532f40..509356a90 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -26,6 +26,12 @@ var (
Action: exportChain,
Name: "export",
Usage: `export blockchain into file`,
+ Description: `
+Requires a first argument of the file to write to.
+Optional second and third arguments control the first and
+last block to write. In this mode, the file will be appended
+if already existing.
+ `,
}
upgradedbCommand = cli.Command{
Action: upgradeDB,
@@ -68,7 +74,21 @@ func exportChain(ctx *cli.Context) {
}
chain, _, _, _ := utils.MakeChain(ctx)
start := time.Now()
- if err := utils.ExportChain(chain, ctx.Args().First()); err != nil {
+
+ var err error
+ if len(ctx.Args()) < 3 {
+ err = utils.ExportChain(chain, ctx.Args().First())
+ } else {
+ // This can be improved to allow for numbers larger than 9223372036854775807
+ first, ferr := strconv.ParseInt(ctx.Args().Get(1), 10, 64)
+ last, lerr := strconv.ParseInt(ctx.Args().Get(2), 10, 64)
+ if ferr != nil || lerr != nil {
+ utils.Fatalf("Export error in parsing parameters\n")
+ }
+ err = utils.ExportAppendChain(chain, ctx.Args().First(), uint64(first), uint64(last))
+ }
+
+ if err != nil {
utils.Fatalf("Export error: %v\n", err)
}
fmt.Printf("Export done in %v", time.Since(start))