h$^V      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred#$ libfuse3A file status a.k.a. metadata.The differences from   are:Is a record type with a  instance.Has an extra field  ."Provides an exact representation (+) of the time fields without converting to   .This assumes that the  struct stat has st_atim, st_mtim and st_ctim/ fields. On Linux this requires Linux >= 2.6. Ptr FileStat can be cast to Ptr    and vice versa.Use  - and modify its fields you are interested in.The st_ino field is ignored unless the use_ino mount option is given.The st_dev and  st_blksize0 fields are ignored by libfuse, so not provided.libfuse3Inode number. st_inolibfuse3File type and mode. st_modelibfuse3Number of hard links. st_nlinklibfuse3User ID of owner. st_uidlibfuse3Group ID of owner. st_gidlibfuse3Device ID (if special file). st_rdevlibfuse3Total size, in bytes. st_size libfuse3!Number of 512B blocks allocated.  st_blocks libfuse3Time of last access. st_atim libfuse3Time of last modification. st_mtim libfuse3Time of last status change. st_ctim libfuse3The default value of ..The Haskell Equivalent of zero-setting C code 8{ struct stat st; memset(&st, 0, sizeof(struct stat)); }.libfuse3$Reads a file status of a given file.Calls lstat.libfuse3$Reads a file status of a given file.Calls fstat.libfuse3Targets  struct stat.     Safe-Inferred#$c libfuse3 Passed to .The  instance targets C struct statvfs.f_favail, f_fsid and f_flag fields are ignored by libfuse, and their corresponding fields are not defined.libfuse3Filesystem block size. f_bsizelibfuse3Fragment size. f_frsizelibfuse3Size of the filesystem in f_frsize units. f_blockslibfuse3Number of free blocks. f_bfreelibfuse3.Number of free blocks for unprivileged users. f_bavaillibfuse3Number of inodes (file nodes). f_fileslibfuse3Number of free inodes. f_ffreelibfuse3Maximum filename length.  f_namemaxlibfuse3Gets filesystem statistics.Calls statvfs. libfuse3Gets filesystem statistics.Calls fstatvfs.libfuse3(A path of any file within the filesystem  None#$G'Nlibfuse3  struct fuseOlibfuse3 struct fuse_sessionPlibfuse3 enum fuse_readdir_flagsQlibfuse3 struct fuse_pollhandleRlibfuse3'The direct, storable representation of struct fuse_operations.All operations are optional. NULL indicates undefined operation. You may modify some of the fields to fine-tune the behavior.)Not to be confused with Haskell-friendly 8. Also not to be confused with libfuse's low-level API struct fuse_lowlevel_ops.~libfuse3 enum fuse_fill_dir_flagslibfuse3Ptr FuseFillDirBuf = void * , used in .libfuse3 typedef fuse_fill_dir_tlibfuse3 struct fuse_file_infolibfuse3 struct fuse_conn_infolibfuse3'The direct, storable representation of struct fuse_config.'Not to be confused with the high-level .libfuse3 set_gidlibfuse3 gidlibfuse3 set_uidlibfuse3 uidlibfuse3 set_modelibfuse3 umasklibfuse3  entry_timeoutlibfuse3 negative_timeoutlibfuse3  attr_timeoutlibfuse3 intrlibfuse3  intr_signallibfuse3 rememberlibfuse3  hard_removelibfuse3 use_inolibfuse3  readdir_inolibfuse3  direct_iolibfuse3  kernel_cachelibfuse3  auto_cachelibfuse3 ac_attr_timeout_setlibfuse3 ac_attr_timeoutlibfuse3  nullpath_oklibfuse3 struct fuse_cmdline_optslibfuse3 struct fuse_bufveclibfuse3 struct fuse_buflibfuse3 struct fuse_argslibfuse3,An empty set of operations whose fields are  nullFunPtr.libfuse3 Merges two R in a left-biased manner.libfuse3Targets struct fuse_config.$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS}|{zyxwvutsrqponmlkjihgfedba`_^]\[ZYXWVUTc~~RS}|{zyxwvutsrqponmlkjihgfedba`_^]\[ZYXWVUTcQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$None#$libfuse3%Configures the filesystem. Passed to .See the module System.LibFuse3.FuseConfig for its fields.libfuse3 set_gidlibfuse3 gidlibfuse3 set_uidlibfuse3 uidlibfuse3 set_modelibfuse3 umasklibfuse3  entry_timeoutlibfuse3 negative_timeoutlibfuse3  attr_timeoutlibfuse3 intrlibfuse3  intr_signallibfuse3 rememberlibfuse3  hard_removelibfuse3 use_inolibfuse3  readdir_inolibfuse3  direct_iolibfuse3  kernel_cachelibfuse3  auto_cachelibfuse3 ac_attr_timeout_setlibfuse3 ac_attr_timeoutlibfuse3  nullpath_oklibfuse3%Converts to the Storable counterpart.libfuse3'Converts from the Storable counterpart.Nonelibfuse36Forks a new process and transfers the resources to it.The parent process .libfuse3 with  associated as a cleanup action.libfuse3 with  associated as a cleanup action.libfuse3 with  associated as a cleanup action.libfuse3 with  associated as a cleanup action.libfuse3 with  associated as a cleanup action.libfuse3 with  associated as a cleanup action. Safe-Inferred#Olibfuse3Unwraps the newtype .libfuse3Attempts to extract an  from an " assuming it is constructed with  (typically via ).libfuse3&Catches an exception constructed with  and extracts  from it.libfuse3Like 0 but discards the result of the original action.If no exceptions, returns .libfuse3 Converts a  to a .#This is the same conversion as the unix package does (as of writing).libfuse3Marshals a Haskell string into a NUL terminated C string in a locale-dependent way.Does + and copies it into the destination buffer.5The Haskell string should not contain NUL characters.If the destination buffer is not long enough to hold the source string, it is truncated and a NUL byte is inserted at the end of the buffer.libfuse3testBitSet bits mask is True iff all bits in mask are set in bits. -testBitSet bits mask D bits .&. mask == mask None#$Sylibfuse3 The parts of fuse_parse_cmdline! we are interested in. Passed to . "(foreground, mountpoint, clone_fd)(So far, we don't interpret the value of clone_fd at all so its type is .libfuse3The file system operations.9All operations are optional. Each field is named against struct fuse_operations in fuse.h.fh% is the file handle type returned by 8, and subsequently passed to all other file operations.dh* is the directory handle type returned by , and subsequently passed to  and .libfuse3 Implements  operation (POSIX lstat(2)).fh will always be Nothing5 if the file is not currently open, but may also be Nothing even if it is open.libfuse3 Implements  operation (POSIX  readlink(2)).This function should not append a terminating NUL byte. The returned 5 might be truncated depending on caller buffer size.libfuse3 Implements  (POSIX mknod(2)).?This function will also be called for regular file creation if  is not defined.; is handy to pattern match on the request type of the node.libfuse3 Implements  (POSIX mkdir(2)).libfuse3 Implements  (POSIX  unlink(2)).libfuse3 Implements  (POSIX rmdir(2)).libfuse3 Implements  (POSIX  symlink(2)).libfuse3 Implements  (POSIX  rename(2)).libfuse3 Implements  (POSIX link(2)).libfuse3 Implements  (POSIX chmod(2)).fh will always be Nothing5 if the file is not currently open, but may also be Nothing even if it is open.libfuse3 Implements  (POSIX chown(2)).fh will always be Nothing5 if the file is not currently open, but may also be Nothing even if it is open.Unless FUSE_CAP_HANDLE_KILLPRIV is disabled, this method is expected to reset the setuid and setgid bits.libfuse3 Implements   (POSIX  truncate(2)).fh will always be Nothing5 if the file is not currently open, but may also be Nothing even if it is open.Unless FUSE_CAP_HANDLE_KILLPRIV is disabled, this method is expected to reset the setuid and setgid bits.libfuse3 Implements ! (POSIX open(2)). On success, returns  of a filehandle-like value that will be passed to future file operations; on failure, returns  of the appropriate ., this function doesn't translate the errno and just returns ()= to indicate success, or throws an error to indicate failure.libfuse3Same as  but returns the " instead of throwing an exception.Returns  on success.libfuse3,An empty set of operations whose fields are Nothing.libfuse3 Merges two  in a left-biased manner.libfuse3 Allocates a fuse_operations struct and pokes  into it.Each field of  is converted into a C function pointer and is assigned to a corresponding field of struct fuse_operations. The created R has the following invariants:The content of fuse_operations.fh is a Haskell value of type  StablePtr fh or  StablePtr dh., depending on operations. It is created with , accessed with  and released with .Every methods handle Haskell exception with the supplied error handler.'NULL filepaths (passed from libfuse if (. is set) are translated to empty strings.libfuse3 Allocates a  fuse_args& struct to hold commandline arguments.libfuse3Calls fuse_parse_cmdline to parse the part of the commandline arguments that we care about.fuse_parse_cmdline will modify the 2 struct passed in to remove those arguments; the : struct containing remaining arguments must be passed to  fuse_mount/fuse_new.The multithreaded runtime will be used regardless of the threading flag! See the comment in fuse_session_exit for why.libfuse3Parses the commandline arguments and exit if the args are bad or certain informational flag(s) are specified. See .libfuse3Haskell version of fuse_daemonize.3During the fork, transfers all of the resources in 2 (and its cleanup actions) to the forked process.Mimics daemon() 's use of _exit() instead of exit(); we depend on this in , because otherwise we'll unmount the filesystem when the foreground process exits.libfuse3withSignalHandlers handler io installs signal handlers while io is executed.libfuse3Mounts the filesystem, forks (if requested), and then starts fuse.libfuse3/Parses the commandline arguments and runs fuse.libfuse3Main function of FUSE.+This is all that has to be called from the main function. On top of the  record with filesystem implementation, you must give an exception handler converting Haskell exceptions to .!This function does the following:parses command line optionspasses all options after -- to the fusermount program!mounts the filesystem by calling  fusermountinstalls signal handlersregisters an exit handler to unmount the filesystem on program exitregisters the operationscalls FUSE event looplibfuse3Gets a file handle from  which is embedded with .If either the Ptr  itself or its fh field is NULL, returns Nothing.libfuse3Gets a file handle from . getFHJust = fmap fromJust .  #This means you must make sure that  returns Just% or you'll get a Haskell exception. However., it's deliberately made lazy so that calling ? itself won't throw but trying to use the returned value will.This function is implemented this way in order to take care of rare(?) cases in which / is implemented but not / resp. In such a case,  would not be called but only  would be. Without some protection, we would be dereferencing a non-initialized  , which is undefined behavior. Throwing a Haskell exception in a pure code is much better than UB. See the comment in the source of + if you are interested in more explanation.libfuse3Embeds a file handle into . It should be freed with  when no longer required.libfuse3Frees a file handle in  which is embedded with .libfuse33the dummy to please both ghc and haddock; don't uselibfuse3 A set of file system operations.libfuse36An error handler that converts a Haskell exception to errno.NoneT    ))*+,-./0123456789:;;<=1>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~((xyz{|}~  libfuse3-0.1.0.0-inplaceSystem.LibFuse3.FileStatSystem.LibFuse3.FileSystemStatsSystem.LibFuse3.Internal.CSystem.LibFuse3.FuseConfig!System.LibFuse3.Internal.ResourceSystem.LibFuse3.UtilsSystem.LibFuse3.InternalSystem.Posix.Files FileStatusDate.Time.Clock.POSIX POSIXTimeSystem.Posix.InternalsCStatSystem.LibFuse3 fuseStatfsFuseOperations FuseConfigfuseInitgetSymbolicLinkStatusreadSymbolicLink createDeviceSystem.Posix.DirectorycreateDirectory removeLinkStsten.Posix.DirectoryremoveDirectorycreateSymbolicLinkrename createLink setFileModesetOwnerAndGroup setFileSizeopenFdfdReadfdWrite fileAccessSystem.Posix.Fcntl fileAllocate fileExist nullpathOkFileStatfileIDfileMode linkCount fileOwner fileGroupspecialDeviceIDfileSize blockCountaccessTimeHiResmodificationTimeHiResstatusChangeTimeHiResdefaultFileStat getFileStat getFileStatFd$fStorableFileStat $fEqFileStat$fShowFileStatFileSystemStats blockSize fragmentSize blocksFreeblocksAvailable fileCount filesFree maxNameLength c_statvfs c_fstatvfsgetFileSystemStatsgetFileSystemStatsFd$fStorableFileSystemStats$fEqFileSystemStats$fShowFileSystemStatsCLseekCCopyFileRange CFallocateCFlockCReadBuf CWriteBufCPollCIoctlCBmapCUtimensCLockCCreateCAccessCDestroyCInit CFsyncdir CReleasedirCReaddirCOpendir CRemovexattr CListxattr CGetxattr CSetxattrCFsyncCReleaseCFlushCStatfsCWriteCReadCOpen CTruncateCChownCChmodCLinkCRenameCSymlinkCRmdirCUnlinkCMkdirCMknod CReadlinkCGetattr StructFuse FuseSessionFuseReaddirFlagsFusePollhandle fuseGetattr fuseReadlink fuseMknod fuseMkdir fuseUnlink fuseRmdir fuseSymlink fuseRenamefuseLink fuseChmod fuseChown fuseTruncatefuseOpenfuseRead fuseWrite fuseFlush fuseRelease fuseFsync fuseSetxattr fuseGetxattr fuseListxattrfuseRemovexattr fuseOpendir fuseReaddirfuseReleasedir fuseFsyncdir fuseDestroy fuseAccess fuseCreatefuseLock fuseUtimensfuseBmap fuseIoctlfusePoll fuseWriteBuf fuseReadBuf fuseFlock fuseFallocatefuseCopyFileRange fuseLseekFuseFillDirFlagsFuseFillDirBuf FuseFillDir FuseFileInfo FuseConnInfosetGidgidsetUiduidsetModeumask entryTimeoutnegativeTimeout attrTimeoutintr intrSignalremember hardRemoveuseIno readdirInodirectIo kernelCache autoCacheacAttrTimeoutSet acAttrTimeoutFuseCmdlineOpts FuseBufvecFuseBufFuseArgsmkLseekmkCopyFileRange mkFallocatemkFlock mkReadBuf mkWriteBufmkPollmkIoctlmkBmap mkUtimensmkLockmkCreatemkAccess mkDestroymkInit mkFsyncdir mkReleasedir mkReaddir mkOpendir mkRemovexattr mkListxattr mkGetxattr mkSetxattrmkFsync mkReleasemkFlushmkStatfsmkWritemkReadmkOpen mkTruncatemkChownmkChmodmkLinkmkRename mkSymlinkmkRmdirmkUnlinkmkMkdirmkMknod mkReadlink mkGetattr fuse_unmountfuse_session_exitfuse_pkgversionfuse_parse_cmdlinefuse_opt_free_argsfuse_new fuse_mountfuse_lowlevel_versionfuse_lowlevel_helpfuse_loop_mt_31 fuse_lib_helpfuse_get_session fuse_destroyfuse_cmdline_helpdefaultFuseOperationsmergeLFuseOperations$fStorableFuseConfig$fStorableFuseOperations$fEqFuseConfig$fShowFuseConfig toCFuseConfigfromCFuseConfigdaemonizeResourceTresCallocBytesresMallocBytesresNew resNewCStringresNewFilePath resNewArrayunErrnoioErrorToErrnotryErrno tryErrno_timeSpecToPOSIXTimepokeCStringLen0 testBitSet FuseMainArgs SetxattrFlagSetxattrDefaultSetxattrCreateSetxattrReplace AccessModeFileOKPermOKSyncTypeFullSyncDataSync EntryTypeUnknown NamedPipeCharacterSpecial Directory BlockSpecial RegularFile SymbolicLinkSocketpeekFuseFillDirentryTypeToFileModefileModeToEntryTypeaccess accessErrnoresCFuseOperations resFuseArgsfuseParseCommandLinefuseParseCommandLineOrExit fuseDaemonizewithSignalHandlers fuseMainRealfuseRunfuseMaingetFH getFHJustnewFHdelFH_dummy$fEqSetxattrFlag$fShowSetxattrFlag$fEqAccessMode$fShowAccessMode $fEqSyncType$fShowSyncType $fEqEntryType$fShowEntryTypebaseForeign.StorableStorableclock-0.8-8deb25f4010597df7361d299a43a0b07fb36a8b4e11baa9038e6a18e640e112d System.ClockTimeSpec unix-2.7.2.2System.Posix.Process.CommonexitImmediatelyForeign.Marshal.Alloc callocBytesfree mallocBytesForeign.Marshal.UtilsnewForeign.C.String newCString newFilePathForeign.Marshal.ArraynewArrayForeign.C.ErrorErrnoGHC.IO.ExceptionIOErrorerrnoToIOError throwErrnoeOK time-1.9.3"Data.Time.Clock.Internal.POSIXTimewithCStringLenForeign.C.TypesCIntGHC.IOFilePath Data.EitherRightLefteNOSYSSystem.Posix.Types FileOffsetSystem.Posix.IO.CommonfdSeekFileModeresourcet-1.2.4.2-de55e7f0b395231262ac3e2607cda7129e3fcf4d288805e60a305c38534235d7%Control.Monad.Trans.Resource.Internal ResourceT GHC.Stable StablePtr