146#define APR_WANT_STDIO
147#define APR_WANT_BYTEFUNC
166#define DAV_DISABLE_WRITABLE_PROPS 1
168#define DAV_EMPTY_VALUE "\0"
170#define DAV_PROP_ELEMENT "mod_dav-element"
202 "getcontentlanguage",
290 int propid = priv->
propid;
339 int propid,
const char *
name,
367 "DAV:lockdiscovery could not be "
368 "determined due to a problem fetching "
369 "the locks for this resource.",
414 "Content-Language")) !=
NULL) {
434 "<D:supported-live-property D:name=\"",
484 if (*
name->ns ==
'\0')
517 "Could not open the property database.",
557 "INTERNAL DESIGN ERROR: resource must define "
640 && *
name.name ==
'g') {
641 if (
strcmp(
name.name,
"getcontenttype") == 0) {
644 else if (
strcmp(
name.name,
"getcontentlanguage") == 0) {
705 "getcontentlanguage",
714 "<D:status>HTTP/1.1 200 OK</D:status>" DEBUG_CR
837 "INTERNAL DESIGN ERROR: insert_liveprop "
838 "did not insert what was asked for.");
898 "<D:status>HTTP/1.1 200 OK</D:status>" DEBUG_CR
909 "<D:status>HTTP/1.1 404 Not Found</D:status>" DEBUG_CR
990 "Property is read-only.");
994 if (
ctx->is_liveprop) {
998 prop,
ctx->operation,
1005 ctx->is_liveprop = 0;
1023 if (propdb->
db ==
NULL) {
1026 "Attempted to set/remove a property "
1027 "without a valid, open, read/write "
1028 "property database.");
1061 if (
ctx->is_liveprop) {
1063 ctx->prop,
ctx->operation,
1065 &
ctx->rollback->liveprop);
1079 &
ctx->rollback->deadprop)) !=
NULL)
1119 "Could not execute PROPPATCH.",
err);
1132 if (
ctx->is_liveprop) {
1136 ctx->rollback->liveprop);
1155 if (
ctx->is_liveprop) {
1159 ctx->rollback->liveprop);
1162 err = (*
ctx->propdb->db_hooks
1163 ->apply_rollback)(
ctx->propdb->db,
ctx->rollback->deadprop);
APR Standard Headers Support.
request_rec * ap_sub_req_lookup_uri(const char *new_uri, const request_rec *r, ap_filter_t *next_filter)
void ap_destroy_sub_req(request_rec *r)
apr_brigade_flush void * ctx
apr_pool_t const char apr_dbd_t const char ** error
const char apr_ssize_t int flags
#define APR_XML_NS_DAV_ID
#define APR_XML_GET_URI_ITEM(ary, i)
#define HTTP_INTERNAL_SERVER_ERROR
#define DAV_GET_HOOKS_PROPDB(r)
dav_get_props_result dav_get_allprops(dav_propdb *propdb, dav_prop_insert what)
const char * dav_lock_get_activelock(request_rec *r, dav_lock *locks, dav_buffer *pbuf)
#define DAV_ERR_PROP_READONLY
void dav_prop_validate(dav_prop_ctx *ctx)
#define DAV_ERR_PROP_EXEC
void dav_close_propdb(dav_propdb *propdb)
dav_error * dav_lock_query(dav_lockdb *lockdb, const dav_resource *resource, dav_lock **locks)
void dav_get_liveprop_supported(dav_propdb *propdb, const char *ns_uri, const char *propname, apr_text_header *body)
dav_xmlns_info * dav_xmlns_create(apr_pool_t *pool)
void dav_xmlns_generate(dav_xmlns_info *xi, apr_text_header *phdr)
#define DAV_DECLARE_NONSTD(type)
long dav_get_liveprop_ns_index(const char *uri)
dav_get_props_result dav_get_props(dav_propdb *propdb, apr_xml_doc *doc)
void dav_prop_exec(dav_prop_ctx *ctx)
void dav_add_all_liveprop_xmlns(apr_pool_t *p, apr_text_header *phdr)
dav_error * dav_popen_propdb(apr_pool_t *p, request_rec *r, dav_lockdb *lockdb, const dav_resource *resource, int flags, apr_array_header_t *ns_xlate, dav_propdb **p_propdb)
void dav_prop_commit(dav_prop_ctx *ctx)
apr_xml_elem * dav_find_child(const apr_xml_elem *elem, const char *tagname)
dav_error * dav_push_error(apr_pool_t *p, int status, int error_id, const char *desc, dav_error *prev)
#define DAV_ERR_PROP_NO_DATABASE
int dav_run_find_liveprop(const dav_resource *resource, const char *ns_uri, const char *name, const dav_hooks_liveprop **hooks)
#define DAV_PROPDB_DISABLE_LOCKDISCOVERY
#define DAV_DECLARE(type)
void dav_run_insert_all_liveprops(request_rec *r, const dav_resource *resource, dav_prop_insert what, apr_text_header *phdr)
dav_liveprop_elem * dav_get_liveprop_element(const dav_resource *resource)
long dav_get_liveprop_ns_count(void)
const char * dav_xmlns_add_uri(dav_xmlns_info *xi, const char *uri)
void dav_prop_rollback(dav_prop_ctx *ctx)
dav_error * dav_open_propdb(request_rec *r, dav_lockdb *lockdb, const dav_resource *resource, int flags, apr_array_header_t *ns_xlate, dav_propdb **p_propdb)
dav_error * dav_new_error(apr_pool_t *p, int status, int error_id, apr_status_t aprerr, const char *desc)
#define DAV_ERR_PROP_OPENING
struct dav_liveprop_rollback dav_liveprop_rollback
@ DAV_PROP_INSERT_SUPPORTED
#define ap_escape_uri(ppool, path)
const char int apr_pool_t * pool
apr_array_header_t ** result
#define apr_pcalloc(p, size)
apr_int32_t apr_int32_t apr_int32_t err
DAV extension module for Apache 2.0.*.
#define DAV_PROP_OP_DELETE
static const char *const hooks[]
static void dav_find_liveprop(dav_propdb *propdb, apr_xml_elem *elem)
static void dav_do_prop_subreq(dav_propdb *propdb)
static void dav_output_prop_name(apr_pool_t *pool, const dav_prop_name *name, dav_xmlns_info *xi, apr_text_header *phdr)
static int dav_find_liveprop_provider(dav_propdb *propdb, const char *ns_uri, const char *propname, const dav_hooks_liveprop **provider)
static void dav_insert_xmlns(apr_pool_t *p, const char *pre_prefix, long ns, const char *ns_uri, apr_text_header *phdr)
#define DAV_DISABLE_WRITABLE_PROPS
static dav_error * dav_insert_liveprop(dav_propdb *propdb, const apr_xml_elem *elem, dav_prop_insert what, apr_text_header *phdr, dav_prop_insert *inserted)
static dav_error * dav_insert_coreprop(dav_propdb *propdb, int propid, const char *name, dav_prop_insert what, apr_text_header *phdr, dav_prop_insert *inserted)
static int dav_rw_liveprop(dav_propdb *propdb, dav_elem_private *priv)
@ DAV_PROPID_CORE_lockdiscovery
@ DAV_PROPID_CORE_getcontenttype
@ DAV_PROPID_CORE_getcontentlanguage
@ DAV_PROPID_CORE_UNKNOWN
@ DAV_PROPID_CORE_supportedlock
static dav_error * dav_really_open_db(dav_propdb *propdb, int ro)
static const char *const dav_core_props[]
const dav_hooks_liveprop * provider
int(* is_writable)(const dav_resource *resource, int propid)
dav_error *(* patch_validate)(const dav_resource *resource, const apr_xml_elem *elem, int operation, void **context, int *defer_to_dead)
const char *const * namespace_uris
dav_error *(* patch_exec)(const dav_resource *resource, const apr_xml_elem *elem, int operation, void *context, dav_liveprop_rollback **rollback_ctx)
void(* patch_commit)(const dav_resource *resource, int operation, void *context, dav_liveprop_rollback *rollback_ctx)
dav_error *(* patch_rollback)(const dav_resource *resource, int operation, void *context, dav_liveprop_rollback *rollback_ctx)
dav_prop_insert(* insert_prop)(const dav_resource *resource, int propid, dav_prop_insert what, apr_text_header *phdr)
const char *(* get_supportedlock)(const dav_resource *resource)
dav_error *(* store)(dav_db *db, const dav_prop_name *name, const apr_xml_elem *elem, dav_namespace_map *mapping)
dav_error *(* output_value)(dav_db *db, const dav_prop_name *name, dav_xmlns_info *xi, apr_text_header *phdr, int *found)
dav_error *(* get_rollback)(dav_db *db, const dav_prop_name *name, dav_deadprop_rollback **prollback)
void(* close)(dav_db *db)
dav_error *(* first_name)(dav_db *db, dav_prop_name *pname)
dav_error *(* next_name)(dav_db *db, dav_prop_name *pname)
dav_error *(* map_namespaces)(dav_db *db, const apr_array_header_t *namespaces, dav_namespace_map **mapping)
dav_error *(* define_namespaces)(dav_db *db, dav_xmlns_info *xi)
dav_error *(* open)(apr_pool_t *p, const dav_resource *resource, int ro, dav_db **pdb)
dav_error *(* remove)(dav_db *db, const dav_prop_name *name)
const dav_hooks_locks * hooks
const dav_hooks_db * db_hooks
dav_namespace_map * mapping
apr_array_header_t * ns_xlate
const dav_resource * resource
dav_liveprop_rollback * liveprop
dav_deadprop_rollback * deadprop
A structure that represents the current request.
const char * content_type
apr_table_t * headers_out