亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mod_dav.h

?? Apache_2.0.59-Openssl_0.9 配置tomcat. Apache_2.0.59-Openssl_0.9 配置tomcat.
?? H
?? 第 1 頁 / 共 5 頁
字號:
} dav_if_state_list;

typedef struct dav_if_header
{
    const char *uri;
    apr_size_t uri_len;
    struct dav_if_state_list *state;
    struct dav_if_header *next;

    int dummy_header;   /* used internally by the lock/etag validation */
} dav_if_header;

typedef struct dav_locktoken_list 
{
    dav_locktoken *locktoken;
    struct dav_locktoken_list *next;
} dav_locktoken_list;

DAV_DECLARE(dav_error *) dav_get_locktoken_list(request_rec *r,
                                                dav_locktoken_list **ltl);


/* --------------------------------------------------------------------
**
** LIVE PROPERTY HANDLING
*/

/* opaque type for PROPPATCH rollback information */
typedef struct dav_liveprop_rollback dav_liveprop_rollback;

struct dav_hooks_liveprop
{
    /*
    ** Insert property information into a text block. The property to
    ** insert is identified by the propid value. The information to insert
    ** is identified by the "what" argument, as follows:
    **   DAV_PROP_INSERT_NAME
    **      property name, as an empty XML element
    **   DAV_PROP_INSERT_VALUE
    **      property name/value, as an XML element
    **   DAV_PROP_INSERT_SUPPORTED
    **      if the property is defined on the resource, then
    **      a DAV:supported-live-property element, as defined
    **      by the DeltaV extensions to RFC2518.
    **                      
    ** Providers should return DAV_PROP_INSERT_NOTDEF if the property is
    ** known and not defined for this resource, so should be handled as a
    ** dead property. If a provider recognizes, but does not support, a
    ** property, and does not want it handled as a dead property, it should
    ** return DAV_PROP_INSERT_NOTSUPP.
    **
    ** Returns one of DAV_PROP_INSERT_* based on what happened.
    **
    ** ### we may need more context... ie. the lock database
    */
    dav_prop_insert (*insert_prop)(const dav_resource *resource,
                                   int propid, dav_prop_insert what,
                                   apr_text_header *phdr);

    /*
    ** Determine whether a given property is writable.
    **
    ** ### we may want a different semantic. i.e. maybe it should be
    ** ### "can we write <value> into this property?"
    **
    ** Returns 1 if the live property can be written, 0 if read-only.
    */
    int (*is_writable)(const dav_resource *resource, int propid);

    /*
    ** This member defines the set of namespace URIs that the provider
    ** uses for its properties. When insert_all is called, it will be
    ** passed a list of integers that map from indices into this list
    ** to namespace IDs for output generation.
    **
    ** The last entry in this list should be a NULL value (sentinel).
    */
    const char * const * namespace_uris;

    /*
    ** ### this is not the final design. we want an open-ended way for
    ** ### liveprop providers to attach *new* properties. To this end,
    ** ### we'll have a "give me a list of the props you define", a way
    ** ### to check for a prop's existence, a way to validate a set/remove
    ** ### of a prop, and a way to execute/commit/rollback that change.
    */

    /*
    ** Validate that the live property can be assigned a value, and that
    ** the provided value is valid.
    **
    ** elem will point to the XML element that names the property. For
    ** example:
    **     <lp1:executable>T</lp1:executable>
    **
    ** The provider can access the cdata fields and the child elements
    ** to extract the relevant pieces.
    **
    ** operation is one of DAV_PROP_OP_SET or _DELETE.
    **
    ** The provider may return a value in *context which will be passed
    ** to each of the exec/commit/rollback functions. For example, this
    ** may contain an internal value which has been processed from the
    ** input element.
    **
    ** The provider must set defer_to_dead to true (non-zero) or false.
    ** If true, then the set/remove is deferred to the dead property
    ** database. Note: it will be set to zero on entry.
    */
    dav_error * (*patch_validate)(const dav_resource *resource,
                                  const apr_xml_elem *elem,
                                  int operation,
                                  void **context,
                                  int *defer_to_dead);

    /* ### doc... */
    dav_error * (*patch_exec)(const dav_resource *resource,
                              const apr_xml_elem *elem,
                              int operation,
                              void *context,
                              dav_liveprop_rollback **rollback_ctx);

    /* ### doc... */
    void (*patch_commit)(const dav_resource *resource,
                         int operation,
                         void *context,
                         dav_liveprop_rollback *rollback_ctx);

    /* ### doc... */
    dav_error * (*patch_rollback)(const dav_resource *resource,
                                  int operation,
                                  void *context,
                                  dav_liveprop_rollback *rollback_ctx);

