ekg2
 All Struktury Danych Pliki Funkcje Zmienne Definicje typów Wyliczenia Wartości wyliczeń Definicje Grupay Strony
misc.h
Idź do dokumentacji tego pliku.
1 #ifndef __ICQ_MISC_H
2 #define __ICQ_MISC_H
3 
4 #include <stdint.h>
5 
6 #include <ekg/dynstuff.h>
7 
8 typedef struct icq_tlv_list {
9  struct icq_tlv_list *next;
10 
11  uint16_t type;
12  uint16_t len;
13 
14  uint32_t nr;
15  unsigned char *buf;
16 } icq_tlv_t;
17 
18 struct fieldnames_t {
19  int code;
20  char *text;
21 };
22 
23 extern struct fieldnames_t snac_families[];
24 
25 /* pack, unpack */
26 int icq_unpack(unsigned char *buf, unsigned char **endbuf, int *l, char *format, ...);
27 int icq_unpack_nc(unsigned char *buf, int len, char *format, ...);
28 #define icq_unpack_tlv_word(tlv, val) \
29  do { \
30  val = 0; \
31  icq_unpack_nc(tlv ? tlv->buf : NULL, tlv ? tlv->len : 0, "W", &val); \
32  } while(0);
33 
34 
35 string_t icq_pack(char *format, ...);
36 string_t icq_pack_append(string_t str, char *format, ...);
37 
38 #define icq_pack_tlv(type, data, datalen) (uint32_t) type, (uint32_t) datalen, (uint8_t *) data
39 #define icq_pack_tlv_char(type, data) (uint32_t) type, (uint32_t) 1, (uint32_t) data
40 #define icq_pack_tlv_word(type, data) (uint32_t) type, (uint32_t) 2, (uint32_t) data
41 #define icq_pack_tlv_dword(type, data) (uint32_t) type, (uint32_t) 4, (uint32_t) data
42 #define icq_pack_tlv_str(type, str) icq_pack_tlv(type, str, xstrlen(str))
43 
44 struct icq_tlv_list *icq_unpack_tlvs(unsigned char **str, int *maxlen, unsigned int maxcount);
45 struct icq_tlv_list *icq_unpack_tlvs_nc(unsigned char *str, int maxlen, unsigned int maxcount);
46 icq_tlv_t *icq_tlv_get(struct icq_tlv_list *l, uint16_t type);
47 void icq_tlvs_destroy(struct icq_tlv_list **list);
48 
49 void icq_hexdump(int level, unsigned char *p, size_t len);
50 char *icq_encryptpw(const char *pw);
51 uint16_t icq_status(int status);
52 
53 #define ICQ_UNPACK(endbuf, args...) (icq_unpack(buf, endbuf, &len, args))
54 
56 status_t icq2ekg_status2(int nMsgType);
57 
58 /* misc */
59 int tlv_length_check(char *name, icq_tlv_t *t, int length);
60 
61 #define ICQ_SNAC_NAMES_DEBUG 1
62 
63 #if ICQ_SNAC_NAMES_DEBUG
64 const char *icq_snac_name(int family, int cmd);
65 #endif
66 
67 const char *icq_lookuptable(struct fieldnames_t *table, int code);
68 
70 
73 
74 char *icq_convert_from_ucs2be(char *buf, int len);
76 char *icq_convert_from_utf8(char *text);
77 
78 void icq_send_snac(session_t *s, uint16_t family, uint16_t cmd, private_data_t *data, snac_subhandler_t subhandler, char *format, ...);
79 
81 void icq_rates_init(session_t *s, int n_rates);
82 
83 #endif