Skip to content

Commit da3a069

Browse files
headerfs: use runtime.GOOS instead of build flag
1 parent a98a59d commit da3a069

File tree

3 files changed

+28
-76
lines changed

3 files changed

+28
-76
lines changed

headerfs/store.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ type File interface {
100100
Stat() (os.FileInfo, error)
101101
Sync() error
102102
Truncate(size int64) error
103+
104+
// Returns the name of the file.
105+
Name() string
103106
}
104107

105108
// headerStore combines a on-disk set of headers within a flat file in addition
@@ -112,8 +115,6 @@ type File interface {
112115
type headerStore struct {
113116
mtx sync.RWMutex // nolint:structcheck // false positive because used as embedded struct only
114117

115-
fileName string
116-
117118
file File
118119

119120
*headerIndex
@@ -153,7 +154,6 @@ func newHeaderStore(db walletdb.DB, filePath string,
153154
}
154155

155156
return &headerStore{
156-
fileName: flatFileName,
157157
file: headerFile,
158158
headerIndex: index,
159159
}, nil
@@ -800,7 +800,7 @@ func (f *filterHeaderStore) maybeResetHeaderState(
800800
if err := f.file.Close(); err != nil {
801801
return true, err
802802
}
803-
if err := os.Remove(f.fileName); err != nil {
803+
if err := os.Remove(f.file.Name()); err != nil {
804804
return true, err
805805
}
806806
return true, nil

headerfs/truncate.go

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
//go:build !windows
2-
// +build !windows
3-
41
package headerfs
52

6-
import "fmt"
3+
import (
4+
"os"
5+
"runtime"
6+
)
77

88
// singleTruncate truncates a single header from the end of the header file.
99
// This can be used in the case of a re-org to remove the last header from the
@@ -22,18 +22,27 @@ func (h *headerStore) singleTruncate() error {
2222

2323
// Next, we'll determine the number of bytes we need to truncate from
2424
// the end of the file.
25-
var truncateLength int64
26-
switch h.indexType {
27-
case Block:
28-
truncateLength = 80
29-
case RegularFilter:
30-
truncateLength = 32
31-
default:
32-
return fmt.Errorf("unknown index type: %v", h.indexType)
25+
truncateLength, err := h.indexType.Size()
26+
if err != nil {
27+
return err
28+
}
29+
newSize := fileSize - int64(truncateLength)
30+
31+
// On Windows, we need to close, truncate, and reopen the file.
32+
if runtime.GOOS == "windows" {
33+
fileName := h.file.Name()
34+
if err = h.file.Close(); err != nil {
35+
return err
36+
}
37+
38+
if err = os.Truncate(fileName, newSize); err != nil {
39+
return err
40+
}
41+
42+
fileFlags := os.O_RDWR | os.O_APPEND | os.O_CREATE
43+
h.file, err = os.OpenFile(fileName, fileFlags, 0644)
44+
return err
3345
}
3446

35-
// Finally, we'll use both of these values to calculate the new size of
36-
// the file and truncate it accordingly.
37-
newSize := fileSize - truncateLength
3847
return h.file.Truncate(newSize)
3948
}

headerfs/truncate_windows.go

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)