    /*
    ** If a provider needs a context to associate with this hooks structure,
    ** then this field may be used. In most cases, it will just be NULL.
    */
    void *ctx;
};

/*
** dav_liveprop_spec: specify a live property
**
** This structure is used as a standard way to determine if a particular
** property is a live property. Its use is not part of the mandated liveprop
** interface, but can be used by liveprop providers in conjuction with the
** utility routines below.
**
** spec->name == NULL is the defined end-sentinel for a list of specs.
*/
typedef struct {
    int ns;             /* provider-local namespace index */
    const char *name;   /* name of the property */

    int propid;         /* provider-local property ID */

    int is_writable;    /* is the property writable? */

} dav_liveprop_spec;

/*
** dav_liveprop_group: specify a group of liveprops
**
** This structure specifies a group of live properties, their namespaces,
** and how to handle them.
*/
typedef struct {
    const dav_liveprop_spec *specs;
    const char * const *namespace_uris;
    const dav_hooks_liveprop *hooks;

} dav_liveprop_group;

/* ### docco */
DAV_DECLARE(int) dav_do_find_liveprop(const char *ns_uri, const char *name,
                                      const dav_liveprop_group *group,
                                      const dav_hooks_liveprop **hooks);

/* ### docco */
DAV_DECLARE(int) dav_get_liveprop_info(int propid,
                                       const dav_liveprop_group *group,
                                       const dav_liveprop_spec **info);

/* ### docco */
DAV_DECLARE(void) dav_register_liveprop_group(apr_pool_t *pool, 
                                              const dav_liveprop_group *group);

/* ### docco */
DAV_DECLARE(int) dav_get_liveprop_ns_index(const char *uri);

/* ### docco */
DAV_DECLARE(int) dav_get_liveprop_ns_count(void);

/* ### docco */
DAV_DECLARE(void) dav_add_all_liveprop_xmlns(apr_pool_t *p,
                                             apr_text_header *phdr);

/*
** The following three functions are part of mod_dav's internal handling
** for the core WebDAV properties. They are not part of mod_dav's API.
*/
DAV_DECLARE_NONSTD(int) dav_core_find_liveprop(
    const dav_resource *resource,
    const char *ns_uri,
    const char *name,
    const dav_hooks_liveprop **hooks);
DAV_DECLARE_NONSTD(void) dav_core_insert_all_liveprops(
    request_rec *r,
    const dav_resource *resource,
    dav_prop_insert what,
    apr_text_header *phdr);
DAV_DECLARE_NONSTD(void) dav_core_register_uris(apr_pool_t *p);


/*
** Standard WebDAV Property Identifiers
**
** A live property provider does not need to use these; they are simply
** provided for convenience.
**
** Property identifiers need to be unique within a given provider, but not
** *across* providers (note: this uniqueness constraint was different in
** older versions of mod_dav).
**
** The identifiers start at 20000 to make it easier for providers to avoid
** conflicts with the standard properties. The properties are arranged
** alphabetically, and may be reordered from time to time (as properties
** are introduced).
**
** NOTE: there is no problem with reordering (e.g. binary compat) since the
** identifiers are only used within a given provider, which would pick up
** the entire set of changes upon a recompile.
*/
enum {
    DAV_PROPID_BEGIN = 20000,

    /* Standard WebDAV properties (RFC 2518) */
    DAV_PROPID_creationdate,
    DAV_PROPID_displayname,
    DAV_PROPID_getcontentlanguage,
    DAV_PROPID_getcontentlength,
    DAV_PROPID_getcontenttype,
    DAV_PROPID_getetag,
    DAV_PROPID_getlastmodified,
    DAV_PROPID_lockdiscovery,
    DAV_PROPID_resourcetype,
    DAV_PROPID_source,
    DAV_PROPID_supportedlock,

    /* DeltaV properties (from the I-D (#14)) */
    DAV_PROPID_activity_checkout_set,
    DAV_PROPID_activity_set,
    DAV_PROPID_activity_version_set,
    DAV_PROPID_auto_merge_set,
    DAV_PROPID_auto_version,
    DAV_PROPID_baseline_collection,
    DAV_PROPID_baseline_controlled_collection,
    DAV_PROPID_baseline_controlled_collection_set,
    DAV_PROPID_checked_in,
    DAV_PROPID_checked_out,
    DAV_PROPID_checkin_fork,
    DAV_PROPID_checkout_fork,
    DAV_PROPID_checkout_set,
    DAV_PROPID_comment,
    DAV_PROPID_creator_displayname,
    DAV_PROPID_current_activity_set,
    DAV_PROPID_current_workspace_set,
    DAV_PROPID_default_variant,
    DAV_PROPID_eclipsed_set,
    DAV_PROPID_label_name_set,
    DAV_PROPID_merge_set,
    DAV_PROPID_precursor_set,
    DAV_PROPID_predecessor_set,
    DAV_PROPID_root_version,
    DAV_PROPID_subactivity_set,
    DAV_PROPID_subbaseline_set,
    DAV_PROPID_successor_set,
    DAV_PROPID_supported_method_set,
    DAV_PROPID_supported_live_property_set,
    DAV_PROPID_supported_report_set,
    DAV_PROPID_unreserved,
    DAV_PROPID_variant_set,
    DAV_PROPID_version_controlled_binding_set,
    DAV_PROPID_version_controlled_configuration,
    DAV_PROPID_version_history,
    DAV_PROPID_version_name,
    DAV_PROPID_workspace,
    DAV_PROPID_workspace_checkout_set,

