summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2021-11-20 18:02:20 +0100
committerQuentin Carbonneaux2021-11-20 18:02:27 +0100
commitfdf54c274cb0401e95399191133c2816e8f03ace (patch)
tree80b58e944baabe236d6a4ea2620b259729d08394
parent72ed312051e68deacfa0cdf41692a3454bf74408 (diff)
[mx] couple bug fixes
-rw-r--r--memex/main.go11
-rw-r--r--memex/misc.go3
-rw-r--r--memex/sdar.go6
3 files changed, 12 insertions, 8 deletions
diff --git a/memex/main.go b/memex/main.go
index b6d21d4..5c33385 100644
--- a/memex/main.go
+++ b/memex/main.go
@@ -9,6 +9,7 @@ import (
"path"
"sort"
"strings"
+ "sync/atomic"
"time"
"xxhash"
)
@@ -71,7 +72,7 @@ func faile(e error) { fail("%v", e) }
* the file system data selected in paths (the paths are relative
* to the walker's current path)
*/
-func addPaths(a SdarAdder, root Walker, paths []string) (Addr, error) {
+func addPaths(a *SdarAdder, root Walker, paths []string) (Addr, error) {
type FsItem struct{ cur, rest string }
items := make([]FsItem, len(paths))
@@ -203,7 +204,7 @@ func addCommit(args commitArgs, head Addr) (new Addr, err error) {
args.paths[i] = p
}
- var a SdarAdder
+ var a *SdarAdder
a, err = MakeAdder(config.Arch)
if err != nil {
return
@@ -221,7 +222,8 @@ func addCommit(args commitArgs, head Addr) (new Addr, err error) {
var walker Walker
progress := func() {
- fmt.Printf("writing: %s ", BytesString(a.nbytes))
+ n := atomic.LoadInt64(&a.nbytes)
+ fmt.Printf("writing: %s ", BytesString(n))
}
if full {
@@ -849,7 +851,8 @@ func checkCmd(revs []string) int {
chk := &Check{reader: rd, item: make(map[string]int)}
done := InfoLoop(func() {
- fmt.Printf("checking: %s ", BytesString(chk.seen))
+ n := atomic.LoadInt64(&chk.seen)
+ fmt.Printf("checking: %s ", BytesString(n))
})
for _, rev := range revs {
diff --git a/memex/misc.go b/memex/misc.go
index ad89498..2f937a0 100644
--- a/memex/misc.go
+++ b/memex/misc.go
@@ -4,6 +4,7 @@ import (
"fmt"
"io"
"os"
+ "sync/atomic"
"time"
)
@@ -74,7 +75,7 @@ type Counted struct {
func (c *Counted) Write(buf []byte) (int, error) {
n, err := c.w.Write(buf)
- *c.p += int64(n)
+ atomic.AddInt64(c.p, int64(n))
return n, err
}
diff --git a/memex/sdar.go b/memex/sdar.go
index e7d61f9..730a88e 100644
--- a/memex/sdar.go
+++ b/memex/sdar.go
@@ -168,19 +168,19 @@ func startWriteOp() {
func SdarCommit(archive_path, msg string) error {
startWriteOp()
defer func() { writeOps-- }()
- c := exec.Command(SdarPath, "commit", "-xx", "-a", archive_path, "-m", msg)
+ c := exec.Command(SdarPath, "commit", "-a", archive_path, "-m", msg)
c.Stdin = nil
c.Stdout = os.Stdout
c.Stderr = os.Stderr
return sdarSubprocessError("commit", c.Run())
}
-func MakeAdder(archive_path string) (SdarAdder, error) {
+func MakeAdder(archive_path string) (*SdarAdder, error) {
startWriteOp()
sdar, err := startSdar("add", archive_path)
adder := SdarAdder{sdar, 0}
adder.input = &Counted{&adder.nbytes, adder.input}
- return adder, err
+ return &adder, err
}
func (a *SdarAdder) Done() error {