Skip to content

Commit

Permalink
[wasm] Fall back to a default chunk size when st_blksize is not ava…
Browse files Browse the repository at this point in the history
…ilable (#835)

The `st_blksize` field in `stat` struct is not provided by WASI, so we
fall back to a default chunk size 4KB, which is a common page size.
  • Loading branch information
kateinoigakukun authored Aug 8, 2024
1 parent 4440638 commit 41cbea8
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion Sources/FoundationEssentials/FileManager/FileOperations.swift
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,16 @@ enum _FileOperations {
}

let total: Int = Int(fileInfo.st_size)
let chunkSize: Int = Int(fileInfo.st_blksize)
// Respect the optimal block size for the file system if available
// Some platforms including WASI don't provide this information, so we
// fall back to the default chunk size 4KB, which is a common page size.
let defaultChunkSize = 1024 * 4 // 4KB
let chunkSize: Int
if fileInfo.st_blksize > 0 {
chunkSize = Int(fileInfo.st_blksize)
} else {
chunkSize = defaultChunkSize
}
var current: off_t = 0

#if os(WASI)
Expand Down

0 comments on commit 41cbea8

Please sign in to comment.