summaryrefslogtreecommitdiff
path: root/Redland/MidLevel.hs
diff options
context:
space:
mode:
authordefanor <defanor@uberspace.net>2018-02-23 18:32:30 +0300
committerdefanor <defanor@uberspace.net>2018-02-23 18:32:30 +0300
commitd7c6f1d025cb7b03a7d44625827a7e852df23e0e (patch)
treeda5d5ea583dccf69a58e6ba0e86ebc3866d61945 /Redland/MidLevel.hs
parentc249c4d8a8e6dbc4c95f656973126ab5ec07df49 (diff)
Fix Literal value datatype URI handling
It should be an URI, not a string.
Diffstat (limited to 'Redland/MidLevel.hs')
-rw-r--r--Redland/MidLevel.hs10
1 files changed, 7 insertions, 3 deletions
diff --git a/Redland/MidLevel.hs b/Redland/MidLevel.hs
index c8e9aa6..e9f1993 100644
--- a/Redland/MidLevel.hs
+++ b/Redland/MidLevel.hs
@@ -289,10 +289,14 @@ nodeGetLiteralValueLanguage node =
withForeignPtr node $
librdf_node_get_literal_value_language >=> maybeSharedCString
-nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode -> IO (Maybe String)
+nodeGetLiteralValueDatatypeURI :: ForeignPtr RedlandNode
+ -> IO (Maybe (ForeignPtr RedlandURI))
nodeGetLiteralValueDatatypeURI node =
- withForeignPtr node $
- librdf_node_get_literal_value_datatype_uri >=> maybeSharedCString
+ withForeignPtr node $ \node' -> do
+ oldURI <- librdf_node_get_literal_value_datatype_uri node'
+ if oldURI == nullPtr
+ then pure Nothing
+ else Just <$> initialize (librdf_new_uri_from_uri oldURI) p_librdf_free_uri
nodeGetLiteralValueIsWellFormedXML :: ForeignPtr RedlandNode -> IO Bool
nodeGetLiteralValueIsWellFormedXML node =