Mercurial > hg > nnchat
view libnnchat.h @ 322:b9c15c57dc8f
Clean up message functions, add new printMsgQ() helper function for messages that should not
go into the log file. Add skeleton help function, accessible via F1 key. And other cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 11 Jun 2011 09:48:26 +0300 |
parents | b765f15f9895 |
children | c086345d176b |
line wrap: on
line source
/* * NNChat - Custom chat client for NewbieNudes.com chatrooms * Written by Matti 'ccr' Hämäläinen * (C) Copyright 2008-2011 Tecnic Software productions (TNSP) */ #ifndef LIBNNCHAT_H #define LIBNNCHAT_H #include <stdio.h> #include <unistd.h> #ifdef __WIN32 #include <windows.h> #include <winsock.h> #else #include <sys/select.h> #include <sys/socket.h> #ifdef HAVE_NETINET_IN_H #include <netinet/in.h> #endif #include <arpa/inet.h> #include <netdb.h> #endif #include <sys/types.h> #include <time.h> #include <errno.h> #include "th_string.h" #define NN_TMPBUF_SIZE (4096) #define NN_ALLOC_SIZE (128) #define NN_CONNBUF_SIZE (64 * 1024) #define NN_NUM_BUCKETS (256) #define NN_DELAY_USEC (15 * 1000) typedef struct { ssize_t pos, len, size; char *data; } nn_editbuf_t; typedef struct _nn_user_t { char *name; time_t lastspoke, joined; struct _nn_user_t *next; } nn_user_t; typedef struct { nn_user_t *buckets[NN_NUM_BUCKETS]; } nn_userhash_t; enum { NN_CONN_UNINIT = 0, NN_CONN_OPEN, NN_CONN_CLOSED }; typedef struct _nn_conn_t { int socket; int port; struct in_addr address; fd_set sockfds; void (*errfunc)(struct _nn_conn_t *conn, const char *fmt, va_list ap); void (*msgfunc)(struct _nn_conn_t *conn, const char *fmt, va_list ap); int err; int status; char buf[NN_CONNBUF_SIZE + 16]; char *ptr; ssize_t got; } nn_conn_t; const char *nn_get_errstr(int err); BOOL nn_network_init(void); void nn_network_close(void); nn_conn_t * nn_conn_open(struct in_addr *addr, const int port); void nn_conn_close(nn_conn_t *); BOOL nn_conn_pull(nn_conn_t *); BOOL nn_conn_send_buf(nn_conn_t *, const char *buf, const size_t len); BOOL nn_conn_send_msg(nn_conn_t *, const char *user, const char *fmt, ...); BOOL nn_conn_check(nn_conn_t *); nn_userhash_t *nn_userhash_new(void); nn_user_t * nn_userhash_foreach(const nn_userhash_t *, int (*func)(const nn_user_t *)); nn_user_t * nn_user_match(const nn_userhash_t *list, const char *str, const char *current, BOOL again); int nn_userhash_insert(nn_userhash_t *, const char *name); int nn_userhash_delete(nn_userhash_t *, const char *name); void nn_userhash_free(nn_userhash_t *); void nn_user_free(nn_user_t *); void nn_user_free_list(nn_user_t *); nn_user_t * nn_user_copy(const nn_user_t *src); nn_user_t * nn_user_find(const nn_userhash_t *list, const char *name); char * nn_encode_str1(const char *str); char * nn_decode_str1(const char *str); char * nn_encode_str2(const char *str); char * nn_decode_str2(const char *str); char * nn_strip_tags(const char *str); char * nn_dbldecode_str(const char *str); char * nn_dblencode_str(const char *str); char * nn_username_encode(char *str); char * nn_username_decode(char *str); int nn_editbuf_write(nn_editbuf_t *buf, ssize_t pos, int ch); int nn_editbuf_insert(nn_editbuf_t *buf, ssize_t pos, int ch); int nn_editbuf_delete(nn_editbuf_t *buf, ssize_t pos); void nn_editbuf_clear(nn_editbuf_t *buf); nn_editbuf_t * nn_editbuf_new(ssize_t n); void nn_editbuf_free(nn_editbuf_t *buf); nn_editbuf_t * nn_editbuf_copy(nn_editbuf_t *src); void nn_editbuf_setpos(nn_editbuf_t *buf, ssize_t pos); char * nn_editbuf_get_string(nn_editbuf_t *buf, ssize_t start, ssize_t end); #endif