libidav/resource.c

changeset 605
bbc66c72661a
parent 589
2514559a6367
child 609
dc3d70848c7c
equal deleted inserted replaced
604:c7bedb422d63 605:bbc66c72661a
472 } 472 }
473 // no property update 473 // no property update
474 return property; 474 return property;
475 } 475 }
476 476
477 static DavProperty* createprop(DavSession *sn, const char *ns, const char *name) {
478 DavProperty *property = dav_session_malloc(sn, sizeof(DavProperty));
479 property->name = dav_session_strdup(sn, name);
480 property->value = NULL;
481
482 DavNamespace *namespace = dav_session_malloc(sn, sizeof(DavNamespace));
483 namespace->prefix = NULL;
484 namespace->name = dav_session_strdup(sn, ns);
485
486 property->ns = namespace;
487
488 return property;
489 }
490
477 void dav_set_string_property(DavResource *res, char *name, char *value) { 491 void dav_set_string_property(DavResource *res, char *name, char *value) {
478 char *pns; 492 char *pns;
479 char *pname; 493 char *pname;
480 dav_get_property_namespace_str(res->session->context, name, &pns, &pname); 494 dav_get_property_namespace_str(res->session->context, name, &pns, &pname);
481 dav_set_string_property_ns(res, pns, pname, value); 495 dav_set_string_property_ns(res, pns, pname, value);
483 497
484 void dav_set_string_property_ns(DavResource *res, char *ns, char *name, char *value) { 498 void dav_set_string_property_ns(DavResource *res, char *ns, char *name, char *value) {
485 UcxAllocator *a = res->session->mp->allocator; 499 UcxAllocator *a = res->session->mp->allocator;
486 DavResourceData *data = res->data; 500 DavResourceData *data = res->data;
487 501
488 DavProperty *property = dav_session_malloc( 502 DavProperty *property = createprop(res->session, ns, name);
489 res->session,
490 sizeof(DavProperty));
491 property->name = dav_session_strdup(res->session, name);
492 property->value = dav_text_node(res->session, value); 503 property->value = dav_text_node(res->session, value);
493
494 DavNamespace *namespace = dav_session_malloc(
495 res->session,
496 sizeof(DavNamespace));
497 namespace->prefix = NULL;
498 namespace->name = dav_session_strdup(res->session, ns);
499 property->ns = namespace;
500 504
501 data->set = ucx_list_append_a(a, data->set, property); 505 data->set = ucx_list_append_a(a, data->set, property);
502 } 506 }
503 507
504 void dav_set_property(DavResource *res, char *name, DavXmlNode *value) { 508 void dav_set_property(DavResource *res, char *name, DavXmlNode *value) {
510 514
511 void dav_set_property_ns(DavResource *res, char *ns, char *name, DavXmlNode *value) { 515 void dav_set_property_ns(DavResource *res, char *ns, char *name, DavXmlNode *value) {
512 UcxAllocator *a = res->session->mp->allocator; 516 UcxAllocator *a = res->session->mp->allocator;
513 DavResourceData *data = res->data; 517 DavResourceData *data = res->data;
514 518
515 DavProperty *property = dav_session_malloc( 519 DavProperty *property = createprop(res->session, ns, name);
516 res->session,
517 sizeof(DavProperty));
518 property->name = dav_session_strdup(res->session, name);
519 property->value = value; // TODO: copy node? 520 property->value = value; // TODO: copy node?
520
521 DavNamespace *namespace = dav_session_malloc(
522 res->session,
523 sizeof(DavNamespace));
524 namespace->prefix = NULL;
525 namespace->name = dav_session_strdup(res->session, ns);
526 property->ns = namespace;
527 521
528 data->set = ucx_list_append_a(a, data->set, property); 522 data->set = ucx_list_append_a(a, data->set, property);
529 } 523 }
530 524
531 void dav_remove_property(DavResource *res, char *name) { 525 void dav_remove_property(DavResource *res, char *name) {
537 531
538 void dav_remove_property_ns(DavResource *res, char *ns, char *name) { 532 void dav_remove_property_ns(DavResource *res, char *ns, char *name) {
539 DavResourceData *data = res->data; 533 DavResourceData *data = res->data;
540 UcxAllocator *a = res->session->mp->allocator; 534 UcxAllocator *a = res->session->mp->allocator;
541 535
542 DavProperty *property = dav_session_malloc( 536 DavProperty *property = createprop(res->session, ns, name);
543 res->session,
544 sizeof(DavProperty));
545 property->name = sstrdup_a(a, sstr(name)).ptr;
546 property->value = NULL;
547
548 DavNamespace *namespace = dav_session_malloc(
549 res->session,
550 sizeof(DavNamespace));
551 namespace->prefix = NULL;
552 namespace->name = sstrdup_a(a, sstr(ns)).ptr;
553 property->ns = namespace;
554 537
555 data->remove = ucx_list_append_a(a, data->remove, property); 538 data->remove = ucx_list_append_a(a, data->remove, property);
539 }
540
541 void dav_set_encrypted_property_ns(DavResource *res, char *ns, char *name, DavXmlNode *value) {
542 UcxAllocator *a = res->session->mp->allocator;
543 DavResourceData *data = res->data;
544
545 DavProperty *property = createprop(res->session, ns, name);
546 property->value = value; // TODO: copy node?
547
548 data->crypto_set = ucx_list_append_a(a, data->crypto_set, property);
549 }
550
551 void dav_set_encrypted_string_property_ns(DavResource *res, char *ns, char *name, char *value) {
552 UcxAllocator *a = res->session->mp->allocator;
553 DavResourceData *data = res->data;
554
555 DavProperty *property = createprop(res->session, ns, name);
556 property->value = dav_text_node(res->session, value);
557
558 data->crypto_set = ucx_list_append_a(a, data->crypto_set, property);
559 }
560
561 void dav_remove_encrypted_property_ns(DavResource *res, char *ns, char *name) {
562 DavResourceData *data = res->data;
563 UcxAllocator *a = res->session->mp->allocator;
564
565 DavProperty *property = createprop(res->session, ns, name);
566
567 data->crypto_remove = ucx_list_append_a(a, data->crypto_remove, property);
556 } 568 }
557 569
558 static int compare_propname(const void *a, const void *b) { 570 static int compare_propname(const void *a, const void *b) {
559 const DavPropName *p1 = a; 571 const DavPropName *p1 = a;
560 const DavPropName *p2 = b; 572 const DavPropName *p2 = b;

mercurial