annotate mcabber/libjabber/libxode.h @ 1469:1f7990dd416b

Update UK help files (Myhailo Danylenko)
author Mikael Berthe <mikael@lilotux.net>
date Sun, 13 Apr 2008 08:33:50 +0200
parents 9054697b1a06
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
1 /*
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
2 * jabberd - Jabber Open Source Server
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
3 * Copyright (c) 2002 Jeremie Miller, Thomas Muldowney,
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
4 * Ryan Eatmon, Robert Norris
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
5 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
6 * This program is free software; you can redistribute it and/or modify
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
7 * it under the terms of the GNU General Public License as published by
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
9 * (at your option) any later version.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
10 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
11 * This program is distributed in the hope that it will be useful,
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
14 * GNU General Public License for more details.
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
15 *
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
16 * You should have received a copy of the GNU General Public License
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
17 * along with this program; if not, write to the Free Software
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
19 */
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
20
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
21 #ifdef HAVE_CONFIG_H
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
22 # include <config.h>
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
23 #endif
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
24
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
25 #include <string.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
26 #include <stdlib.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
27 #include <sys/types.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
28 #include <stdio.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
29 #include <setjmp.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
30 #include <sys/stat.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
31 #include <fcntl.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
32 #include <errno.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
33 #include <signal.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
34 #include <strings.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
35 #include <unistd.h>
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
36 #include <sys/time.h>
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
37 #include <syslog.h>
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
38 #include <netinet/in.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
39 #include <netdb.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
40 #include <arpa/inet.h>
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
41 #include <sys/socket.h>
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
42
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
43 #include "xmlparse.h"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
44
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
45 /*
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
46 ** Arrange to use either varargs or stdargs
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
47 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
48
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
49 #define MAXSHORTSTR 203 /* max short string length */
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
50 #define QUAD_T unsigned long long
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
51
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
52 #ifdef __STDC__
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
53
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
54 #include <stdarg.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
55
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
56 # define VA_LOCAL_DECL va_list ap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
57 # define VA_START(f) va_start(ap, f)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
58 # define VA_END va_end(ap)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
59
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
60 #else /* __STDC__ */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
61
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
62 # include <varargs.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
63
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
64 # define VA_LOCAL_DECL va_list ap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
65 # define VA_START(f) va_start(ap)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
66 # define VA_END va_end(ap)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
67
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
68 #endif /* __STDC__ */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
69
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
70
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
71 #ifndef INCL_LIBXODE_H
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
72 #define INCL_LIBXODE_H
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
73
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
74 #ifdef __cplusplus
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
75 extern "C" {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
76 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
77
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
78
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
79 #ifndef HAVE_SNPRINTF
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
80 extern int ap_snprintf(char *, size_t, const char *, ...);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
81 #define snprintf ap_snprintf
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
82 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
83
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
84 #ifndef HAVE_VSNPRINTF
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
85 extern int ap_vsnprintf(char *, size_t, const char *, va_list ap);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
86 #define vsnprintf ap_vsnprintf
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
87 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
88
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
89 #define ZONE zonestr(__FILE__,__LINE__)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
90 char *zonestr(char *file, int line);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
91
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
92 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
93 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
94 /* Pool-based memory management routines */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
95 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
96 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
97
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
98 #undef POOL_DEBUG
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
99 /*
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
100 flip these, this should be a prime number for top # of pools debugging
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
101 #define POOL_DEBUG 40009
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
102 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
103
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
104 /* pheap - singular allocation of memory */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
105 struct pheap
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
106 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
107 void *block;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
108 int size, used;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
109 };
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
110
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
111 /* pool_cleaner - callback type which is associated
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
112 with a pool entry; invoked when the pool entry is
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
113 free'd */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
114 typedef void (*pool_cleaner)(void *arg);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
115
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
116 /* pfree - a linked list node which stores an
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
117 allocation chunk, plus a callback */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
118 struct pfree
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
119 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
120 pool_cleaner f;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
121 void *arg;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
122 struct pheap *heap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
123 struct pfree *next;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
124 };
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
125
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
126 /* pool - base node for a pool. Maintains a linked list
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
127 of pool entries (pfree) */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
128 typedef struct pool_struct
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
129 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
130 int size;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
131 struct pfree *cleanup;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
132 struct pheap *heap;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
133 #ifdef POOL_DEBUG
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
134 char name[8], zone[32];
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
135 int lsize;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
136 } _pool, *pool;
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
137 #define pool_new() _pool_new(__FILE__,__LINE__)
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
138 #define pool_heap(i) _pool_new_heap(i,__FILE__,__LINE__)
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
139 #else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
140 } _pool, *pool;
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
141 #define pool_heap(i) _pool_new_heap(i, NULL, 0)
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
142 #define pool_new() _pool_new(NULL, 0)
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
143 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
144
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
145 pool _pool_new(char *zone, int line); /* new pool :) */
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
146 pool _pool_new_heap(int size, char *zone, int line); /* creates a new memory pool with an initial heap size */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
147 void *pmalloc(pool p, int size); /* wrapper around malloc, takes from the pool, cleaned up automatically */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
148 void *pmalloc_x(pool p, int size, char c); /* Wrapper around pmalloc which prefils buffer with c */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
149 void *pmalloco(pool p, int size); /* YAPW for zeroing the block */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
150 char *pstrdup(pool p, const char *src); /* wrapper around strdup, gains mem from pool */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
151 void pool_stat(int full); /* print to stderr the changed pools and reset */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
152 char *pstrdupx(pool p, const char *src); /* temp stub */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
153 void pool_cleanup(pool p, pool_cleaner f, void *arg); /* calls f(arg) before the pool is freed during cleanup */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
154 void pool_free(pool p); /* calls the cleanup functions, frees all the data on the pool, and deletes the pool itself */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
155 int pool_size(pool p); /* returns total bytes allocated in this pool */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
156
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
157
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
158
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
159
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
160 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
161 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
162 /* Socket helper stuff */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
163 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
164 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
165 #ifndef MAXHOSTNAMELEN
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
166 #define MAXHOSTNAMELEN 64
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
167 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
168
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
169 #define NETSOCKET_SERVER 0
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
170 #define NETSOCKET_CLIENT 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
171 #define NETSOCKET_UDP 2
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
172
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
173 #ifndef WIN32
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
174 int make_netsocket(u_short port, char *host, int type, int ssl);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
175 int make_nb_netsocket(u_short port, char *host, int type, int ssl, int * state);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
176 void change_socket_to_blocking(int socket);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
177 struct in_addr *make_addr(char *host);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
178 int set_fd_close_on_exec(int fd, int flag);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
179 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
180
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
181
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
182 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
183 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
184 /* String management routines */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
185 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
186 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
187 char *j_strdup(const char *str); /* provides NULL safe strdup wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
188 char *j_strcat(char *dest, char *txt); /* strcpy() clone */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
189 int j_strcmp(const char *a, const char *b); /* provides NULL safe strcmp wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
190 int j_strcasecmp(const char *a, const char *b); /* provides NULL safe strcasecmp wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
191 int j_strncmp(const char *a, const char *b, int i); /* provides NULL safe strncmp wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
192 int j_strncasecmp(const char *a, const char *b, int i); /* provides NULL safe strncasecmp wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
193 int j_strlen(const char *a); /* provides NULL safe strlen wrapper */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
194 int j_atoi(const char *a, int def); /* checks for NULL and uses default instead, convienence */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
195 void str_b64decode(char *str); /* what it says */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
196
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
197
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
198 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
199 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
200 /* SHA calculations */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
201 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
202 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
203 #if (SIZEOF_INT == 4)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
204 typedef unsigned int uint32;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
205 #elif (SIZEOF_SHORT == 4)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
206 typedef unsigned short uint32;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
207 #else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
208 typedef unsigned int uint32;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
209 #endif /* HAVEUINT32 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
210
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
211 int sha_hash(int *data, int *hash);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
212 int sha_init(int *hash);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
213 char *shahash(char *str); /* NOT THREAD SAFE */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
214 void shahash_r(const char* str, char hashbuf[40]); /* USE ME */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
215
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
216 int strprintsha(char *dest, int *hashval);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
217
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
218
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
219 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
220 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
221 /* Hashtable functions */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
222 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
223 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
224 typedef int (*KEYHASHFUNC)(const void *key);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
225 typedef int (*KEYCOMPAREFUNC)(const void *key1, const void *key2);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
226 typedef int (*TABLEWALKFUNC)(void *user_data, const void *key, void *data);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
227
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
228 typedef void *HASHTABLE;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
229
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
230 HASHTABLE ghash_create(int buckets, KEYHASHFUNC hash, KEYCOMPAREFUNC cmp);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
231 void ghash_destroy(HASHTABLE tbl);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
232 void *ghash_get(HASHTABLE tbl, const void *key);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
233 int ghash_put(HASHTABLE tbl, const void *key, void *value);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
234 int ghash_remove(HASHTABLE tbl, const void *key);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
235 int ghash_walk(HASHTABLE tbl, TABLEWALKFUNC func, void *user_data);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
236 int str_hash_code(const char *s);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
237
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
238
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
239 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
240 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
241 /* XML escaping utils */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
242 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
243 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
244 char *strescape(pool p, char *buf); /* Escape <>&'" chars */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
245 char *strunescape(pool p, char *buf);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
246
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
247
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
248 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
249 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
250 /* String pools (spool) functions */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
251 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
252 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
253 struct spool_node
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
254 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
255 char *c;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
256 struct spool_node *next;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
257 };
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
258
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
259 typedef struct spool_struct
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
260 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
261 pool p;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
262 int len;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
263 struct spool_node *last;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
264 struct spool_node *first;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
265 } *spool;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
266
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
267 spool spool_new(pool p); /* create a string pool */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
268 void spooler(spool s, ...); /* append all the char * args to the pool, terminate args with s again */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
269 char *spool_print(spool s); /* return a big string */
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
270 void spool_add(spool s, char *str); /* add a single string to the pool */
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
271 char *spools(pool p, ...); /* wrap all the spooler stuff in one function, the happy fun ball! */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
272
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
273
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
274 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
275 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
276 /* xmlnodes - Document Object Model */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
277 /* */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
278 /* --------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
279 #define NTYPE_TAG 0
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
280 #define NTYPE_ATTRIB 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
281 #define NTYPE_CDATA 2
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
282
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
283 #define NTYPE_LAST 2
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
284 #define NTYPE_UNDEF -1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
285
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
286 /* --------------------------------------------------------------------------
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
287 Node structure. Do not use directly! Always use accessor macros
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
288 and methods!
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
289 -------------------------------------------------------------------------- */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
290 typedef struct xmlnode_t
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
291 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
292 char* name;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
293 unsigned short type;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
294 char* data;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
295 int data_sz;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
296 int complete;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
297 pool p;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
298 struct xmlnode_t* parent;
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
299 struct xmlnode_t* firstchild;
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
300 struct xmlnode_t* lastchild;
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
301 struct xmlnode_t* prev;
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
302 struct xmlnode_t* next;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
303 struct xmlnode_t* firstattrib;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
304 struct xmlnode_t* lastattrib;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
305 } _xmlnode, *xmlnode;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
306
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
307 /* Node creation routines */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
308 xmlnode xmlnode_wrap(xmlnode x,const char* wrapper);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
309 xmlnode xmlnode_new_tag(const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
310 xmlnode xmlnode_new_tag_pool(pool p, const char* name);
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
311 xmlnode xmlnode_insert_tag(xmlnode parent, const char* name);
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
312 xmlnode xmlnode_insert_cdata(xmlnode parent, const char* CDATA, unsigned int size);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
313 xmlnode xmlnode_insert_tag_node(xmlnode parent, xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
314 void xmlnode_insert_node(xmlnode parent, xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
315 xmlnode xmlnode_str(char *str, int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
316 xmlnode xmlnode_file(char *file);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
317 xmlnode xmlnode_dup(xmlnode x); /* duplicate x */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
318 xmlnode xmlnode_dup_pool(pool p, xmlnode x);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
319
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
320 /* Node Memory Pool */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
321 pool xmlnode_pool(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
322 xmlnode _xmlnode_new(pool p, const char *name, unsigned int type);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
323
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
324 /* Node editing */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
325 void xmlnode_hide(xmlnode child);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
326 void xmlnode_hide_attrib(xmlnode parent, const char *name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
327
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
328 /* Node deletion routine, also frees the node pool! */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
329 void xmlnode_free(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
330
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
331 /* Locates a child tag by name and returns it */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
332 xmlnode xmlnode_get_tag(xmlnode parent, const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
333 char* xmlnode_get_tag_data(xmlnode parent, const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
334
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
335 /* Attribute accessors */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
336 void xmlnode_put_attrib(xmlnode owner, const char* name, const char* value);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
337 char* xmlnode_get_attrib(xmlnode owner, const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
338 void xmlnode_put_expat_attribs(xmlnode owner, const char** atts);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
339
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
340 /* Bastard am I, but these are fun for internal use ;-) */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
341 void xmlnode_put_vattrib(xmlnode owner, const char* name, void *value);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
342 void* xmlnode_get_vattrib(xmlnode owner, const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
343
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
344 /* Node traversal routines */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
345 xmlnode xmlnode_get_firstattrib(xmlnode parent);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
346 xmlnode xmlnode_get_firstchild(xmlnode parent);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
347 xmlnode xmlnode_get_lastchild(xmlnode parent);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
348 xmlnode xmlnode_get_nextsibling(xmlnode sibling);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
349 xmlnode xmlnode_get_prevsibling(xmlnode sibling);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
350 xmlnode xmlnode_get_parent(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
351
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
352 /* Node information routines */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
353 char* xmlnode_get_name(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
354 char* xmlnode_get_data(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
355 int xmlnode_get_datasz(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
356 int xmlnode_get_type(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
357
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
358 int xmlnode_has_children(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
359 int xmlnode_has_attribs(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
360
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
361 /* Node-to-string translation */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
362 char* xmlnode2str(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
363
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
364 /* Node-to-terminated-string translation
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
365 -- useful for interfacing w/ scripting langs */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
366 char* xmlnode2tstr(xmlnode node);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
367
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
368 int xmlnode_cmp(xmlnode a, xmlnode b); /* compares a and b for equality */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
369
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
370 int xmlnode2file(char *file, xmlnode node); /* writes node to file */
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
371 int xmlnode2file_limited(char *file, xmlnode node, size_t sizelimit);
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
372
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
373 /* Expat callbacks */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
374 void expat_startElement(void* userdata, const char* name, const char** atts);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
375 void expat_endElement(void* userdata, const char* name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
376 void expat_charData(void* userdata, const char* s, int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
377
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
378 /***********************
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
379 * XSTREAM Section
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
380 ***********************/
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
381
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
382 #define XSTREAM_MAXNODE 1000000
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
383 #define XSTREAM_MAXDEPTH 100
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
384
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
385 #define XSTREAM_ROOT 0 /* root element */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
386 #define XSTREAM_NODE 1 /* normal node */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
387 #define XSTREAM_CLOSE 2 /* closed </stream:stream> */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
388 #define XSTREAM_ERR 4 /* parser error */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
389
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
390 typedef void (*xstream_onNode)(int type, xmlnode x, void *arg); /* xstream event handler */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
391
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
392 typedef struct xstream_struct
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
393 {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
394 XML_Parser parser;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
395 xmlnode node;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
396 char *cdata;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
397 int cdata_len;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
398 pool p;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
399 xstream_onNode f;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
400 void *arg;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
401 int status;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
402 int depth;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
403 } *xstream, _xstream;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
404
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
405 xstream xstream_new(pool p, xstream_onNode f, void *arg); /* create a new xstream */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
406 int xstream_eat(xstream xs, char *buff, int len); /* parse new data for this xstream, returns last XSTREAM_* status */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
407
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
408 /* convience functions */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
409 xmlnode xstream_header(char *nspace, char *to, char *from);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
410 char *xstream_header_char(xmlnode x);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
411
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
412 /* SHA.H */
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
413 /*
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
414 * The contents of this file are subject to the Mozilla Public
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
415 * License Version 1.1 (the "License"); you may not use this file
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
416 * except in compliance with the License. You may obtain a copy of
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
417 * the License at http://www.mozilla.org/MPL/
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
418 *
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
419 * Software distributed under the License is distributed on an "AS
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
420 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
421 * implied. See the License for the specific language governing
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
422 * rights and limitations under the License.
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
423 *
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
424 * The Original Code is SHA 180-1 Header File
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
425 *
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
426 * The Initial Developer of the Original Code is Paul Kocher of
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
427 * Cryptography Research. Portions created by Paul Kocher are
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
428 * Copyright (C) 1995-9 by Cryptography Research, Inc. All
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
429 * Rights Reserved.
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
430 *
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
431 * Contributor(s):
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
432 *
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
433 * Paul Kocher
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
434 *
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
435 * Alternatively, the contents of this file may be used under the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
436 * terms of the GNU General Public License Version 2 or later (the
417
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
437 * "GPL"), in which case the provisions of the GPL are applicable
c3ae9251c197 Sync libjabber with upstream
Mikael Berthe <mikael@lilotux.net>
parents: 25
diff changeset
438 * instead of those above. If you wish to allow use of your
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
439 * version of this file only under the terms of the GPL and not to
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
440 * allow others to use your version of this file under the MPL,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
441 * indicate your decision by deleting the provisions above and
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
442 * replace them with the notice and other provisions required by
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
443 * the GPL. If you do not delete the provisions above, a recipient
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
444 * may use your version of this file under either the MPL or the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
445 * GPL.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
446 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
447
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
448 typedef struct {
722
9054697b1a06 Sync with upstream libjabber
Mikael Berthe <mikael@lilotux.net>
parents: 417
diff changeset
449 uint32_t H[5];
9054697b1a06 Sync with upstream libjabber
Mikael Berthe <mikael@lilotux.net>
parents: 417
diff changeset
450 uint32_t W[80];
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
451 int lenW;
722
9054697b1a06 Sync with upstream libjabber
Mikael Berthe <mikael@lilotux.net>
parents: 417
diff changeset
452 uint32_t sizeHi,sizeLo;
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
453 } SHA_CTX;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
454
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
455
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
456 void shaInit(SHA_CTX *ctx);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
457 void shaUpdate(SHA_CTX *ctx, unsigned char *dataIn, int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
458 void shaFinal(SHA_CTX *ctx, unsigned char hashout[20]);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
459 void shaBlock(unsigned char *dataIn, int len, unsigned char hashout[20]);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
460
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
461
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
462 /* END SHA.H */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
463
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
464 #ifdef __cplusplus
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
465 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
466 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
467
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
468 #endif /* INCL_LIBXODE_H */