    DAV_PROPID_END
};

/*
** Property Identifier Registration
**
** At the moment, mod_dav requires live property providers to ensure that
** each property returned has a unique value. For now, this is done through
** central registration (there are no known providers other than the default,
** so this remains manageable).
**
** WARNING: the TEST ranges should never be "shipped".
*/
#define DAV_PROPID_CORE         10000   /* ..10099. defined by mod_dav */
#define DAV_PROPID_FS           10100   /* ..10299.
                                           mod_dav filesystem provider. */
#define DAV_PROPID_TEST1        10300   /* ..10399 */
#define DAV_PROPID_TEST2        10400   /* ..10499 */
#define DAV_PROPID_TEST3        10500   /* ..10599 */
/* Next: 10600 */


/* --------------------------------------------------------------------
**
** DATABASE FUNCTIONS
*/

typedef struct dav_db dav_db;
typedef struct dav_namespace_map dav_namespace_map;
typedef struct dav_deadprop_rollback dav_deadprop_rollback;

typedef struct {
    const char *ns;     /* "" signals "no namespace" */
    const char *name;
} dav_prop_name;

/* hook functions to enable pluggable databases */
struct dav_hooks_propdb
{
    dav_error * (*open)(apr_pool_t *p, const dav_resource *resource, int ro,
                        dav_db **pdb);
    void (*close)(dav_db *db);

    /*
    ** In bulk, define any namespaces that the values and their name
    ** elements may need.
    **
    ** Note: sometimes mod_dav will defer calling this until output_value
    ** returns found==1. If the output process needs the dav_xmlns_info
    ** filled for its work, then it will need to fill it on demand rather
    ** than depending upon this hook to fill in the structure.
    **
    ** Note: this will *always* be called during an output sequence. Thus,
    ** the provider may rely solely on using this to fill the xmlns info.
    */
    dav_error * (*define_namespaces)(dav_db *db, dav_xmlns_info *xi);

