| 538 | } |
| 539 | |
| 540 | DAV_DECLARE(dav_error *)dav_popen_propdb(apr_pool_t *p, |
| 541 | request_rec *r, dav_lockdb *lockdb, |
| 542 | const dav_resource *resource, |
| 543 | int flags, |
| 544 | apr_array_header_t * ns_xlate, |
| 545 | dav_propdb **p_propdb) |
| 546 | { |
| 547 | dav_propdb *propdb = NULL; |
| 548 | |
| 549 | propdb = apr_pcalloc(p, sizeof(*propdb)); |
| 550 | propdb->p = p; |
| 551 | |
| 552 | *p_propdb = NULL; |
| 553 | |
| 554 | #if DAV_DEBUG |
| 555 | if (resource->uri == NULL) { |
| 556 | return dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0, |
| 557 | "INTERNAL DESIGN ERROR: resource must define " |
| 558 | "its URI."); |
| 559 | } |
| 560 | #endif |
| 561 | |
| 562 | propdb->r = r; |
| 563 | propdb->resource = resource; |
| 564 | propdb->ns_xlate = ns_xlate; |
| 565 | |
| 566 | propdb->db_hooks = DAV_GET_HOOKS_PROPDB(r); |
| 567 | |
| 568 | propdb->lockdb = lockdb; |
| 569 | |
| 570 | propdb->flags = flags; |
| 571 | |
| 572 | /* always defer actual open, to avoid expense of accessing db |
| 573 | * when only live properties are involved |
| 574 | */ |
| 575 | propdb->deferred = 1; |
| 576 | |
| 577 | /* ### what to do about closing the propdb on server failure? */ |
| 578 | |
| 579 | *p_propdb = propdb; |
| 580 | return NULL; |
| 581 | } |
| 582 | |
| 583 | DAV_DECLARE(void) dav_close_propdb(dav_propdb *propdb) |
| 584 | { |
no test coverage detected