MCPcopy Create free account
hub / github.com/apache/httpd / dav_core_insert_prop

Function dav_core_insert_prop

modules/dav/main/std_liveprop.c:59–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57};
58
59static dav_prop_insert dav_core_insert_prop(const dav_resource *resource,
60 int propid, dav_prop_insert what,
61 apr_text_header *phdr)
62{
63 const char *value = NULL;
64 const char *s;
65 apr_pool_t *p = resource->pool;
66 const dav_liveprop_spec *info;
67 long global_ns;
68
69 switch (propid)
70 {
71 case DAV_PROPID_resourcetype:
72 { /* additional type info provided by external modules ? */
73 int i;
74
75 apr_array_header_t *extensions =
76 ap_list_provider_names(p, DAV_RESOURCE_TYPE_GROUP, "0");
77 ap_list_provider_names_t *entry =
78 (ap_list_provider_names_t *)extensions->elts;
79
80 for (i = 0; i < extensions->nelts; i++, entry++) {
81 const dav_resource_type_provider *res_hooks =
82 dav_get_resource_type_providers(entry->provider_name);
83 const char *name = NULL, *uri = NULL;
84
85 if (!res_hooks || !res_hooks->get_resource_type)
86 continue;
87
88 if (!res_hooks->get_resource_type(resource, &name, &uri) &&
89 name) {
90
91 if (!uri || !strcasecmp(uri, "DAV:"))
92 value = apr_pstrcat(p, value ? value : "",
93 "<D:", name, "/>", NULL);
94 else
95 value = apr_pstrcat(p, value ? value : "",
96 "<x:", name,
97 " xmlns:x=\"", uri,
98 "\"/>", NULL);
99 }
100 }
101 }
102 switch (resource->type) {
103 case DAV_RESOURCE_TYPE_VERSION:
104 if (resource->baselined) {
105 value = apr_pstrcat(p, value ? value : "", "<D:baseline/>", NULL);
106 break;
107 }
108 /* fall through */
109 case DAV_RESOURCE_TYPE_REGULAR:
110 case DAV_RESOURCE_TYPE_WORKING:
111 if (resource->collection) {
112 value = apr_pstrcat(p, value ? value : "", "<D:collection/>", NULL);
113 }
114 else {
115 /* ### should we denote lock-null resources? */
116 if (value == NULL) {

Callers 1

Calls 3

ap_list_provider_namesFunction · 0.85
dav_get_liveprop_infoFunction · 0.85

Tested by

no test coverage detected