diff -r 5da2cf15eb44 -r b6f2462ee055 libidav/davqlexec.c --- a/libidav/davqlexec.c Mon Dec 18 16:24:32 2017 +0100 +++ b/libidav/davqlexec.c Mon Jan 01 19:53:36 2018 +0100 @@ -279,7 +279,7 @@ field_result.length)); } } else if(field_result.type == 2) { - // TODO: + node = dav_copy_node(field_result.data.node); } else { // unknown type // TODO: error @@ -1072,10 +1072,17 @@ } case DAVQL_CMD_PROP_IDENTIFIER: { //printf("property %s:%s\n", cmd.data.property.ns, cmd.data.property.name); - char *value = dav_get_string_property_ns(res, cmd.data.property.ns, cmd.data.property.name); - obj.type = 1; - obj.length = value ? strlen(value) : 0; - obj.data.string = value; + //char *value = dav_get_string_property_ns(res, cmd.data.property.ns, cmd.data.property.name); + DavXmlNode *value = dav_get_property_ns(res, cmd.data.property.ns, cmd.data.property.name); + if(dav_xml_isstring(value)) { + obj.type = 1; + obj.length = (uint32_t)value->contentlength; + obj.data.string = value->content; + } else { + obj.type = 2; + obj.length = 0; + obj.data.node = value; + } DAVQL_PUSH(obj); break; }