diff --git a/System/Posix/Files.hsc b/System/Posix/Files.hsc index 749f5da7..349b726c 100644 --- a/System/Posix/Files.hsc +++ b/System/Posix/Files.hsc @@ -60,6 +60,7 @@ module System.Posix.Files ( specialDeviceID, fileSize, accessTime, modificationTime, statusChangeTime, accessTimeHiRes, modificationTimeHiRes, statusChangeTimeHiRes, + blockSize, blockCount, isBlockDevice, isCharacterDevice, isNamedPipe, isRegularFile, isDirectory, isSymbolicLink, isSocket, diff --git a/System/Posix/Files/ByteString.hsc b/System/Posix/Files/ByteString.hsc index 23a44e3b..c09ac00a 100644 --- a/System/Posix/Files/ByteString.hsc +++ b/System/Posix/Files/ByteString.hsc @@ -60,6 +60,7 @@ module System.Posix.Files.ByteString ( specialDeviceID, fileSize, accessTime, modificationTime, statusChangeTime, accessTimeHiRes, modificationTimeHiRes, statusChangeTimeHiRes, + blockSize, blockCount, isBlockDevice, isCharacterDevice, isNamedPipe, isRegularFile, isDirectory, isSymbolicLink, isSocket, diff --git a/System/Posix/Files/Common.hsc b/System/Posix/Files/Common.hsc index cc594cc3..2e05730f 100644 --- a/System/Posix/Files/Common.hsc +++ b/System/Posix/Files/Common.hsc @@ -52,7 +52,7 @@ module System.Posix.Files.Common ( specialDeviceID, fileSize, accessTime, modificationTime, statusChangeTime, accessTimeHiRes, modificationTimeHiRes, statusChangeTimeHiRes, - setFdTimesHiRes, touchFd, + setFdTimesHiRes, touchFd, blockSize, blockCount, isBlockDevice, isCharacterDevice, isNamedPipe, isRegularFile, isDirectory, isSymbolicLink, isSocket, @@ -262,6 +262,10 @@ modificationTimeHiRes :: FileStatus -> POSIXTime statusChangeTime :: FileStatus -> EpochTime -- | Time of last status change (i.e. owner, group, link count, mode, etc.) in sub-second resolution. statusChangeTimeHiRes :: FileStatus -> POSIXTime +-- | A file system-specific preferred I/O block size for this object. In some file system types, this may vary from file to file. +blockSize :: FileStatus -> BlockSize +-- | Number of blocks allocated for the file. +blockCount :: FileStatus -> BlockCount deviceID (FileStatus stat) = unsafePerformIO $ withForeignPtr stat $ (#peek struct stat, st_dev) @@ -355,6 +359,11 @@ statusChangeTimeHiRes (FileStatus stat) = #endif return $ fromRational $ toRational sec + frac +blockSize (FileStatus stat) = + unsafePerformIO $ withForeignPtr stat $ (#peek struct stat, st_blksize) +blockCount (FileStatus stat) = + unsafePerformIO $ withForeignPtr stat $ (#peek struct stat, st_blocks) + -- | Checks if this file is a block device. isBlockDevice :: FileStatus -> Bool -- | Checks if this file is a character device.