    /*
    ** Output the value from the database (i.e. add an element name and

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品久久免费看蜜臀剧情介绍| 成人国产精品免费| 久久国产剧场电影| 国产精品亚洲一区二区三区妖精| 成人av网站在线观看免费| 色综合色狠狠天天综合色| 4hu四虎永久在线影院成人| 国产精品三级久久久久三级| 日韩va亚洲va欧美va久久| 亚洲国产综合色| 国产精品18久久久久久久久| 欧洲一区二区三区免费视频| 久久久天堂av| 午夜精品久久一牛影视| av高清不卡在线| 欧美v亚洲v综合ⅴ国产v| 国产精品久久久久一区二区三区共 | 在线观看日韩一区| 欧美精品一区二区三区蜜桃| 亚洲福利视频一区二区| 99久久久国产精品免费蜜臀| 久久老女人爱爱| 日韩精品一级中文字幕精品视频免费观看 | 久久9热精品视频| 在线观看日韩一区| 久久久国产综合精品女国产盗摄| 亚洲五月六月丁香激情| 91尤物视频在线观看| 久久午夜免费电影| 青椒成人免费视频| 精品视频免费看| 亚洲自拍偷拍欧美| 色综合视频一区二区三区高清| 久久老女人爱爱| 精品一区二区三区在线观看国产 | 奇米精品一区二区三区四区| 91在线无精精品入口| 欧美国产日产图区| 久久国产婷婷国产香蕉| 日韩一区二区在线免费观看| 久久精品国产精品亚洲红杏| 精品国产乱子伦一区| 国产精华液一区二区三区| 国产精品久久久久久一区二区三区| 国产成人在线免费| 亚洲欧美另类小说视频| 欧美日韩亚洲丝袜制服| 奇米精品一区二区三区四区| 久久久久久久久久久黄色| 成人免费va视频| 亚洲mv在线观看| 日韩精品中午字幕| 成人激情黄色小说| 亚洲成人在线观看视频| 精品国一区二区三区| 成年人午夜久久久| 午夜精品久久久久久久99樱桃| 精品久久久久久久久久久院品网| 成人av午夜电影| 日本网站在线观看一区二区三区| 久久精品亚洲精品国产欧美| 日本精品视频一区二区三区| 精彩视频一区二区三区| 亚洲视频精选在线| 精品久久国产老人久久综合| 99久久精品免费| 蜜桃av一区二区| 亚洲精品免费在线观看| 2014亚洲片线观看视频免费| 在线精品视频免费观看| 国产精品2024| 日日夜夜精品免费视频| 一区在线观看免费| 精品剧情v国产在线观看在线| 色综合久久六月婷婷中文字幕| 老司机免费视频一区二区三区| 中文字幕人成不卡一区| 久久中文娱乐网| 欧美日韩一卡二卡| www.日韩在线| 国产一区二区三区日韩| 婷婷久久综合九色综合伊人色| 国产精品护士白丝一区av| 精品少妇一区二区三区在线视频| 色天天综合色天天久久| 国产白丝精品91爽爽久久| 美女脱光内衣内裤视频久久网站| 亚洲激情网站免费观看| 国产丝袜欧美中文另类| 欧美xxx久久| 在线不卡一区二区| 色av成人天堂桃色av| 成人av免费在线| 国产成人精品一区二区三区网站观看 | 中文字幕在线不卡| 337p日本欧洲亚洲大胆精品| 91精品国产综合久久久久久久久久| 91天堂素人约啪| 高潮精品一区videoshd| 国产精品白丝jk白祙喷水网站| 精品一区二区影视| 久草这里只有精品视频| 久久99深爱久久99精品| 日本大胆欧美人术艺术动态| 亚州成人在线电影| 午夜成人在线视频| 日韩国产在线一| 日日骚欧美日韩| 免费成人在线影院| 久久精品免费观看| 久久成人精品无人区| 狠狠色综合播放一区二区| 久久99热国产| 国产精品一二三| jlzzjlzz亚洲女人18| 99精品国产视频| 日本韩国欧美三级| 欧美日韩免费在线视频| 91精品国产综合久久精品性色| 欧美美女喷水视频| 欧美成人国产一区二区| 精品成人免费观看| 国产精品久久久久久户外露出 | 精品女同一区二区| 久久亚洲捆绑美女| 国产精品第五页| 亚洲日本乱码在线观看| 亚洲日本在线视频观看| 亚洲电影你懂得| 久久福利视频一区二区| 国产美女视频一区| 97成人超碰视| 8v天堂国产在线一区二区| 26uuu精品一区二区三区四区在线| 国产日韩欧美精品电影三级在线| 国产精品久久久爽爽爽麻豆色哟哟| 中文字幕日本不卡| 天使萌一区二区三区免费观看| 久久精品国产99| 99在线精品一区二区三区| 欧美日韩精品欧美日韩精品| 欧美精品一区二区三区很污很色的| 国产欧美综合在线| 亚洲第一会所有码转帖| 国产一区二区视频在线播放| 91蜜桃免费观看视频| 日韩片之四级片| 国产精品美女一区二区三区| 偷拍与自拍一区| 懂色av中文字幕一区二区三区| 欧美视频日韩视频| 久久久久亚洲蜜桃| 亚洲不卡在线观看| 国产成人av网站| 欧美日韩免费不卡视频一区二区三区| 日韩精品一区二区三区中文精品| 中文字幕 久热精品 视频在线 | 欧美一区二区日韩| 亚洲欧洲av在线| 国产一区二区三区免费在线观看| 91黄色免费观看| 久久精品男人天堂av| 日韩精品久久理论片| 成年人网站91| 26uuu亚洲婷婷狠狠天堂| 亚洲国产另类av| 97久久超碰国产精品| 久久综合狠狠综合久久激情| 午夜精品一区在线观看| 高清视频一区二区| 欧美精品一区二区三区在线播放| 亚洲国产成人av网| 91网站在线播放| 国产精品免费av| 国产精品自拍网站| 日韩一级片网址| 午夜电影网一区| 欧美这里有精品| 亚洲素人一区二区| 本田岬高潮一区二区三区| 国产欧美日韩精品一区| 精品在线你懂的| 51午夜精品国产| 亚洲成年人影院| 欧美日韩高清一区二区| 亚洲韩国一区二区三区| 在线亚洲一区观看| 亚洲激情图片qvod| 日本高清无吗v一区| 亚洲精品国产a久久久久久| 91亚洲国产成人精品一区二三| 国产免费观看久久| hitomi一区二区三区精品| 亚洲欧洲精品天堂一级| www.欧美日韩| 亚洲欧美偷拍另类a∨色屁股| 99精品久久只有精品| 亚洲欧美一区二区三区国产精品| 91麻豆免费看片| 伊人色综合久久天天|