⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ne_props.h

📁 linux subdivision ying gai ke yi le ba
💻 H
字号:
/*    WebDAV Properties manipulation   Copyright (C) 1999-2004, Joe Orton <joe@manyfish.co.uk>   This library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public   License as published by the Free Software Foundation; either   version 2 of the License, or (at your option) any later version.      This library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with this library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,   MA 02111-1307, USA*/#ifndef NE_PROPS_H#define NE_PROPS_H#include "ne_request.h"#include "ne_207.h"BEGIN_NEON_DECLS/* There are two interfaces for fetching properties. The first is * 'ne_simple_propfind', which is relatively simple, and easy to use, * but only lets you fetch FLAT properties, i.e. properties which are * just a string of bytes.  The complex interface is 'ne_propfind_*', * which is complicated, and hard to use, but lets you parse * structured properties, i.e.  properties which have XML content.  *//* The 'ne_simple_propfind' interface. *** * * ne_simple_propfind allows you to fetch a set of properties for a * single resource, or a tree of resources.  You set the operation * going by passing these arguments: * *  - the session which should be used. *  - the URI and the depth of the operation (0, 1, infinite) *  - the names of the properties which you want to fetch *  - a results callback, and the userdata for the callback. * * For each resource found, the results callback is called, passing * you two things along with the userdata you passed in originally: * *   - the URI of the resource (const char *href) *   - the properties results set (const ne_prop_result_set *results) * *//* The name of a WebDAV property. 'nspace' may be NULL. */typedef struct {    const char *nspace, *name;} ne_propname;typedef struct ne_prop_result_set_s ne_prop_result_set;/* Get the value of a given property. Will return NULL if there was an * error fetching this property on this resource.  Call * ne_propset_result to get the response-status if so.  */const char *ne_propset_value(const ne_prop_result_set *set,			      const ne_propname *propname);/* Returns the status structure for fetching the given property on * this resource. This function will return NULL if the server did not * return the property (which is a server error). */const ne_status *ne_propset_status(const ne_prop_result_set *set,				      const ne_propname *propname);/* Returns the private pointer for the given propset. */void *ne_propset_private(const ne_prop_result_set *set);/* Return language string of property (may be NULL). */const char *ne_propset_lang(const ne_prop_result_set *set,			     const ne_propname *pname);/* ne_propset_iterate iterates over a properties result set, * calling the callback for each property in the set. userdata is * passed as the first argument to the callback. value may be NULL, * indicating an error occurred fetching this property: look at  * status for the error in that case. * * If the iterator returns non-zero, ne_propset_iterate will return * immediately with that value. */typedef int (*ne_propset_iterator)(void *userdata,				    const ne_propname *pname,				    const char *value,				    const ne_status *status);/* Iterate over all the properties in 'set', calling 'iterator' * for each, passing 'userdata' as the first argument to callback. *  * Returns: *   whatever value iterator returns. */int ne_propset_iterate(const ne_prop_result_set *set,			ne_propset_iterator iterator, void *userdata);/* Callback for handling the results of fetching properties for a * single resource (named by 'href').  The results are stored in the * result set 'results': use ne_propset_* to examine this object.  */typedef void (*ne_props_result)(void *userdata, const char *href,				 const ne_prop_result_set *results);/* Fetch properties for a resource (if depth == NE_DEPTH_ZERO), * or a tree of resources (if depth == NE_DEPTH_ONE or _INFINITE). * * Names of the properties required must be given in 'props', * or if props is NULL, *all* properties are fetched. * * 'results' is called for each resource in the response, userdata is * passed as the first argument to the callback. It is important to * note that the callback is called as the response is read off the * socket, so don't do anything silly in it (e.g. sleep(100), or call * any functions which use this session). * * Note that if 'depth' is NE_DEPTH_INFINITY, some servers may refuse * the request. * * Returns NE_*.  */int ne_simple_propfind(ne_session *sess, const char *path, int depth,			const ne_propname *props,			ne_props_result results, void *userdata);/* The properties of a resource can be manipulated using ne_proppatch. * A single proppatch request may include any number of individual * "set" and "remove" operations, and is defined to have * "all-or-nothing" semantics, so either all the operations succeed, * or none do. *//* A proppatch operation may either set a property to have a new * value, in which case 'type' must be ne_propset, and 'value' must be * non-NULL; or it can remove a property; in which case 'type' must be * ne_propremove, and 'value' is ignored.  In both cases, 'name' must * be set to the name of the property to alter. */enum ne_proppatch_optype {    ne_propset,    ne_propremove};typedef struct {    const ne_propname *name;    enum ne_proppatch_optype type;    const char *value;} ne_proppatch_operation;/* Execute a set of property operations 'ops' on 'path'. 'ops' is an * array terminated by an operation with a NULL 'name' field. Returns * NE_*. */int ne_proppatch(ne_session *sess, const char *path,		 const ne_proppatch_operation *ops);/* Retrieve property names for the resources at 'path'.  'results' * callback is called for each resource.  Use 'ne_propset_iterate' on * the passed results object to retrieve the list of property names. * */int ne_propnames(ne_session *sess, const char *path, int depth,		 ne_props_result results, void *userdata);/* The complex, you-do-all-the-work, property fetch interface: */struct ne_propfind_handler_s;typedef struct ne_propfind_handler_s ne_propfind_handler;/* Retrieve the 'private' pointer for the current propset for the * given handler, as returned by the ne_props_create_complex callback * installed using 'ne_propfind_set_private'.  If this callback was * not registered, this function will return NULL.  */void *ne_propfind_current_private(ne_propfind_handler *handler);/* Create a PROPFIND handler, for the given resource or set of  * resources. * * Depth must be one of NE_DEPTH_*. */ne_propfind_handler *ne_propfind_create(ne_session *sess, const char *path, int depth);/* Return the XML parser for the given handler (only need if you want * to handle complex properties). */ne_xml_parser *ne_propfind_get_parser(ne_propfind_handler *handler);/* This interface reserves the state integer range 'x' where 0 < x * and x < NE_PROPS_STATE_TOP. */#define NE_PROPS_STATE_TOP (NE_207_STATE_TOP + 100)/* Return the request object for the given handler.  You MUST NOT use * ne_set_request_body_* on this request object.  (this call is only * needed if for instance, you want to add extra headers to the * PROPFIND request).  The result of using the request pointer after * ne_propfind_destroy(handler) has been called is undefined. */ne_request *ne_propfind_get_request(ne_propfind_handler *handler);/* A "complex property" has a value which is structured XML. To handle * complex properties, you must set up and register an XML handler * which will understand the elements which make up such properties. * The handler must be registered with the parser returned by * 'ne_propfind_get_parser'. * * To store the parsed value of the property, a 'private' structure is * allocated in each propset (i.e. one per resource). When parsing the * property value elements, for each new resource encountered in the * response, the 'creator' callback is called to retrieve a 'private' * structure for this resource. * * Whilst in XML element callbacks you will have registered to handle * complex properties, you can use the 'ne_propfind_current_private' * call to retrieve the pointer to this private structure. * * To retrieve this 'private' structure from the propset in the * results callback, simply call 'ne_propset_private'. * */typedef void *(*ne_props_create_complex)(void *userdata,					 const char *href);void ne_propfind_set_private(ne_propfind_handler *handler,			     ne_props_create_complex creator,			     void *userdata);/* Fetch all properties. * * Returns NE_*. */int ne_propfind_allprop(ne_propfind_handler *handler, 			ne_props_result result, void *userdata);/* Fetch all properties with names listed in array 'names', which is * terminated by a property with a NULL name field.  For each resource * encountered, the result callback will be invoked, passing in * 'userdata' as the first argument. * * Returns NE_*. */int ne_propfind_named(ne_propfind_handler *handler, 		      const ne_propname *names,		      ne_props_result result, void *userdata);/* Destroy a propfind handler after use. */void ne_propfind_destroy(ne_propfind_handler *handler);END_NEON_DECLS#endif /* NE_PROPS_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -