diff options
Diffstat (limited to 'backend/impress/iksemel.h')
-rw-r--r-- | backend/impress/iksemel.h | 402 |
1 files changed, 0 insertions, 402 deletions
diff --git a/backend/impress/iksemel.h b/backend/impress/iksemel.h deleted file mode 100644 index 66c87d61..00000000 --- a/backend/impress/iksemel.h +++ /dev/null @@ -1,402 +0,0 @@ -/* iksemel (XML parser for Jabber) -** Copyright (C) 2000-2004 Gurer Ozen <[email protected]> -** This code is free software; you can redistribute it and/or -** modify it under the terms of GNU Lesser General Public License. -*/ - -#ifndef IKSEMEL_H -#define IKSEMEL_H 1 - -#ifdef __cplusplus -#include <cstddef> /* size_t for C++ */ -extern "C" { -#else -#include <stddef.h> /* size_t for C */ -#endif - -/***** object stack *****/ - -struct ikstack_struct; -typedef struct ikstack_struct ikstack; - -ikstack *iks_stack_new (size_t meta_chunk, size_t data_chunk); -void *iks_stack_alloc (ikstack *s, size_t size); -char *iks_stack_strdup (ikstack *s, const char *src, size_t len); -char *iks_stack_strcat (ikstack *s, char *old, size_t old_len, const char *src, size_t src_len); -void iks_stack_stat (ikstack *s, size_t *allocated, size_t *used); -void iks_stack_delete (ikstack *s); - -/***** utilities *****/ - -void *iks_malloc (size_t size); -void iks_free (void *ptr); -void iks_set_mem_funcs (void *(*malloc_func)(size_t size), void (*free_func)(void *ptr)); - -char *iks_strdup (const char *src); -char *iks_strcat (char *dest, const char *src); -int iks_strcmp (const char *a, const char *b); -int iks_strcasecmp (const char *a, const char *b); -int iks_strncmp (const char *a, const char *b, size_t n); -int iks_strncasecmp (const char *a, const char *b, size_t n); -size_t iks_strlen (const char *src); -char *iks_escape (ikstack *s, char *src, size_t len); -char *iks_unescape (ikstack *s, char *src, size_t len); - -/***** dom tree *****/ - -enum ikstype { - IKS_NONE = 0, - IKS_TAG, - IKS_ATTRIBUTE, - IKS_CDATA -}; - -struct iks_struct; -typedef struct iks_struct iks; - -iks *iks_new (const char *name); -iks *iks_new_within (const char *name, ikstack *s); -iks *iks_insert (iks *x, const char *name); -iks *iks_insert_cdata (iks *x, const char *data, size_t len); -iks *iks_insert_attrib (iks *x, const char *name, const char *value); -iks *iks_insert_node (iks *x, iks *y); -void iks_hide (iks *x); -void iks_delete (iks *x); -iks *iks_next (iks *x); -iks *iks_next_tag (iks *x); -iks *iks_prev (iks *x); -iks *iks_prev_tag (iks *x); -iks *iks_parent (iks *x); -iks *iks_root (iks *x); -iks *iks_child (iks *x); -iks *iks_first_tag (iks *x); -iks *iks_attrib (iks *x); -iks *iks_find (iks *x, const char *name); -char *iks_find_cdata (iks *x, const char *name); -char *iks_find_attrib (iks *x, const char *name); -iks *iks_find_with_attrib (iks *x, const char *tagname, const char *attrname, const char *value); -ikstack *iks_stack (iks *x); -enum ikstype iks_type (iks *x); -char *iks_name (iks *x); -char *iks_cdata (iks *x); -size_t iks_cdata_size (iks *x); -int iks_has_children (iks *x); -int iks_has_attribs (iks *x); -char *iks_string (ikstack *s, iks *x); -iks *iks_copy (iks *x); -iks *iks_copy_within (iks *x, ikstack *s); - -/***** sax parser *****/ - -enum ikserror { - IKS_OK = 0, - IKS_NOMEM, - IKS_BADXML, - IKS_HOOK -}; - -enum ikstagtype { - IKS_OPEN, - IKS_CLOSE, - IKS_SINGLE -}; - -typedef int (iksTagHook)(void *user_data, char *name, char **atts, int type); -typedef int (iksCDataHook)(void *user_data, char *data, size_t len); -typedef void (iksDeleteHook)(void *user_data); - -struct iksparser_struct; -typedef struct iksparser_struct iksparser; - -iksparser *iks_sax_new (void *user_data, iksTagHook *tagHook, iksCDataHook *cdataHook); -iksparser *iks_sax_extend (ikstack *s, void *user_data, iksTagHook *tagHook, iksCDataHook *cdataHook, iksDeleteHook *deleteHook); -ikstack *iks_parser_stack (iksparser *prs); -void *iks_user_data (iksparser *prs); -unsigned long iks_nr_bytes (iksparser *prs); -unsigned long iks_nr_lines (iksparser *prs); -int iks_parse (iksparser *prs, const char *data, size_t len, int finish); -void iks_parser_reset (iksparser *prs); -void iks_parser_delete (iksparser *prs); - -/***** dom parser *****/ - -enum iksfileerror { - IKS_FILE_NOFILE = 4, - IKS_FILE_NOACCESS, - IKS_FILE_RWERR -}; - -iksparser *iks_dom_new (iks **iksptr); -void iks_set_size_hint (iksparser *prs, size_t approx_size); -iks *iks_tree (const char *xml_str, size_t len, int *err); -int iks_load (const char *fname, iks **xptr); -int iks_save (const char *fname, iks *x); - -/***** transport layer *****/ - -typedef void (iksTClose)(void *socket); -typedef int (iksTConnect)(iksparser *prs, void **socketptr, const char *server, int port); -typedef int (iksTSend)(void *socket, const char *data, size_t len); -typedef int (iksTRecv)(void *socket, char *buffer, size_t buf_len, int timeout); -typedef int (iksTConnectFD)(iksparser *prs, void **socketptr, void *fd); -typedef void *(iksTGetFD)(void *socket); - -enum iksasyncevents { - IKS_ASYNC_RESOLVED, - IKS_ASYNC_CONNECTED, - IKS_ASYNC_WRITE, - IKS_ASYNC_WRITTEN, - IKS_ASYNC_READ, - IKS_ASYNC_CLOSED, - IKS_ASYNC_ERROR -}; - -typedef int (iksAsyncNotify)(void *user_data, int event, void *event_data); -typedef int (iksTConnectAsync)(iksparser *prs, void **socketptr, const char *server, int port, void *notify_data, iksAsyncNotify *notify_func); - -typedef struct ikstransport_struct { - /* basic api, connect can be NULL if one of the other connect funcs are used */ - iksTConnect *connect; - iksTSend *send; - iksTRecv *recv; - iksTClose *close; - /* optional fd api */ - iksTConnectFD *connect_fd; - iksTGetFD *get_fd; - /* optional async api */ - iksTConnectAsync *connect_async; -} ikstransport; - -extern ikstransport iks_default_transport; - -/***** stream parser *****/ - -enum iksneterror { - IKS_NET_NODNS = 4, - IKS_NET_NOSOCK, - IKS_NET_NOCONN, - IKS_NET_RWERR, - IKS_NET_NOTSUPP, - IKS_NET_TLSFAIL -}; - -enum iksnodetype { - IKS_NODE_START, - IKS_NODE_NORMAL, - IKS_NODE_ERROR, - IKS_NODE_STOP -}; - -enum ikssasltype { - IKS_SASL_PLAIN, - IKS_SASL_DIGEST_MD5 -}; - -#define IKS_JABBER_PORT 5222 - -typedef int (iksStreamHook)(void *user_data, int type, iks *node); -typedef void (iksLogHook)(void *user_data, const char *data, size_t size, int is_incoming); - -iksparser *iks_stream_new (char *name_space, void *user_data, iksStreamHook *streamHook); -void *iks_stream_user_data (iksparser *prs); -void iks_set_log_hook (iksparser *prs, iksLogHook *logHook); -int iks_connect_tcp (iksparser *prs, const char *server, int port); -int iks_connect_fd (iksparser *prs, int fd); -int iks_connect_via (iksparser *prs, const char *server, int port, const char *server_name); -int iks_connect_with (iksparser *prs, const char *server, int port, const char *server_name, ikstransport *trans); -int iks_connect_async (iksparser *prs, const char *server, int port, void *notify_data, iksAsyncNotify *notify_func); -int iks_connect_async_with (iksparser *prs, const char *server, int port, const char *server_name, ikstransport *trans, void *notify_data, iksAsyncNotify *notify_func); -int iks_fd (iksparser *prs); -int iks_recv (iksparser *prs, int timeout); -int iks_send_header (iksparser *prs, const char *to); -int iks_send (iksparser *prs, iks *x); -int iks_send_raw (iksparser *prs, const char *xmlstr); -void iks_disconnect (iksparser *prs); -int iks_has_tls (void); -int iks_is_secure (iksparser *prs); -int iks_start_tls (iksparser *prs); -int iks_start_sasl (iksparser *prs, enum ikssasltype type, char *username, char *pass); - -/***** jabber *****/ - -#define IKS_NS_CLIENT "jabber:client" -#define IKS_NS_SERVER "jabber:server" -#define IKS_NS_AUTH "jabber:iq:auth" -#define IKS_NS_AUTH_0K "jabber:iq:auth:0k" -#define IKS_NS_REGISTER "jabber:iq:register" -#define IKS_NS_ROSTER "jabber:iq:roster" -#define IKS_NS_XROSTER "jabber:x:roster" -#define IKS_NS_OFFLINE "jabber:x:offline" -#define IKS_NS_AGENT "jabber:iq:agent" -#define IKS_NS_AGENTS "jabber:iq:agents" -#define IKS_NS_BROWSE "jabber:iq:browse" -#define IKS_NS_CONFERENCE "jabber:iq:conference" -#define IKS_NS_DELAY "jabber:x:delay" -#define IKS_NS_VERSION "jabber:iq:version" -#define IKS_NS_TIME "jabber:iq:time" -#define IKS_NS_VCARD "vcard-temp" -#define IKS_NS_PRIVATE "jabber:iq:private" -#define IKS_NS_SEARCH "jabber:iq:search" -#define IKS_NS_OOB "jabber:iq:oob" -#define IKS_NS_XOOB "jabber:x:oob" -#define IKS_NS_ADMIN "jabber:iq:admin" -#define IKS_NS_FILTER "jabber:iq:filter" -#define IKS_NS_GATEWAY "jabber:iq:gateway" -#define IKS_NS_LAST "jabber:iq:last" -#define IKS_NS_SIGNED "jabber:x:signed" -#define IKS_NS_ENCRYPTED "jabber:x:encrypted" -#define IKS_NS_ENVELOPE "jabber:x:envelope" -#define IKS_NS_EVENT "jabber:x:event" -#define IKS_NS_EXPIRE "jabber:x:expire" -#define IKS_NS_XHTML "http://www.w3.org/1999/xhtml" -#define IKS_NS_XMPP_SASL "urn:ietf:params:xml:ns:xmpp-sasl" -#define IKS_NS_XMPP_BIND "urn:ietf:params:xml:ns:xmpp-bind" -#define IKS_NS_XMPP_SESSION "urn:ietf:params:xml:ns:xmpp-session" - -#define IKS_ID_USER 1 -#define IKS_ID_SERVER 2 -#define IKS_ID_RESOURCE 4 -#define IKS_ID_PARTIAL IKS_ID_USER | IKS_ID_SERVER -#define IKS_ID_FULL IKS_ID_USER | IKS_ID_SERVER | IKS_ID_RESOURCE - -#define IKS_STREAM_STARTTLS 1 -#define IKS_STREAM_SESSION 2 -#define IKS_STREAM_BIND 4 -#define IKS_STREAM_SASL_PLAIN 8 -#define IKS_STREAM_SASL_MD5 16 - -typedef struct iksid_struct { - char *user; - char *server; - char *resource; - char *partial; - char *full; -} iksid; - -iksid *iks_id_new (ikstack *s, const char *jid); -int iks_id_cmp (iksid *a, iksid *b, int parts); - -enum ikspaktype { - IKS_PAK_NONE = 0, - IKS_PAK_MESSAGE, - IKS_PAK_PRESENCE, - IKS_PAK_IQ, - IKS_PAK_S10N -}; - -enum iksubtype { - IKS_TYPE_NONE = 0, - IKS_TYPE_ERROR, - - IKS_TYPE_CHAT, - IKS_TYPE_GROUPCHAT, - IKS_TYPE_HEADLINE, - - IKS_TYPE_GET, - IKS_TYPE_SET, - IKS_TYPE_RESULT, - - IKS_TYPE_SUBSCRIBE, - IKS_TYPE_SUBSCRIBED, - IKS_TYPE_UNSUBSCRIBE, - IKS_TYPE_UNSUBSCRIBED, - IKS_TYPE_PROBE, - IKS_TYPE_AVAILABLE, - IKS_TYPE_UNAVAILABLE -}; - -enum ikshowtype { - IKS_SHOW_UNAVAILABLE = 0, - IKS_SHOW_AVAILABLE, - IKS_SHOW_CHAT, - IKS_SHOW_AWAY, - IKS_SHOW_XA, - IKS_SHOW_DND -}; - -typedef struct ikspak_struct { - iks *x; - iksid *from; - iks *query; - char *ns; - char *id; - enum ikspaktype type; - enum iksubtype subtype; - enum ikshowtype show; -} ikspak; - -ikspak *iks_packet (iks *x); - -iks *iks_make_auth (iksid *id, const char *pass, const char *sid); -iks *iks_make_msg (enum iksubtype type, const char *to, const char *body); -iks *iks_make_s10n (enum iksubtype type, const char *to, const char *msg); -iks *iks_make_pres (enum ikshowtype show, const char *status); -iks *iks_make_iq (enum iksubtype type, const char *xmlns); -iks *iks_make_resource_bind(iksid *id); -iks *iks_make_session(void); -int iks_stream_features(iks *x); - -/***** jabber packet filter *****/ - -#define IKS_RULE_DONE 0 -#define IKS_RULE_ID 1 -#define IKS_RULE_TYPE 2 -#define IKS_RULE_SUBTYPE 4 -#define IKS_RULE_FROM 8 -#define IKS_RULE_FROM_PARTIAL 16 -#define IKS_RULE_NS 32 - -enum iksfilterret { - IKS_FILTER_PASS, - IKS_FILTER_EAT -}; - -typedef int (iksFilterHook)(void *user_data, ikspak *pak); - -struct iksfilter_struct; -typedef struct iksfilter_struct iksfilter; -struct iksrule_struct; -typedef struct iksrule_struct iksrule; - -iksfilter *iks_filter_new (void); -iksrule *iks_filter_add_rule (iksfilter *f, iksFilterHook *filterHook, void *user_data, ...); -void iks_filter_remove_rule (iksfilter *f, iksrule *rule); -void iks_filter_remove_hook (iksfilter *f, iksFilterHook *filterHook); -void iks_filter_packet (iksfilter *f, ikspak *pak); -void iks_filter_delete (iksfilter *f); - -/***** sha1 *****/ - -struct iksha_struct; -typedef struct iksha_struct iksha; - -iksha *iks_sha_new (void); -void iks_sha_reset (iksha *sha); -void iks_sha_hash (iksha *sha, const unsigned char *data, size_t len, int finish); -void iks_sha_print (iksha *sha, char *hash); -void iks_sha_delete (iksha *sha); -void iks_sha (const char *data, char *hash); - -/***** md5 *****/ - -struct ikmd5_struct; -typedef struct iksmd5_struct iksmd5; - -iksmd5 *iks_md5_new(void); -void iks_md5_reset(iksmd5 *md5); -void iks_md5_hash(iksmd5 *md5, const unsigned char *data, size_t slen, int finish); -void iks_md5_delete(iksmd5 *md5); -void iks_md5_print(iksmd5 *md5, char *buf); -void iks_md5_digest(iksmd5 *md5, unsigned char *digest); -void iks_md5(const char *data, char *buf); - -/***** base64 *****/ - -char *iks_base64_decode(const char *buf); -char *iks_base64_encode(const char *buf, int len); - -#ifdef __cplusplus -} -#endif - -#endif /* IKSEMEL_H */ |