module System.Gnome.VFS.URI (
URI,
ToplevelURI,
TextURI,
URIHideOptions(..),
uriFromString,
uriResolveRelative,
uriResolveSymbolicLink,
uriAppendString,
uriAppendPath,
uriAppendFileName,
uriToString,
uriIsLocal,
uriHasParent,
uriGetParent,
uriGetToplevel,
uriGetHostName,
uriGetScheme,
uriGetHostPort,
uriGetUserName,
uriGetPassword,
uriSetHostName,
uriSetHostPort,
uriSetUserName,
uriSetPassword,
uriEqual,
uriIsParent,
uriGetPath,
uriGetFragmentIdentifier,
uriExtractDirname,
uriExtractShortName,
uriExtractShortPathName,
uriListParse,
uriMakeFullFromRelative
) where
import Control.Monad (liftM)
import System.Gnome.VFS.Marshal
import System.Gnome.VFS.BasicTypes
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.GList
import System.IO (FilePath)
uriFromString :: TextURI
-> Maybe URI
uriFromString textURI =
unsafePerformIO $ withUTFString textURI gnome_vfs_uri_new >>= maybePeek newURI
uriResolveRelative :: URI
-> String
-> Maybe URI
uriResolveRelative base relativeReference =
unsafePerformIO $ (withUTFString relativeReference $
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_resolve_relative argPtr1 arg2) base) >>= maybePeek newURI
uriResolveSymbolicLink :: URI
-> String
-> Maybe URI
uriResolveSymbolicLink base symbolicLink =
unsafePerformIO $ (withUTFString symbolicLink $
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_resolve_symbolic_link argPtr1 arg2) base) >>= maybePeek newURI
uriAppendString :: URI
-> String
-> Maybe URI
uriAppendString uri uriFragment =
unsafePerformIO $ (withUTFString uriFragment $
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_append_string argPtr1 arg2) uri) >>= maybePeek newURI
uriAppendPath :: URI
-> FilePath
-> Maybe URI
uriAppendPath uri path =
unsafePerformIO $ (withUTFString path $
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_append_path argPtr1 arg2) uri) >>= maybePeek newURI
uriAppendFileName :: URI
-> FilePath
-> Maybe URI
uriAppendFileName uri fileName =
unsafePerformIO $ (withUTFString fileName $
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_append_file_name argPtr1 arg2) uri) >>= maybePeek newURI
uriToString :: URI
-> URIHideOptions
-> TextURI
uriToString uri hideOptions =
unsafePerformIO $ ((\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_to_string argPtr1 arg2) uri $
cFromEnum hideOptions) >>= readUTFString
uriIsLocal :: URI
-> IO Bool
uriIsLocal uri =
liftM toBool $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_is_local argPtr1) uri
uriHasParent :: URI
-> Bool
uriHasParent uri =
unsafePerformIO $ liftM toBool $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_has_parent argPtr1) uri
uriGetParent :: URI
-> Maybe URI
uriGetParent uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_parent argPtr1) uri >>= maybePeek newURI
uriGetToplevel :: URI
-> ToplevelURI
uriGetToplevel uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_toplevel argPtr1) uri >>= newToplevelURI
uriGetHostName :: URI
-> Maybe String
uriGetHostName uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_host_name argPtr1) uri >>= (maybePeek peekUTFString)
uriGetScheme :: URI
-> Maybe String
uriGetScheme uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_scheme argPtr1) uri >>= (maybePeek peekUTFString)
uriGetHostPort :: URI
-> Word
uriGetHostPort uri =
unsafePerformIO $ liftM cToEnum $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_host_port argPtr1) uri
uriGetUserName :: URI
-> Maybe String
uriGetUserName uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_user_name argPtr1) uri >>= (maybePeek peekUTFString)
uriGetPassword :: URI
-> Maybe String
uriGetPassword uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_password argPtr1) uri >>= (maybePeek peekUTFString)
marshalSet :: (URI -> a -> IO ())
-> URI
-> a
-> URI
marshalSet setAction uri newVal =
unsafePerformIO $ do uri <- (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_dup argPtr1) uri >>= newURI
setAction uri newVal
return uri
uriSetHostName :: URI
-> Maybe String
-> URI
uriSetHostName =
marshalSet $ \uri hostName ->
maybeWith withUTFString hostName $ (\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_set_host_name argPtr1 arg2) uri
uriSetHostPort :: URI
-> Word
-> URI
uriSetHostPort =
marshalSet $ \uri hostPort ->
(\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_set_host_port argPtr1 arg2) uri $ cFromEnum hostPort
uriSetUserName :: URI
-> Maybe String
-> URI
uriSetUserName =
marshalSet $ \uri userName ->
maybeWith withUTFString userName $ (\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_set_user_name argPtr1 arg2) uri
uriSetPassword :: URI
-> Maybe String
-> URI
uriSetPassword =
marshalSet $ \uri password ->
maybeWith withUTFString password $ (\(URI arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_set_password argPtr1 arg2) uri
uriEqual :: URI
-> URI
-> Bool
uriEqual a b =
unsafePerformIO $ liftM toBool $ (\(URI arg1) (URI arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gnome_vfs_uri_equal argPtr1 argPtr2) a b
uriIsParent :: URI
-> URI
-> Bool
-> Bool
uriIsParent possibleParent possibleChild recursive =
unsafePerformIO $ liftM toBool $
(\(URI arg1) (URI arg2) arg3 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gnome_vfs_uri_is_parent argPtr1 argPtr2 arg3) possibleParent possibleChild $ fromBool recursive
uriGetPath :: URI
-> Maybe FilePath
uriGetPath uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_path argPtr1) uri >>= (maybePeek peekUTFString)
uriGetFragmentIdentifier :: URI
-> Maybe String
uriGetFragmentIdentifier uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_get_fragment_identifier argPtr1) uri >>= (maybePeek peekUTFString)
uriExtractDirname :: URI
-> Maybe FilePath
uriExtractDirname uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_extract_dirname argPtr1) uri >>= (maybePeek readUTFString)
uriExtractShortName :: URI
-> String
uriExtractShortName uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_extract_short_name argPtr1) uri >>= readUTFString
uriExtractShortPathName :: URI
-> String
uriExtractShortPathName uri =
unsafePerformIO $ (\(URI arg1) -> withForeignPtr arg1 $ \argPtr1 ->gnome_vfs_uri_extract_short_path_name argPtr1) uri >>= readUTFString
uriListParse :: String
-> [URI]
uriListParse uriList =
unsafePerformIO $ do uriList <- withUTFString uriList $ \cURIList ->
gnome_vfs_uri_list_parse cURIList >>= fromGList
sequence $ map newURI uriList
uriMakeFullFromRelative :: String
-> String
-> Maybe String
uriMakeFullFromRelative baseURI relativeURI =
unsafePerformIO $ (withUTFString baseURI $ \cBaseURI ->
withUTFString relativeURI $ \cRelativeURI ->
gnome_vfs_uri_make_full_from_relative cBaseURI cRelativeURI) >>= maybePeek readUTFString
foreign import ccall safe "gnome_vfs_uri_new"
gnome_vfs_uri_new :: ((Ptr CChar) -> (IO (Ptr URI)))
foreign import ccall safe "gnome_vfs_uri_resolve_relative"
gnome_vfs_uri_resolve_relative :: ((Ptr URI) -> ((Ptr CChar) -> (IO (Ptr URI))))
foreign import ccall safe "gnome_vfs_uri_resolve_symbolic_link"
gnome_vfs_uri_resolve_symbolic_link :: ((Ptr URI) -> ((Ptr CChar) -> (IO (Ptr URI))))
foreign import ccall safe "gnome_vfs_uri_append_string"
gnome_vfs_uri_append_string :: ((Ptr URI) -> ((Ptr CChar) -> (IO (Ptr URI))))
foreign import ccall safe "gnome_vfs_uri_append_path"
gnome_vfs_uri_append_path :: ((Ptr URI) -> ((Ptr CChar) -> (IO (Ptr URI))))
foreign import ccall safe "gnome_vfs_uri_append_file_name"
gnome_vfs_uri_append_file_name :: ((Ptr URI) -> ((Ptr CChar) -> (IO (Ptr URI))))
foreign import ccall safe "gnome_vfs_uri_to_string"
gnome_vfs_uri_to_string :: ((Ptr URI) -> (CInt -> (IO (Ptr CChar))))
foreign import ccall safe "gnome_vfs_uri_is_local"
gnome_vfs_uri_is_local :: ((Ptr URI) -> (IO CInt))
foreign import ccall safe "gnome_vfs_uri_has_parent"
gnome_vfs_uri_has_parent :: ((Ptr URI) -> (IO CInt))
foreign import ccall safe "gnome_vfs_uri_get_parent"
gnome_vfs_uri_get_parent :: ((Ptr URI) -> (IO (Ptr URI)))
foreign import ccall safe "gnome_vfs_uri_get_toplevel"
gnome_vfs_uri_get_toplevel :: ((Ptr URI) -> (IO (Ptr ToplevelURI)))
foreign import ccall safe "gnome_vfs_uri_get_host_name"
gnome_vfs_uri_get_host_name :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_get_scheme"
gnome_vfs_uri_get_scheme :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_get_host_port"
gnome_vfs_uri_get_host_port :: ((Ptr URI) -> (IO CUInt))
foreign import ccall safe "gnome_vfs_uri_get_user_name"
gnome_vfs_uri_get_user_name :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_get_password"
gnome_vfs_uri_get_password :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_dup"
gnome_vfs_uri_dup :: ((Ptr URI) -> (IO (Ptr URI)))
foreign import ccall safe "gnome_vfs_uri_set_host_name"
gnome_vfs_uri_set_host_name :: ((Ptr URI) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gnome_vfs_uri_set_host_port"
gnome_vfs_uri_set_host_port :: ((Ptr URI) -> (CUInt -> (IO ())))
foreign import ccall safe "gnome_vfs_uri_set_user_name"
gnome_vfs_uri_set_user_name :: ((Ptr URI) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gnome_vfs_uri_set_password"
gnome_vfs_uri_set_password :: ((Ptr URI) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gnome_vfs_uri_equal"
gnome_vfs_uri_equal :: ((Ptr URI) -> ((Ptr URI) -> (IO CInt)))
foreign import ccall safe "gnome_vfs_uri_is_parent"
gnome_vfs_uri_is_parent :: ((Ptr URI) -> ((Ptr URI) -> (CInt -> (IO CInt))))
foreign import ccall safe "gnome_vfs_uri_get_path"
gnome_vfs_uri_get_path :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_get_fragment_identifier"
gnome_vfs_uri_get_fragment_identifier :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_extract_dirname"
gnome_vfs_uri_extract_dirname :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_extract_short_name"
gnome_vfs_uri_extract_short_name :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_extract_short_path_name"
gnome_vfs_uri_extract_short_path_name :: ((Ptr URI) -> (IO (Ptr CChar)))
foreign import ccall safe "gnome_vfs_uri_list_parse"
gnome_vfs_uri_list_parse :: ((Ptr CChar) -> (IO (Ptr ())))
foreign import ccall safe "gnome_vfs_uri_make_full_from_relative"
gnome_vfs_uri_make_full_from_relative :: ((Ptr CChar) -> ((Ptr CChar) -> (IO (Ptr CChar))))