libidav/davqlexec.c

changeset 361
b6f2462ee055
parent 354
067ea2315a8a
child 365
f04ab0420512
--- 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;
             }

mercurial