Safe Haskell | None |
---|---|
Language | Haskell2010 |
A Haskell binding to libfuse-3.x.
Synopsis
- data FuseOperations fh dh = FuseOperations {
- fuseGetattr :: Maybe (FilePath -> Maybe fh -> IO (Either Errno FileStat))
- fuseReadlink :: Maybe (FilePath -> IO (Either Errno FilePath))
- fuseMknod :: Maybe (FilePath -> FileMode -> DeviceID -> IO Errno)
- fuseMkdir :: Maybe (FilePath -> FileMode -> IO Errno)
- fuseUnlink :: Maybe (FilePath -> IO Errno)
- fuseRmdir :: Maybe (FilePath -> IO Errno)
- fuseSymlink :: Maybe (FilePath -> FilePath -> IO Errno)
- fuseRename :: Maybe (FilePath -> FilePath -> IO Errno)
- fuseLink :: Maybe (FilePath -> FilePath -> IO Errno)
- fuseChmod :: Maybe (FilePath -> Maybe fh -> FileMode -> IO Errno)
- fuseChown :: Maybe (FilePath -> Maybe fh -> UserID -> GroupID -> IO Errno)
- fuseTruncate :: Maybe (FilePath -> Maybe fh -> FileOffset -> IO Errno)
- fuseOpen :: Maybe (FilePath -> OpenMode -> OpenFileFlags -> IO (Either Errno fh))
- fuseRead :: Maybe (FilePath -> fh -> ByteCount -> FileOffset -> IO (Either Errno ByteString))
- fuseWrite :: Maybe (FilePath -> fh -> ByteString -> FileOffset -> IO (Either Errno CInt))
- fuseStatfs :: Maybe (String -> IO (Either Errno FileSystemStats))
- fuseFlush :: Maybe (FilePath -> fh -> IO Errno)
- fuseRelease :: Maybe (FilePath -> fh -> IO ())
- fuseFsync :: Maybe (FilePath -> fh -> SyncType -> IO Errno)
- fuseSetxattr :: Maybe (FilePath -> String -> ByteString -> SetxattrFlag -> IO Errno)
- fuseGetxattr :: Maybe (FilePath -> String -> IO (Either Errno ByteString))
- fuseListxattr :: Maybe (FilePath -> IO (Either Errno [String]))
- fuseRemovexattr :: Maybe (FilePath -> String -> IO Errno)
- fuseOpendir :: Maybe (FilePath -> IO (Either Errno dh))
- fuseReaddir :: Maybe (FilePath -> dh -> IO (Either Errno [(String, Maybe FileStat)]))
- fuseReleasedir :: Maybe (FilePath -> dh -> IO Errno)
- fuseFsyncdir :: Maybe (FilePath -> dh -> SyncType -> IO Errno)
- fuseInit :: Maybe (FuseConfig -> IO FuseConfig)
- fuseDestroy :: Maybe (IO ())
- fuseAccess :: Maybe (FilePath -> AccessMode -> IO Errno)
- fuseCreate :: Maybe (FilePath -> OpenMode -> FileMode -> OpenFileFlags -> IO (Either Errno fh))
- fuseUtimens :: Maybe (FilePath -> Maybe fh -> TimeSpec -> TimeSpec -> IO Errno)
- fuseFallocate :: Maybe (FilePath -> fh -> CInt -> FileOffset -> FileOffset -> IO Errno)
- fuseCopyFileRange :: Maybe (FilePath -> fh -> FileOffset -> FilePath -> fh -> FileOffset -> ByteCount -> CInt -> IO (Either Errno CSsize))
- fuseLseek :: Maybe (FilePath -> fh -> FileOffset -> SeekMode -> IO (Either Errno FileOffset))
- defaultFuseOperations :: FuseOperations fh dh
- data FuseConfig
- data AccessMode
- access :: FilePath -> AccessMode -> IO ()
- accessErrno :: FilePath -> AccessMode -> IO Errno
- data EntryType
- entryTypeToFileMode :: EntryType -> FileMode
- fileModeToEntryType :: FileMode -> EntryType
- data SyncType
- data FileStat = FileStat {}
- defaultFileStat :: FileStat
- getFileStat :: FilePath -> IO FileStat
- getFileStatFd :: Fd -> IO FileStat
- data FileSystemStats
- getFileSystemStats :: FilePath -> IO FileSystemStats
- getFileSystemStatsFd :: Fd -> IO FileSystemStats
- data SetxattrFlag
- module System.LibFuse3.Utils
- fuseMain :: Exception e => FuseOperations fh dh -> (e -> IO Errno) -> IO ()
Documentation
data FuseOperations fh dh Source #
The file system operations.
All operations are optional. Each field is named against struct fuse_operations
in
fuse.h
.
fh
is the file handle type returned by fuseOpen
, and subsequently passed to all
other file operations.
dh
is the directory handle type returned by fuseOpendir
, and subsequently passed to
fuseReaddir
and fuseReleasedir
.
FuseOperations | |
|
defaultFuseOperations :: FuseOperations fh dh Source #
An empty set of operations whose fields are Nothing
.
data FuseConfig Source #
Configures the filesystem. Passed to fuseInit
.
See the module System.LibFuse3.FuseConfig for its fields.
Instances
Eq FuseConfig Source # | |
Defined in System.LibFuse3.FuseConfig (==) :: FuseConfig -> FuseConfig -> Bool # (/=) :: FuseConfig -> FuseConfig -> Bool # | |
Show FuseConfig Source # | |
Defined in System.LibFuse3.FuseConfig showsPrec :: Int -> FuseConfig -> ShowS # show :: FuseConfig -> String # showList :: [FuseConfig] -> ShowS # |
data AccessMode Source #
The query type of access
. Passed to fuseAccess
.
FileOK | File existence ( |
PermOK Bool Bool Bool | Reading, writing and executing permissions ( |
Instances
Eq AccessMode Source # | |
Defined in System.LibFuse3.Internal (==) :: AccessMode -> AccessMode -> Bool # (/=) :: AccessMode -> AccessMode -> Bool # | |
Show AccessMode Source # | |
Defined in System.LibFuse3.Internal showsPrec :: Int -> AccessMode -> ShowS # show :: AccessMode -> String # showList :: [AccessMode] -> ShowS # |
access :: FilePath -> AccessMode -> IO () Source #
Tests if access permissions to the file is granted or the file exists.
Calls access
. Compared to fileAccess
and
fileExist
, this function doesn't translate the errno and just
returns ()
to indicate success, or throws an error to indicate failure.
accessErrno :: FilePath -> AccessMode -> IO Errno Source #
The Unix type of a node in the filesystem.
Unknown | Unknown entry type |
NamedPipe | |
CharacterSpecial | |
Directory | |
BlockSpecial | |
RegularFile | |
SymbolicLink | |
Socket |
Passed to fuseFsync
and fuseFsyncdir
.
Instances
A file status a.k.a. metadata.
The differences from FileStatus
are:
- Is a record type with a
Storable
instance. - Has an extra field
blockCount
. Provides an exact representation (
TimeSpec
) of the time fields without converting toPOSIXTime
.- This assumes that the
struct stat
hasst_atim
,st_mtim
andst_ctim
fields. On Linux this requires Linux >= 2.6.
- This assumes that the
Ptr FileStat
can be cast to Ptr
and vice versa.CStat
Use defaultFileStat
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_blksize
fields are ignored by libfuse, so not provided.
FileStat | |
|
Instances
Eq FileStat Source # | |
Show FileStat Source # | |
Storable FileStat Source # | Targets |
Defined in System.LibFuse3.FileStat |
defaultFileStat :: FileStat Source #
The default value of FileStat
.
The Haskell Equivalent of zero-setting C code { struct stat st; memset(&st, 0, sizeof(struct stat)); }
.
data FileSystemStats Source #
Passed to fuseStatfs
.
The Storable
instance targets C struct statvfs
.
f_favail
, f_fsid
and f_flag
fields are ignored by libfuse, and their corresponding
fields are not defined.
Instances
Eq FileSystemStats Source # | |
Defined in System.LibFuse3.FileSystemStats (==) :: FileSystemStats -> FileSystemStats -> Bool # (/=) :: FileSystemStats -> FileSystemStats -> Bool # | |
Show FileSystemStats Source # | |
Defined in System.LibFuse3.FileSystemStats showsPrec :: Int -> FileSystemStats -> ShowS # show :: FileSystemStats -> String # showList :: [FileSystemStats] -> ShowS # | |
Storable FileSystemStats Source # | |
Defined in System.LibFuse3.FileSystemStats sizeOf :: FileSystemStats -> Int # alignment :: FileSystemStats -> Int # peekElemOff :: Ptr FileSystemStats -> Int -> IO FileSystemStats # pokeElemOff :: Ptr FileSystemStats -> Int -> FileSystemStats -> IO () # peekByteOff :: Ptr b -> Int -> IO FileSystemStats # pokeByteOff :: Ptr b -> Int -> FileSystemStats -> IO () # peek :: Ptr FileSystemStats -> IO FileSystemStats # poke :: Ptr FileSystemStats -> FileSystemStats -> IO () # |
:: FilePath | A path of any file within the filesystem |
-> IO FileSystemStats |
Gets filesystem statistics.
Calls statvfs
.
getFileSystemStatsFd :: Fd -> IO FileSystemStats Source #
Gets filesystem statistics.
Calls fstatvfs
.
data SetxattrFlag Source #
Passed to fuseSetxattr
.
SetxattrDefault | Create a new attribute if it does not exist, or replace the value if it already exists ( |
SetxattrCreate | Perform a pure create, which fails if the named attribute exists already ( |
SetxattrReplace | Perform a pure replace operation, which fails if the named attribute does not already exist ( |
Instances
Eq SetxattrFlag Source # | |
Defined in System.LibFuse3.Internal (==) :: SetxattrFlag -> SetxattrFlag -> Bool # (/=) :: SetxattrFlag -> SetxattrFlag -> Bool # | |
Show SetxattrFlag Source # | |
Defined in System.LibFuse3.Internal showsPrec :: Int -> SetxattrFlag -> ShowS # show :: SetxattrFlag -> String # showList :: [SetxattrFlag] -> ShowS # |
module System.LibFuse3.Utils
fuseMain :: Exception e => FuseOperations fh dh -> (e -> IO Errno) -> IO () Source #
Main function of FUSE.
This is all that has to be called from the main
function. On top of
the FuseOperations
record with filesystem implementation, you must give
an exception handler converting Haskell exceptions to Errno
.
This function does the following:
- parses command line options
- passes all options after
--
to the fusermount program - mounts the filesystem by calling
fusermount
- installs signal handlers
- registers an exit handler to unmount the filesystem on program exit
- registers the operations
- calls FUSE event loop