-- |Basically hidden under the FSRoot module (also used by SyncStructures) module Halfs.TheInodeMap (TheInodeMap(..), emptyInodeMap, freeInode) where import Data.Integral(INInt) -- |Keeps track of freed inodes so we can reuse their space. data TheInodeMap = TheInodeMap { freeInodes :: [INInt] -- Inode Numbers ,imDirty :: Bool ,imMaxNum :: INInt } emptyInodeMap :: INInt -- first free inode number -> TheInodeMap emptyInodeMap n = TheInodeMap [] True n -- |Add this inode to the free list. freeInode :: TheInodeMap -> INInt -> TheInodeMap freeInode im@TheInodeMap{freeInodes=l} i = im{freeInodes=i:l, imDirty=True}