Skip to content

Commit 51085a0

Browse files
committed
reader: set boolean flag when Rock Ridge is supported
1 parent 2a3a574 commit 51085a0

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

image_reader.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,15 @@ func (f *File) GetAllChildren() ([]*File, error) {
175175
return nil, fmt.Errorf("invalid SP record: %w", err)
176176
}
177177

178+
hasRockRidge, err := suspHasRockRidge(newDE.SystemUseEntries)
179+
if err != nil {
180+
return nil, fmt.Errorf("failed to check for Rock Ridge extension: %w", err)
181+
}
182+
178183
// save SUSP offset from the SP record
179184
f.susp = &SUSPMetadata{
180-
Offset: sprecord.BytesSkipped,
185+
Offset: sprecord.BytesSkipped,
186+
HasRockRidge: hasRockRidge,
181187
}
182188
}
183189
} else {

image_reader_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ func TestImageReaderSUSP(t *testing.T) {
155155
assert.Equal(t, "LOREM_IP.TXT", loremFile.Name())
156156
assert.Equal(t, int64(446), loremFile.Size())
157157
assert.NotNil(t, loremFile.susp)
158+
assert.True(t, loremFile.susp.HasRockRidge)
158159

159160
data, err := io.ReadAll(loremFile.Reader())
160161
assert.NoError(t, err)

susp.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ func splitSystemUseEntries(data []byte, ra io.ReaderAt) ([]SystemUseEntry, error
195195
}
196196

197197
type SUSPMetadata struct {
198-
Offset uint8
198+
Offset uint8
199+
HasRockRidge bool
199200
}
200201

201202
func (sm *SUSPMetadata) Clone() *SUSPMetadata {
@@ -204,6 +205,7 @@ func (sm *SUSPMetadata) Clone() *SUSPMetadata {
204205
}
205206

206207
return &SUSPMetadata{
207-
Offset: sm.Offset,
208+
Offset: sm.Offset,
209+
HasRockRidge: sm.HasRockRidge,
208210
}
209211
}

0 commit comments

Comments
 (0)