tdeU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST GHC 6.4-6.12 experimental,taruti@taruti.net, jeremy.bobbio@etu.upmc.frUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ This record, given to T", binds each required file system  operations. Each field is named against  System.Posix names. Matching Linux system ( calls are also given as a reference. fh% is the file handle type returned by  and subsequently passed ! to all other file operations.  Implements (System.Posix.Files.getSymbolicLinkStatus operation  (POSIX lstat(2)).  Implements #System.Posix.Files.readSymbolicLink operation (POSIX   readlink(2)). The returned  might be truncated $ depending on caller buffer size.  Implements System.Posix.Files.createDevice (POSIX mknod(2)). @ This function will also be called for regular file creation.  Implements &System.Posix.Directory.createDirectory (POSIX  mkdir(2)).  Implements System.Posix.Files.removeLink (POSIX  unlink(2)).  Implements &System.Posix.Directory.removeDirectory (POSIX  rmdir(2)).  Implements %System.Posix.Files.createSymbolicLink (POSIX   symlink(2)).  Implements System.Posix.Files.rename (POSIX  rename(2)).  Implements System.Posix.Files.createLink (POSIX link(2)).  Implements System.Posix.Files.setFileMode (POSIX chmod(2)).  Implements #System.Posix.Files.setOwnerAndGroup (POSIX  chown(2)).  Implements System.Posix.Files.setFileSize (POSIX  truncate(2)).  Implements System.Posix.Files.setFileTimes  (POSIX utime(2)).  Implements System.Posix.Files.openFd (POSIX open(2)). On  success, returns ) of a filehandle-like value that will be 9 passed to future file operations; on failure, returns  of the  appropriate . BNo creation, exclusive access or truncating flags will be passed. C This should check that the operation is permitted for the given  flags. Implements Unix98 pread(2). It differs from  System.Posix.Files.fdRead by the explicit  argument.  The fuse.h$ documentation stipulates that this "should return A exactly the number of bytes requested except on EOF or error, B otherwise the rest of the data will be substituted with zeroes." Implements Unix98  pwrite(2) . It differs  from System.Posix.Files.fdWrite by the explicit  argument.  Implements  statfs(2).  Called when close(2)" has been called on an open file. M 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. !ACalled 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 C release will mean that no more reads or writes will happen on the  file. " Implements fsync(2). # Implements  opendir(3)(. This method should check if the open . operation is permitted for this directory. $ Implements  readdir(3)(. The entire contents of the directory F should be returned as a list of tuples (corresponding to the first # mode of operation documented in fuse.h). % Implements  closedir(3). &Synchronize the directory's contents; analogous to  ". ';Check file access permissions; this will be called for the ! access() system call. If the default_permissions mount option A is given, this method is not called. This method is also not , called under Linux kernel versions 2.4.x (=Initializes the filesystem. This is called before all other  operations. ),Called on filesystem exit to allow cleanup. * Returned by Q. +,-.Used by " and &. /#Synchronize only the file content. 0BSynchronize all in-core parts of a file to disk: file content and  metadata. 1Type used by the . 232Optimal 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. 8 Free file nodes in file system. 92Maximum length of filenames. FUSE default is 255. :+The Unix type of a node in the filesystem. ;<=>?@ABUnknown entry type CUsed 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. DEFGHIJKLMNOP Converts an : into the corresponding POSIX . Q@Returns the context of the program doing the current FUSE call. REmpty /* default versions of the FUSE operations. SDefault exception handler. 1 Print the exception on error output and returns . TMain function of FUSE. , This is all that has to be called from the main function. On top of  the  6 record with filesystem implementation, you must give 7 an exception handler converting Haskell exceptions to . "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 #System.Posix.Signals.keyboardSignal,  #System.Posix.Signals.lostConnection,  (System.Posix.Signals.softwareTermination and  "System.Posix.Signals.openEndedPipe ; G registers an exit handler to unmount the filesystem on program exit ;  registers the operations ;  calls FUSE event loop.       !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU  !"#$%&'()RTSCDEFGHIJKLMNO:BA@?>=<;123456789.0/Q*+,-P H  !"#$%&'() !"#$%&'()*+,-+,-.0//012345678923456789:BA@?>=<;;<=>?@ABC DEFGHIJKLMNODEFGHIJKLMNOPQRSTA      !"#$%&'()*+,-./01234456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE HFuse-0.2.2 System.Fuse unix-2.4.0.2System.Posix.FilesintersectFileModesunionFileModesSystem.Posix.IOReadOnly WriteOnly ReadWriteOpenModetruncnonBlocknoctty exclusiveappend OpenFileFlagsFuseOperationsfuseGetFileStatfuseReadSymbolicLinkfuseCreateDevicefuseCreateDirectoryfuseRemoveLinkfuseRemoveDirectoryfuseCreateSymbolicLink fuseRenamefuseCreateLinkfuseSetFileModefuseSetOwnerAndGroupfuseSetFileSizefuseSetFileTimesfuseOpenfuseRead fuseWritefuseGetFileSystemStats fuseFlush fuseReleasefuseSynchronizeFilefuseOpenDirectoryfuseReadDirectoryfuseReleaseDirectoryfuseSynchronizeDirectory fuseAccessfuseInit fuseDestroy FuseContext fuseCtxUserIDfuseCtxGroupIDfuseCtxProcessIDSyncTypeDataSyncFullSyncFileSystemStatsfsStatBlockSizefsStatBlockCountfsStatBlocksFreefsStatBlocksAvailablefsStatFileCountfsStatFilesFreefsStatMaxNameLength EntryTypeSocket SymbolicLink RegularFile BlockSpecial DirectoryCharacterSpecial NamedPipeUnknownFileStat statEntryType statFileMode statLinkCount statFileOwner statFileGroupstatSpecialDeviceID statFileSize statBlocksstatAccessTimestatModificationTimestatStatusChangeTimeentryTypeToFileModegetFuseContextdefaultFuseOpsdefaultExceptionHandlerfuseMainbzero 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_mountCFillDir CFillDirBufCDirFil CDirHandleCDestroyCInitCAccess CFSyncDir CReleaseDirCReadDirCOpenDirCFSyncCReleaseCFlushCStatFS CStructStatFSCWriteCReadCOpenCUTimeCUTimBuf CTruncateCChOwnCChModCLinkCRenameCSymLinkCRmDirCUnlinkCMkDirCMkNod CReadLinkCGetAttrCStat CFuseConnInfo CFuseFileInfo CFuseContextCFuseOperations CStructFuse CFuseSession CFuseChan CFuseArgsbaseGHC.IOFilePath Data.EitherRightLeftForeign.C.ErrorErrnoSystem.Posix.Types FileOffsetfileStatToCStat entryTypeToDT fileTypeModesblockSpecialModecharacterSpecialMode namedPipeModeregularFileMode directoryModesymbolicLinkMode socketModeFileModefileModeToEntryType withFuseArgswithStructFuseeFAULTfuseParseCommandLineunErrnookErrnopokeCStringLenpokeCStringLen0bsToBuferrnoToIOErrorthrowErrnoPathIfMinus1_throwErrnoPathIfMinus1throwErrnoPathIfNullthrowErrnoPathIf_throwErrnoPathIfthrowErrnoPaththrowErrnoIfNullRetryMayBlockthrowErrnoIfNullRetrythrowErrnoIfNull throwErrnoIfMinus1RetryMayBlock_throwErrnoIfMinus1RetryMayBlockthrowErrnoIfMinus1Retry_throwErrnoIfMinus1RetrythrowErrnoIfMinus1_throwErrnoIfMinus1throwErrnoIfRetryMayBlock_throwErrnoIfRetry_throwErrnoIfRetryMayBlockthrowErrnoIfRetry throwErrnoIf_ throwErrnoIf throwErrno resetErrnogetErrno isValidErrnoeXDEV eWOULDBLOCKeUSERSeTXTBSY eTOOMANYREFS eTIMEDOUTeTIMEeSTALEeSRMNTeSRCHeSPIPEeSOCKTNOSUPPORT eSHUTDOWNeRREMOTE eRPCMISMATCHeROFSeREMOTEeREMCHGeRANGE ePROTOTYPEePROTONOSUPPORTePROTO ePROGUNAVAIL ePROGMISMATCH ePROCUNAVAILePROCLIMePIPE ePFNOSUPPORTePERM eOPNOTSUPPeNXIOeNOTTYeNOTSOCK eNOTEMPTYeNOTDIReNOTCONNeNOTBLKeNOSYSeNOSTReNOSReNOSPC eNOPROTOOPTeNONETeNOMSGeNOMEMeNOLINKeNOLCKeNOEXECeNOENTeNODEVeNODATAeNOBUFSeNFILE eNETUNREACH eNETRESETeNETDOWN eNAMETOOLONG eMULTIHOPeMSGSIZEeMLINKeMFILEeLOOPeISDIReISCONNeIOeINVALeINTR eINPROGRESSeILSEQeIDRM eHOSTUNREACH eHOSTDOWNeFTYPEeFBIGeEXISTeDQUOTeDOMeDIRTY eDESTADDRREQeDEADLK eCONNRESET eCONNREFUSED eCONNABORTEDeCOMMeCHILDeBUSYeBADRPCeBADMSGeBADFeALREADYeAGAIN eAFNOSUPPORTeADV eADDRNOTAVAIL eADDRINUSEeACCESe2BIGeOK