Mercurial > hg > nnchat
annotate network.h @ 423:6727fec3c326
Rename nn_conn_send_msg() to nn_conn_send_msg_v() and add new nn_conn_send_msg().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 24 May 2012 11:09:48 +0300 |
parents | 8263cb88556a |
children | 691400f1c9bb |
rev | line source |
---|---|
412
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1 /* |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
2 * NNChat - Custom chat client for NewbieNudes.com chatrooms |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
3 * Written by Matti 'ccr' Hämäläinen |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
4 * (C) Copyright 2008-2012 Tecnic Software productions (TNSP) |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
5 */ |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 #ifndef LIBNNCHAT_H |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 #define LIBNNCHAT_H |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 #include <stdio.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 #include <unistd.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 #include "th_types.h" |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
12 #include "th_string.h" |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 #ifdef __WIN32 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
15 #include <windows.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
16 #include <winsock.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
17 typedef uint16_t in_port_t; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
18 typedef uint32_t in_addr_t; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 #else |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
20 #include <sys/select.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
21 #include <sys/socket.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
22 #ifdef HAVE_NETINET_IN_H |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
23 #include <netinet/in.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 #endif |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 #include <arpa/inet.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
26 #include <netdb.h> |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 #endif |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
28 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 #define NN_CONNBUF_SIZE (64 * 1024) |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
31 #define NN_DELAY_USEC (15 * 1000) |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
32 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
33 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
34 enum |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 NN_CONN_UNINIT = 0, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 NN_CONN_PROXY_NEG, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
38 NN_CONN_OPEN, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 NN_CONN_CLOSED |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
40 }; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
41 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 enum |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 NN_PROXY_NONE = 0, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 NN_PROXY_SOCKS4, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 NN_PROXY_SOCKS4A, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 NN_PROXY_LAST |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
49 }; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 enum |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
53 SOCKS_CMD_CONNECT = 1, |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 SOCKS_CMD_BIND = 2 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 }; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 struct nn_socks_t |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 uint8_t version; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 uint8_t command; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 in_port_t port; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
62 in_addr_t addr; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 } __attribute__((__packed__)); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 struct nn_socks_res_t |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
67 uint8_t nb; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
68 uint8_t result; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 in_port_t port; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 in_addr_t addr; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 } __attribute__((__packed__)); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
73 typedef struct _nn_conn_t |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 struct |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 { |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
77 char *host; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
78 struct hostent *hst; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 int type; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
80 int port; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 struct in_addr addr; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 } proxy; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
83 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
84 char *host; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 struct hostent *hst; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 int port; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
88 int socket; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 struct in_addr addr; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 fd_set sockfds; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
92 void (*errfunc)(struct _nn_conn_t *conn, const char *fmt, va_list ap); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 void (*msgfunc)(struct _nn_conn_t *conn, const char *fmt, va_list ap); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 int err; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
96 int status; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 char buf[NN_CONNBUF_SIZE + 16]; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 char *ptr, *in_ptr; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 ssize_t got_bytes, total_bytes; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 } nn_conn_t; |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 const char *nn_get_errstr(int err); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 BOOL nn_network_init(); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
106 void nn_network_close(void); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
107 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
108 struct hostent *nn_resolve_host(nn_conn_t *conn, const char *name); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 nn_conn_t * nn_conn_new( |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 void (*errfunc)(nn_conn_t *conn, const char *fmt, va_list ap), |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 void (*msgfunc)(nn_conn_t *conn, const char *fmt, va_list ap)); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
112 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
113 int nn_conn_set_proxy(nn_conn_t *conn, int type, int port, const char *host); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 int nn_conn_open(nn_conn_t *conn, const int port, const char *host); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
115 void nn_conn_close(nn_conn_t *); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
116 void nn_conn_reset(nn_conn_t *); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
117 int nn_conn_pull(nn_conn_t *); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 BOOL nn_conn_send_buf(nn_conn_t *, const char *buf, const size_t len); |
423
6727fec3c326
Rename nn_conn_send_msg() to nn_conn_send_msg_v() and add new nn_conn_send_msg().
Matti Hamalainen <ccr@tnsp.org>
parents:
415
diff
changeset
|
119 BOOL nn_conn_send_msg(nn_conn_t *, const char *user, const char *str); |
6727fec3c326
Rename nn_conn_send_msg() to nn_conn_send_msg_v() and add new nn_conn_send_msg().
Matti Hamalainen <ccr@tnsp.org>
parents:
415
diff
changeset
|
120 BOOL nn_conn_send_msg_v(nn_conn_t *, const char *user, const char *fmt, ...); |
412
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
121 BOOL nn_conn_check(nn_conn_t *); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
122 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
123 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
124 BOOL nn_conn_buf_check(nn_conn_t *conn, size_t n); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 BOOL nn_conn_buf_skip(nn_conn_t *conn, size_t n); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 int nn_conn_buf_strncmp(nn_conn_t *conn, const char *str, const size_t n); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
127 int nn_conn_buf_strcmp(nn_conn_t *conn, const char *str); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
128 char * nn_conn_buf_strstr(nn_conn_t *conn, const char *str); |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
129 |
3e64acb433e8
Split libnnchat into libnnet and libnnutil
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
130 #endif |