kfZW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV!(c) Jrmy Bobbio, Taru Karttunen BSD-styleMontez Fitzpatrick experimental GHC 6.4-7.8.2None3HM0 This record, given to U0, binds each required file system operations.Each field is named against E names. Matching Linux system calls are also given as a reference.fh% is the file handle type returned by 9 and subsequently passed to all other file operations. Implements  operation (POSIX lstat(2)). Implements  operation (POSIX  readlink(2)). The returned W7 might be truncated depending on caller buffer size. Implements  (POSIX mknod(2)B). This function will also be called for regular file creation. Implements   (POSIX mkdir(2)). Implements   (POSIX  unlink(2)). Implements   (POSIX rmdir(2)). Implements   (POSIX  symlink(2)). Implements   (POSIX  rename(2)). Implements  (POSIX link(2)). Implements  (POSIX chmod(2)). Implements  (POSIX chown(2)). Implements  (POSIX  truncate(2)). Implements  (POSIX utime(2)). Implements  (POSIX open(2)). On success, returns Xb of a filehandle-like value that will be passed to future file operations; on failure, returns Y of the appropriate Z.No creation, exclusive access or truncating flags will be passed. This should check that the operation is permitted for the given flags.Implements Unix98 pread(2). It differs from  by the explicit [ argument. The fuse.h documentation stipulates that this "should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes."Implements Unix98  pwrite(2). It differs from  by the explicit [ argument. Implements  statfs(2).  Called when close(2) has been called on an open file. Note: this does not mean that the file is released. This function may be called more than once for each open(2)+. The return value is passed on to the close(2) system call.!gCalled when an open file has all file descriptors closed and all memory mappings unmapped. For every open! call there will be exactly one release call with the same flags. It is possible to have a file opened more than once, in which case only the last release will mean that no more reads or writes will happen on the file." Implements fsync(2).# Implements  opendir(3)U. This method should check if the open operation is permitted for this directory.$ Implements  readdir(3). The entire contents of the directory should be returned as a list of tuples (corresponding to the first mode of operation documented in fuse.h).% Implements  closedir(3).&6Synchronize the directory's contents; analogous to ".'\Check file access permissions; this will be called for the access() system call. If the default_permissionsz mount option is given, this method is not called. This method is also not called under Linux kernel versions 2.4.x(KInitializes the filesystem. This is called before all other operations.)+Called on filesystem exit to allow cleanup.* Returned by R..Used by " and &./"Synchronize only the file content.0LSynchronize all in-core parts of a file to disk: file content and metadata.1Type used by the .31Optimal transfer block size. FUSE default is 512.4!Total data blocks in file system.5Free blocks in file system.6(Free blocks available to non-superusers.7 Total file nodes in file system.8Free file nodes in file system.91Maximum length of filenames. FUSE default is 255.:*The Unix type of a node in the filesystem.BUnknown entry typeCUsed by . Corresponds to  struct stat from stat.h; st_dev, st_ino and  st_blksize@ are omitted, since (from the libfuse documentation): "the st_dev and  st_blksize fields are ignored. The st_ino? field is ignored except if the use_ino mount option is given."<TODO: at some point the inode field will probably be needed.P Converts an : into the corresponding POSIX \.R?Returns the context of the program doing the current FUSE call.S0Empty / default versions of the FUSE operations.TLDefault exception handler. Print the exception on error output and returns ].UCMain function of FUSE. This is all that has to be called from the main function. On top of the  m record with filesystem implementation, you must give an exception handler converting Haskell exceptions to Z.!This function does the following:parses command line options (-d, -s and -h) ;passes all options after -- to the fusermount program ;!mounts the filesystem by calling  fusermount ;installs signal handlers for , ,  and  ;Eregisters an exit handler to unmount the filesystem on program exit ;registers the operations ;calls FUSE event loop.^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV      !"#$%&'()*+,-./]0123456789:;<=>?@ABCDEFGHZ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW  !"#$%&'()SUVTCDEFGHIJKLMNO:BA@?>=<;123456789.0/R*+,-PQ y^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-.0/123456789:BA@?>=<;C DEFGHIJKLMNOPQRSTUVI !"#$%&'())**+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrsqtuqtvqwxqyzqy{qw|}~Fqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqw qw qw qw qw qwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqw qw!qw"qw#qw$qw%qw&qw'qw(qw)qw*qw+qw,qw-qw.qw/qw0qw1qw2qw3qw4qw5qw6qw7qw8qw9qw:qw;qw<qw=qw>qw?qw@qwAqwBqwCqwDqwEqwFqwGqwHqwIqwJqwKqwLqwMqwNqwOqwPqwQqwRqwSqwTqwUqwVqwWqwXqwYqwZqw[qw\qw]qw^qw_qw`qwaqwbqwcqwdqweqwxf HFuse-0.2.4.4 System.FuseSystemPosixSystem.Posix.FilesgetSymbolicLinkStatusreadSymbolicLink createDeviceSystem.Posix.DirectorycreateDirectory removeLinkremoveDirectorycreateSymbolicLinkrename createLink setFileModesetOwnerAndGroup setFileSize setFileTimesopenFdfdReadfdWriteSystem.Posix.SignalskeyboardSignallostConnectionsoftwareTermination openEndedPipe unix-2.7.0.1System.Posix.Files.CommonintersectFileModesunionFileModesSystem.Posix.IO.CommonReadOnly WriteOnly ReadWriteOpenModetruncnonBlocknoctty exclusiveappend OpenFileFlagsFuseOperationsfuseGetFileStatfuseReadSymbolicLinkfuseCreateDevicefuseCreateDirectoryfuseRemoveLinkfuseRemoveDirectoryfuseCreateSymbolicLink fuseRenamefuseCreateLinkfuseSetFileModefuseSetOwnerAndGroupfuseSetFileSizefuseSetFileTimesfuseOpenfuseRead fuseWritefuseGetFileSystemStats fuseFlush fuseReleasefuseSynchronizeFilefuseOpenDirectoryfuseReadDirectoryfuseReleaseDirectoryfuseSynchronizeDirectory fuseAccessfuseInit fuseDestroy FuseContext fuseCtxUserIDfuseCtxGroupIDfuseCtxProcessIDSyncTypeDataSyncFullSyncFileSystemStatsfsStatBlockSizefsStatBlockCountfsStatBlocksFreefsStatBlocksAvailablefsStatFileCountfsStatFilesFreefsStatMaxNameLength EntryTypeSocket SymbolicLink RegularFile BlockSpecial DirectoryCharacterSpecial NamedPipeUnknownFileStat statEntryType statFileMode statLinkCount statFileOwner statFileGroupstatSpecialDeviceID statFileSize statBlocksstatAccessTimestatModificationTimestatStatusChangeTimeentryTypeToFileModefileModeToEntryTypegetFuseContextdefaultFuseOpsdefaultExceptionHandlerfuseMainfuseRunbaseGHC.IOFilePath Data.EitherRightLeftForeign.C.ErrorErrnoSystem.Posix.Types FileOffsetFileModeeFAULTCFillDir CFillDirBufCDirFil CDirHandleCDestroyCInitCAccess CFSyncDir CReleaseDirCReadDirCOpenDirCFSyncCReleaseCFlushCStatFS CStructStatFSCWriteCReadCOpenCUTimeCUTimBuf CTruncateCChOwnCChModCLinkCRenameCSymLinkCRmDirCUnlinkCMkDirCMkNod CReadLinkCGetAttrCStat CFuseConnInfo CFuseFileInfo CFuseContextCFuseOperations CStructFuse CFuseSession CFuseChan CFuseArgsbzero mkFillDirmkDirFil mkDestroymkInitmkAccess mkFSyncDir mkReleaseDir mkReadDir mkOpenDirmkFSync mkReleasemkFlushmkStatFSmkWritemkReadmkOpenmkUTime mkTruncatemkChOwnmkChModmkLinkmkRename mkSymLinkmkRmDirmkUnlinkmkMkDirmkMkNod mkReadLink mkGetAttrfuse_get_context fuse_loop_mtfuse_opt_free_args fuse_destroyfuse_newfuse_parse_cmdlinefuse_remove_signal_handlersfuse_set_signal_handlersfuse_session_exitfuse_get_session fuse_unmount fuse_mountfileStatToCStat entryTypeToDT fileTypeModesblockSpecialModecharacterSpecialMode namedPipeModeregularFileMode directoryModesymbolicLinkMode socketMode withFuseArgswithStructFusefuseParseCommandLinedaemonwithSignalHandlers fuseMainRealunErrnookErrnopokeCStringLenpokeCStringLen0catchbsToBufgetFHdelFHerrnoToIOErrorthrowErrnoPathIfMinus1_throwErrnoPathIfMinus1throwErrnoPathIfNullthrowErrnoPathIf_throwErrnoPathIfthrowErrnoPaththrowErrnoIfNullRetryMayBlockthrowErrnoIfNullRetrythrowErrnoIfNull throwErrnoIfMinus1RetryMayBlock_throwErrnoIfMinus1RetryMayBlockthrowErrnoIfMinus1Retry_throwErrnoIfMinus1RetrythrowErrnoIfMinus1_throwErrnoIfMinus1throwErrnoIfRetryMayBlock_throwErrnoIfRetry_throwErrnoIfRetryMayBlockthrowErrnoIfRetry throwErrnoIf_ throwErrnoIf throwErrno resetErrnogetErrno isValidErrnoeXDEV eWOULDBLOCKeUSERSeTXTBSY eTOOMANYREFS eTIMEDOUTeTIMEeSTALEeSRMNTeSRCHeSPIPEeSOCKTNOSUPPORT eSHUTDOWNeRREMOTE eRPCMISMATCHeROFSeREMOTEeREMCHGeRANGE ePROTOTYPEePROTONOSUPPORTePROTO ePROGUNAVAIL ePROGMISMATCH ePROCUNAVAILePROCLIMePIPE ePFNOSUPPORTePERM eOPNOTSUPPeNXIOeNOTTYeNOTSUPeNOTSOCK eNOTEMPTYeNOTDIReNOTCONNeNOTBLKeNOSYSeNOSTReNOSReNOSPC eNOPROTOOPTeNONETeNOMSGeNOMEMeNOLINKeNOLCKeNOEXECeNOENTeNODEVeNODATAeNOBUFSeNFILE eNETUNREACH eNETRESETeNETDOWN eNAMETOOLONG eMULTIHOPeMSGSIZEeMLINKeMFILEeLOOPeISDIReISCONNeIOeINVALeINTR eINPROGRESSeILSEQeIDRM eHOSTUNREACH eHOSTDOWNeFTYPEeFBIGeEXISTeDQUOTeDOMeDIRTY eDESTADDRREQeDEADLK eCONNRESET eCONNREFUSED eCONNABORTEDeCOMMeCHILDeBUSYeBADRPCeBADMSGeBADFeALREADYeAGAIN eAFNOSUPPORTeADV eADDRNOTAVAIL eADDRINUSEeACCESe2BIGeOK