bWW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV GHC 6.4-6.12 experimental,taruti@taruti.net, jeremy.bobbio@etu.upmc.fr Safe-Infered0 This record, given to U", binds each required file system  operations. Each field is named against  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  operation  (POSIX lstat(2)).  Implements  operation (POSIX   readlink(2)). The returned W might be truncated $ depending on caller buffer size.  Implements  (POSIX mknod(2)). @ 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 X) of a filehandle-like value that will be 9 passed to future file operations; on failure, returns Y of the  appropriate Z. 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   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  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 R. .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 . 32Optimal 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. BUnknown 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. P Converts an : into the corresponding POSIX \. R@Returns the context of the program doing the current FUSE call. SEmpty /* default versions of the FUSE operations. TDefault exception handler. 1 Print the exception on error output and returns ]. UMain 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 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   ; G registers an exit handler to unmount the filesystem on program exit ;  registers the operations ;  calls FUSE event loop. J  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV^_`abcdefghijklmnopqrstuvwxyz{|}~]Z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW  !"#$%&'()SUVTCDEFGHIJKLMNO:BA@?>=<;123456789.0/R*+,-PQ   !"#$%&'()*+,-.0/123456789:BA@?>=<;C DEFGHIJKLMNOPQRSTUV !"#$%&&'(')**+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrsqtuqtvqwxqyzqy{qw|qw}qw~qwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwqwx HFuse-0.2.4.1 System.FuseSystemPosixSystem.Posix.FilesgetSymbolicLinkStatusreadSymbolicLink createDeviceSystem.Posix.DirectorycreateDirectory removeLinkremoveDirectorycreateSymbolicLinkrename createLink setFileModesetOwnerAndGroup setFileSize setFileTimesopenFdfdReadfdWriteSystem.Posix.SignalskeyboardSignallostConnectionsoftwareTermination openEndedPipe unix-2.5.1.0System.Posix.IO.CommonReadOnly WriteOnly ReadWriteOpenModetruncnonBlocknoctty exclusiveappend OpenFileFlagsSystem.Posix.Files.CommonintersectFileModesunionFileModesFuseOperationsfuseGetFileStatfuseReadSymbolicLinkfuseCreateDevicefuseCreateDirectoryfuseRemoveLinkfuseRemoveDirectoryfuseCreateSymbolicLink 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 FileOffsetFileModeeFAULTerrnoToIOErrorthrowErrnoPathIfMinus1_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