annotate src/protocols/jabber/lib.h @ 3340:f56b36347375

[gaim-migrate @ 3359] Added support for Jabber invisibility. committer: Tailor Script <tailor@pidgin.im>
author Jim Seymour <jseymour>
date Sat, 29 Jun 2002 12:13:25 +0000
parents 4e7cefc55971
children 9682c0e022c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3127
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 #include <string.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 #include <sys/types.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 #include <stdio.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 #include <setjmp.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 #include <sys/stat.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 #include <fcntl.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 #include <errno.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 #include <signal.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 #include <syslog.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 #include <strings.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 #include <unistd.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 #include <sys/param.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 #include <sys/socket.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 #include <netinet/in.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 #include <netdb.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 #include <arpa/inet.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 #include <sys/time.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 #include <stdarg.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 #include <ctype.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 #include <time.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 #include "xmlparse.h"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 /*
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 ** Arrange to use either varargs or stdargs
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #define MAXSHORTSTR 203 /* max short string length */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 #define QUAD_T unsigned long long
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #ifdef __STDC__
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include <stdarg.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 # define VA_LOCAL_DECL va_list ap;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 # define VA_START(f) va_start(ap, f)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 # define VA_END va_end(ap)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 #else /* __STDC__ */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 # include <varargs.h>
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 # define VA_LOCAL_DECL va_list ap;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 # define VA_START(f) va_start(ap)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 # define VA_END va_end(ap)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 #endif /* __STDC__ */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 #ifndef INCL_LIB_H
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #define INCL_LIB_H
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 #ifdef __cplusplus
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 extern "C" {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 #ifndef HAVE_SNPRINTF
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 extern int ap_snprintf(char *, size_t, const char *, ...);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 #define snprintf ap_snprintf
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 #ifndef HAVE_VSNPRINTF
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 extern int ap_vsnprintf(char *, size_t, const char *, va_list ap);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 #define vsnprintf ap_vsnprintf
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 #define ZONE zonestr(__FILE__,__LINE__)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 char *zonestr(char *file, int line);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75 /* Pool-based memory management routines */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 #undef POOL_DEBUG
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 /*
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 flip these, this should be a prime number for top # of pools debugging
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 #define POOL_DEBUG 40009
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 /* pheap - singular allocation of memory */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 struct pheap
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 void *block;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 int size, used;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 };
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 /* pool_cleaner - callback type which is associated
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 with a pool entry; invoked when the pool entry is
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 free'd */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 typedef void (*pool_cleaner)(void *arg);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 /* pfree - a linked list node which stores an
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 allocation chunk, plus a callback */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 struct pfree
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 pool_cleaner f;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 void *arg;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 struct pheap *heap;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 struct pfree *next;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 };
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 /* pool - base node for a pool. Maintains a linked list
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 of pool entries (pfree) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 typedef struct pool_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 int size;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 struct pfree *cleanup;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 struct pheap *heap;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 #ifdef POOL_DEBUG
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 char name[8], zone[32];
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 int lsize;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 } _pool, *pool;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 #define pool_new() _pool_new(ZONE)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 #define pool_heap(i) _pool_new_heap(i,ZONE)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 #else
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 } _pool, *pool;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 #define pool_heap(i) _pool_new_heap(i,NULL)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 #define pool_new() _pool_new(NULL)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 pool _pool_new(char *zone); /* new pool :) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 pool _pool_new_heap(int size, char *zone); /* creates a new memory pool with an initial heap size */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 void *pmalloc(pool p, int size); /* wrapper around malloc, takes from the pool, cleaned up automatically */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 void *pmalloc_x(pool p, int size, char c); /* Wrapper around pmalloc which prefils buffer with c */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 void *pmalloco(pool p, int size); /* YAPW for zeroing the block */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 char *pstrdup(pool p, const char *src); /* wrapper around strdup, gains mem from pool */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 void pool_stat(int full); /* print to stderr the changed pools and reset */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 char *pstrdupx(pool p, const char *src); /* temp stub */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 void pool_cleanup(pool p, pool_cleaner f, void *arg); /* calls f(arg) before the pool is freed during cleanup */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 void pool_free(pool p); /* calls the cleanup functions, frees all the data on the pool, and deletes the pool itself */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 int pool_size(pool p); /* returns total bytes allocated in this pool */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 /* Socket helper stuff */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 #ifndef MAXHOSTNAMELEN
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 #define MAXHOSTNAMELEN 64
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 #define NETSOCKET_SERVER 0
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 #define NETSOCKET_CLIENT 1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 #define NETSOCKET_UDP 2
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 #ifndef WIN32
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 int make_netsocket(u_short port, char *host, int type);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 struct in_addr *make_addr(char *host);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157 int set_fd_close_on_exec(int fd, int flag);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 /* String management routines */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 char *j_strdup(const char *str); /* provides NULL safe strdup wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 char *j_strcat(char *dest, char *txt); /* strcpy() clone */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 int j_strcmp(const char *a, const char *b); /* provides NULL safe strcmp wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 int j_strcasecmp(const char *a, const char *b); /* provides NULL safe strcasecmp wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 int j_strncmp(const char *a, const char *b, int i); /* provides NULL safe strncmp wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 int j_strncasecmp(const char *a, const char *b, int i); /* provides NULL safe strncasecmp wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 int j_strlen(const char *a); /* provides NULL safe strlen wrapper */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 int j_atoi(const char *a, int def); /* checks for NULL and uses default instead, convienence */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 void str_b64decode(char *str); /* what it says */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 /* SHA calculations */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182 #if (SIZEOF_INT == 4)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 typedef unsigned int uint32;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
184 #elif (SIZEOF_SHORT == 4)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185 typedef unsigned short uint32;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186 #else
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 typedef unsigned int uint32;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 #endif /* HAVEUINT32 */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190 char *shahash(char *str); /* NOT THREAD SAFE */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 void shahash_r(const char* str, char hashbuf[40]); /* USE ME */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 int strprintsha(char *dest, int *hashval);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 /* Hashtable functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 typedef struct xhn_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203 struct xhn_struct *next;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 const char *key;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 void *val;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 } *xhn, _xhn;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 typedef struct xht_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 int prime;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 struct xhn_struct *zen;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 } *xht, _xht;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 xht xhash_new(int prime);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 void xhash_put(xht h, const char *key, void *val);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217 void *xhash_get(xht h, const char *key);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 void xhash_zap(xht h, const char *key);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 void xhash_free(xht h);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 typedef void (*xhash_walker)(xht h, const char *key, void *val, void *arg);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 void xhash_walk(xht h, xhash_walker w, void *arg);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 /* DEPRECIATED Hashtable functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 typedef int (*KEYHASHFUNC)(const void *key);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 typedef int (*KEYCOMPAREFUNC)(const void *key1, const void *key2);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 typedef int (*TABLEWALKFUNC)(void *user_data, const void *key, void *data);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 typedef void *HASHTABLE;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 HASHTABLE ghash_create(int buckets, KEYHASHFUNC hash, KEYCOMPAREFUNC cmp);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235 HASHTABLE ghash_create_pool(pool p, int buckets, KEYHASHFUNC hash, KEYCOMPAREFUNC cmp);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 void ghash_destroy(HASHTABLE tbl);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237 void *ghash_get(HASHTABLE tbl, const void *key);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 int ghash_put(HASHTABLE tbl, const void *key, void *value);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 int ghash_remove(HASHTABLE tbl, const void *key);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 int ghash_walk(HASHTABLE tbl, TABLEWALKFUNC func, void *user_data);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 int str_hash_code(const char *s);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 /* XML escaping utils */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 char *strescape(pool p, char *buf); /* Escape <>&'" chars */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 char *strunescape(pool p, char *buf);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255 /* String pools (spool) functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 struct spool_node
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 char *c;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 struct spool_node *next;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262 };
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 typedef struct spool_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 int len;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 struct spool_node *last;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 struct spool_node *first;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 } *spool;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 spool spool_new(pool p); /* create a string pool */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 void spooler(spool s, ...); /* append all the char * args to the pool, terminate args with s again */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 char *spool_print(spool s); /* return a big string */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 void spool_add(spool s, char *str); /* add a single char to the pool */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 char *spools(pool p, ...); /* wrap all the spooler stuff in one function, the happy fun ball! */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 /* xmlnodes - Document Object Model */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 #define NTYPE_TAG 0
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 #define NTYPE_ATTRIB 1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 #define NTYPE_CDATA 2
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 #define NTYPE_LAST 2
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 #define NTYPE_UNDEF -1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 /* --------------------------------------------------------------------------
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 Node structure. Do not use directly! Always use accessor macros
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 and methods!
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 -------------------------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 typedef struct xmlnode_t
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 char* name;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298 unsigned short type;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
299 char* data;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 int data_sz;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 int complete;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 struct xmlnode_t* parent;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304 struct xmlnode_t* firstchild;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 struct xmlnode_t* lastchild;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306 struct xmlnode_t* prev;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 struct xmlnode_t* next;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 struct xmlnode_t* firstattrib;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 struct xmlnode_t* lastattrib;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 } _xmlnode, *xmlnode;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 /* Node creation routines */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 xmlnode xmlnode_wrap(xmlnode x,const char* wrapper);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314 xmlnode xmlnode_new_tag(const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 xmlnode xmlnode_new_tag_pool(pool p, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 xmlnode xmlnode_insert_tag(xmlnode parent, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 xmlnode xmlnode_insert_cdata(xmlnode parent, const char* CDATA, unsigned int size);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 xmlnode xmlnode_insert_tag_node(xmlnode parent, xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 void xmlnode_insert_node(xmlnode parent, xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320 xmlnode xmlnode_str(char *str, int len);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 xmlnode xmlnode_file(char *file);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 char* xmlnode_file_borked(char *file); /* same as _file but returns the parsing error */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 xmlnode xmlnode_dup(xmlnode x); /* duplicate x */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 xmlnode xmlnode_dup_pool(pool p, xmlnode x);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 /* Node Memory Pool */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 pool xmlnode_pool(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 xmlnode _xmlnode_new(pool p, const char *name, unsigned int type);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330 /* Node editing */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 void xmlnode_hide(xmlnode child);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 void xmlnode_hide_attrib(xmlnode parent, const char *name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 /* Node deletion routine, also frees the node pool! */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 void xmlnode_free(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 /* Locates a child tag by name and returns it */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 xmlnode xmlnode_get_tag(xmlnode parent, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 char* xmlnode_get_tag_data(xmlnode parent, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 /* Attribute accessors */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 void xmlnode_put_attrib(xmlnode owner, const char* name, const char* value);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 char* xmlnode_get_attrib(xmlnode owner, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 void xmlnode_put_expat_attribs(xmlnode owner, const char** atts);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 /* Bastard am I, but these are fun for internal use ;-) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 void xmlnode_put_vattrib(xmlnode owner, const char* name, void *value);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 void* xmlnode_get_vattrib(xmlnode owner, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350 /* Node traversal routines */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351 xmlnode xmlnode_get_firstattrib(xmlnode parent);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 xmlnode xmlnode_get_firstchild(xmlnode parent);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 xmlnode xmlnode_get_lastchild(xmlnode parent);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354 xmlnode xmlnode_get_nextsibling(xmlnode sibling);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
355 xmlnode xmlnode_get_prevsibling(xmlnode sibling);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 xmlnode xmlnode_get_parent(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358 /* Node information routines */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
359 char* xmlnode_get_name(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 char* xmlnode_get_data(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
361 int xmlnode_get_datasz(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
362 int xmlnode_get_type(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
364 int xmlnode_has_children(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
365 int xmlnode_has_attribs(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 /* Node-to-string translation */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 char* xmlnode2str(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
370 /* Node-to-terminated-string translation
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
371 -- useful for interfacing w/ scripting langs */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 char* xmlnode2tstr(xmlnode node);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 int xmlnode_cmp(xmlnode a, xmlnode b); /* compares a and b for equality */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 int xmlnode2file(char *file, xmlnode node); /* writes node to file */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378 /* Expat callbacks */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 void expat_startElement(void* userdata, const char* name, const char** atts);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 void expat_endElement(void* userdata, const char* name);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381 void expat_charData(void* userdata, const char* s, int len);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383 /***********************
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384 * XSTREAM Section
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 ***********************/
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387 #define XSTREAM_MAXNODE 1000000
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 #define XSTREAM_MAXDEPTH 100
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 #define XSTREAM_ROOT 0 /* root element */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391 #define XSTREAM_NODE 1 /* normal node */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 #define XSTREAM_CLOSE 2 /* closed </stream:stream> */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 #define XSTREAM_ERR 4 /* parser error */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395 typedef void (*xstream_onNode)(int type, xmlnode x, void *arg); /* xstream event handler */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 typedef struct xstream_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 XML_Parser parser;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 xmlnode node;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 char *cdata;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402 int cdata_len;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404 xstream_onNode f;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 void *arg;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 int status;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407 int depth;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 } *xstream, _xstream;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410 xstream xstream_new(pool p, xstream_onNode f, void *arg); /* create a new xstream */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411 int xstream_eat(xstream xs, char *buff, int len); /* parse new data for this xstream, returns last XSTREAM_* status */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
412
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 /* convience functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 xmlnode xstream_header(char *namespace, char *to, char *from);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 char *xstream_header_char(xmlnode x);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 typedef struct {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 unsigned long H[5];
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 unsigned long W[80];
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 int lenW;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 unsigned long sizeHi,sizeLo;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 } j_SHA_CTX;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426 void shaInit(j_SHA_CTX *ctx);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 void shaUpdate(j_SHA_CTX *ctx, unsigned char *dataIn, int len);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 void shaFinal(j_SHA_CTX *ctx, unsigned char hashout[20]);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 void shaBlock(unsigned char *dataIn, int len, unsigned char hashout[20]);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 /********** END OLD libxode.h BEGIN OLD jabber.h *************/
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435 /* JID structures & constants */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 #define JID_RESOURCE 1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 #define JID_USER 2
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 #define JID_SERVER 4
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 typedef struct jid_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 char* resource;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 char* user;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 char* server;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448 char* full;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449 struct jid_struct *next; /* for lists of jids */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 } *jid;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 jid jid_new(pool p, char *idstr); /* Creates a jabber id from the idstr */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 void jid_set(jid id, char *str, int item); /* Individually sets jid components */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 char* jid_full(jid id); /* Builds a string type=user/resource@server from the jid data */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 int jid_cmp(jid a, jid b); /* Compares two jid's, returns 0 for perfect match */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 int jid_cmpx(jid a, jid b, int parts); /* Compares just the parts specified as JID_|JID_ */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 jid jid_append(jid a, jid b); /* Appending b to a (list), no dups */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458 xmlnode jid_xres(jid id); /* Returns xmlnode representation of the resource?query=string */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 xmlnode jid_nodescan(jid id, xmlnode x); /* Scans the children of the node for a matching jid attribute */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 jid jid_user(jid a); /* returns the same jid but just of the user@host part */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 /* JPacket structures & constants */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
466 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468 #define JPACKET_UNKNOWN 0x00
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 #define JPACKET_MESSAGE 0x01
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 #define JPACKET_PRESENCE 0x02
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
471 #define JPACKET_IQ 0x04
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 #define JPACKET_S10N 0x08
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
474 #define JPACKET__UNKNOWN 0
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 #define JPACKET__NONE 1
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476 #define JPACKET__ERROR 2
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477 #define JPACKET__CHAT 3
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 #define JPACKET__GROUPCHAT 4
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 #define JPACKET__GET 5
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 #define JPACKET__SET 6
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481 #define JPACKET__RESULT 7
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482 #define JPACKET__SUBSCRIBE 8
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 #define JPACKET__SUBSCRIBED 9
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484 #define JPACKET__UNSUBSCRIBE 10
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485 #define JPACKET__UNSUBSCRIBED 11
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
486 #define JPACKET__AVAILABLE 12
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487 #define JPACKET__UNAVAILABLE 13
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
488 #define JPACKET__PROBE 14
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
489 #define JPACKET__HEADLINE 15
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 #define JPACKET__INVISIBLE 16
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492 typedef struct jpacket_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 unsigned char type;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 int subtype;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 int flag;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 void* aux1;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 xmlnode x;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499 jid to;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 jid from;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501 char* iqns;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502 xmlnode iq;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 } *jpacket, _jpacket;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 jpacket jpacket_new(xmlnode x); /* Creates a jabber packet from the xmlnode */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507 jpacket jpacket_reset(jpacket p); /* Resets the jpacket values based on the xmlnode */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508 int jpacket_subtype(jpacket p); /* Returns the subtype value (looks at xmlnode for it) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
510
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
511 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513 /* Presence Proxy DB structures & constants */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516 typedef struct ppdb_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
517 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 jid id; /* entry data */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
519 int pri;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520 xmlnode x;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521 struct ppdb_struct* user; /* linked list for user@server */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 pool p; /* db-level data */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
523 struct ppdb_struct* next;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
524 } _ppdb, *ppdb;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
526 ppdb ppdb_insert(ppdb db, jid id, xmlnode x); /* Inserts presence into the proxy */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 xmlnode ppdb_primary(ppdb db, jid id); /* Fetches the matching primary presence for the id */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
528 void ppdb_free(ppdb db); /* Frees the db and all entries */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 xmlnode ppdb_get(ppdb db, jid id); /* Called successively to return each presence xmlnode */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
530 /* for the id and children, returns NULL at the end */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 /* Simple Jabber Rate limit functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 typedef struct jlimit_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
540 char *key;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541 int start;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
542 int points;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543 int maxt, maxp;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
544 pool p;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
545 } *jlimit, _jlimit;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547 jlimit jlimit_new(int maxt, int maxp);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 void jlimit_free(jlimit r);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549 int jlimit_check(jlimit r, char *key, int points);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
550
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
552 // #define KARMA_DEBUG
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
553 // default to disable karma
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
554 #define KARMA_READ_MAX(k) (abs(k)*100) /* how much you are allowed to read off the sock */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
555 #define KARMA_INIT 5 /* internal "init" value */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
556 #define KARMA_HEARTBEAT 2 /* seconds to register for heartbeat */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 #define KARMA_MAX 10 /* total max karma you can have */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
558 #define KARMA_INC 1 /* how much to increment every KARMA_HEARTBEAT seconds */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
559 #define KARMA_DEC 0 /* how much to penalize for reading KARMA_READ_MAX in
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560 KARMA_HEARTBEAT seconds */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
561 #define KARMA_PENALTY -5 /* where you go when you hit 0 karma */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 #define KARMA_RESTORE 5 /* where you go when you payed your penelty or INIT */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 #define KARMA_RESETMETER 0 /* Reset byte meter on restore default is falst */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565 struct karma
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
566 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567 int init; /* struct initialized */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
568 int reset_meter; /* reset the byte meter on restore */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 int val; /* current karma value */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570 long bytes; /* total bytes read (in that time period) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 int max; /* max karma you can have */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572 int inc,dec; /* how much to increment/decrement */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
573 int penalty,restore; /* what penalty (<0) or restore (>0) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 time_t last_update; /* time this was last incremented */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575 };
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 struct karma *karma_new(pool p); /* creates a new karma object, with default values */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 void karma_copy(struct karma *new, struct karma *old); /* makes a copy of old in new */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 void karma_increment(struct karma *k); /* inteligently increments karma */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580 void karma_decrement(struct karma *k, long bytes_read); /* inteligently decrements karma */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 int karma_check(struct karma *k,long bytes_read); /* checks to see if we have good karma */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 /* Error structures & constants */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 typedef struct terror_struct
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 {
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 int code;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 char msg[64];
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 } terror;
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 #define TERROR_BAD (terror){400,"Bad Request"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
597 #define TERROR_AUTH (terror){401,"Unauthorized"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 #define TERROR_PAY (terror){402,"Payment Required"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599 #define TERROR_FORBIDDEN (terror){403,"Forbidden"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600 #define TERROR_NOTFOUND (terror){404,"Not Found"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
601 #define TERROR_NOTALLOWED (terror){405,"Not Allowed"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
602 #define TERROR_NOTACCEPTABLE (terror){406,"Not Acceptable"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603 #define TERROR_REGISTER (terror){407,"Registration Required"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
604 #define TERROR_REQTIMEOUT (terror){408,"Request Timeout"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 #define TERROR_CONFLICT (terror){409,"Conflict"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 #define TERROR_INTERNAL (terror){500,"Internal Server Error"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 #define TERROR_NOTIMPL (terror){501,"Not Implemented"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 #define TERROR_EXTERNAL (terror){502,"Remote Server Error"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 #define TERROR_UNAVAIL (terror){503,"Service Unavailable"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 #define TERROR_EXTTIMEOUT (terror){504,"Remote Server Timeout"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 #define TERROR_DISCONNECTED (terror){510,"Disconnected"}
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
613
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
614 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616 /* Namespace constants */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619 #define NSCHECK(x,n) (j_strcmp(xmlnode_get_attrib(x,"xmlns"),n) == 0)
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
621 #define NS_CLIENT "jabber:client"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
622 #define NS_SERVER "jabber:server"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 #define NS_AUTH "jabber:iq:auth"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624 #define NS_REGISTER "jabber:iq:register"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 #define NS_ROSTER "jabber:iq:roster"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626 #define NS_OFFLINE "jabber:x:offline"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 #define NS_AGENT "jabber:iq:agent"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 #define NS_AGENTS "jabber:iq:agents"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 #define NS_DELAY "jabber:x:delay"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
630 #define NS_VERSION "jabber:iq:version"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
631 #define NS_TIME "jabber:iq:time"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
632 #define NS_VCARD "vcard-temp"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
633 #define NS_PRIVATE "jabber:iq:private"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 #define NS_SEARCH "jabber:iq:search"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635 #define NS_OOB "jabber:iq:oob"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
636 #define NS_XOOB "jabber:x:oob"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
637 #define NS_ADMIN "jabber:iq:admin"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 #define NS_FILTER "jabber:iq:filter"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639 #define NS_AUTH_0K "jabber:iq:auth:0k"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 #define NS_BROWSE "jabber:iq:browse"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
641 #define NS_EVENT "jabber:x:event"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642 #define NS_CONFERENCE "jabber:iq:conference"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 #define NS_SIGNED "jabber:x:signed"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
644 #define NS_ENCRYPTED "jabber:x:encrypted"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
645 #define NS_GATEWAY "jabber:iq:gateway"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646 #define NS_LAST "jabber:iq:last"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
647 #define NS_ENVELOPE "jabber:x:envelope"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 #define NS_EXPIRE "jabber:x:expire"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 #define NS_XHTML "http://www.w3.org/1999/xhtml"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
651 #define NS_XDBGINSERT "jabber:xdb:ginsert"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
652 #define NS_XDBNSLIST "jabber:xdb:nslist"
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 /* JUtil functions */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 /* */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 /* --------------------------------------------------------- */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660 xmlnode jutil_presnew(int type, char *to, char *status); /* Create a skeleton presence packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
661 xmlnode jutil_iqnew(int type, char *ns); /* Create a skeleton iq packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 xmlnode jutil_msgnew(char *type, char *to, char *subj, char *body);
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663 /* Create a skeleton message packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
664 xmlnode jutil_header(char* xmlns, char* server); /* Create a skeleton stream packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 int jutil_priority(xmlnode x); /* Determine priority of this packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
666 void jutil_tofrom(xmlnode x); /* Swaps to/from fields on a packet */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
667 xmlnode jutil_iqresult(xmlnode x); /* Generate a skeleton iq/result, given a iq/query */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
668 char* jutil_timestamp(void); /* Get stringified timestamp */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
669 void jutil_error(xmlnode x, terror E); /* Append an <error> node to x */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
670 void jutil_delay(xmlnode msg, char *reason); /* Append a delay packet to msg */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
671 char* jutil_regkey(char *key, char *seed); /* pass a seed to generate a key, pass the key again to validate (returns it) */
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
672
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
673
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
674 #ifdef __cplusplus
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
675 }
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
676 #endif
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677
4e7cefc55971 [gaim-migrate @ 3142]
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678 #endif /* INCL_LIB_H */