From acbfd78a5d27da2e0297e4beb6015c1a4ae7d089 Mon Sep 17 00:00:00 2001 From: Richard Patel Date: Sun, 3 Feb 2019 16:06:52 +0100 Subject: [PATCH] Save marker --- resume.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/resume.go b/resume.go index 877364b..4ce81d2 100644 --- a/resume.go +++ b/resume.go @@ -1,10 +1,13 @@ package main import ( + "bytes" "encoding/gob" + "fmt" "github.com/beeker1121/goque" "github.com/sirupsen/logrus" "github.com/spf13/viper" + "io" "os" "path/filepath" "strconv" @@ -98,10 +101,18 @@ func SaveTask(od *OD) (err error) { err = pauseEnc.Encode(&paused) if err != nil { return err } + // Save mark + _, err = pausedF.Write([]byte("--------")) + if err != nil { return err } + // Write pause scan state err = od.Scanned.Marshal(pausedF) if err != nil { return err } + // Save mark + _, err = pausedF.Write([]byte("--------")) + if err != nil { return err } + return nil } @@ -139,10 +150,25 @@ func resumeQueue(id uint64) (od *OD, err error) { if err != nil { return nil, err } atomic.StoreInt64(&od.InProgress, paused.InProgress) + // Check mark + var mark [8]byte + _, err = io.ReadFull(pausedF, mark[:]) + if err != nil { return nil, err } + if !bytes.Equal(mark[:], []byte("--------")) { + return nil, fmt.Errorf("corrupt pause file") + } + // Read pause scan state err = od.Scanned.Unmarshal(pausedF) if err != nil { return nil, err } + // Check mark + _, err = io.ReadFull(pausedF, mark[:]) + if err != nil { return nil, err } + if !bytes.Equal(mark[:], []byte("--------")) { + return nil, fmt.Errorf("corrupt pause file") + } + // Open queue bq, err := OpenQueue(fPath) if err != nil { return nil, err }