  wrapTruncate go pFilePath off pFuseFileInfo = handleAsFuseError $ do
    filePath <- peekFilePathOrEmpty pFilePath
    mfh <- getFH pFuseFileInfo
    go filePath mfh off

  wrapOpen :: (FilePath -> OpenMode -> OpenFileFlags -> IO (Either Errno fh)) -> C.COpen
  wrapOpen go pFilePath pFuseFileInfo = handleAsFuseError $ do
    filePath <- peekFilePath pFilePath
    (openFileFlags, openMode) <- peekOpenFileFlagsAndMode pFuseFileInfo
    go filePath openMode openFileFlags >>= \case
      Left errno -> pure errno
      Right fh -> do