Mercurial > hg > nnchat
view util.h @ 681:ceb73b712121
Fix an issue in editBuffer handling.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 09 Jul 2018 05:59:13 +0300 |
parents | 32c13602c091 |
children | 93d0e1547842 |
line wrap: on
line source
/* * NNChat - Custom chat client for NewbieNudes.com chatrooms * Written by Matti 'ccr' Hämäläinen * (C) Copyright 2008-2016 Tecnic Software productions (TNSP) */ #ifndef LIBNNUTIL_H #define LIBNNUTIL_H #include <stdio.h> #include <unistd.h> #include "th_types.h" #include "th_string.h" #include "th_datastruct.h" #define NN_TMPBUF_SIZE (4096) #define NN_ALLOC_SIZE (128) #define NN_NUM_BUCKETS (256) 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; nn_userhash_t *nn_userhash_new(void); nn_user_t * nn_userhash_foreach(const nn_userhash_t *, int (*func)(const nn_user_t *, void *userdata), void *data); nn_user_t * nn_userhash_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 *); nn_user_t * nn_userhash_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_dbldecode_str(const char *str); char * nn_dblencode_str(const char *str); char * nn_strip_tags(const char *str); char * nn_username_encode(char *str); char * nn_username_decode(char *str); typedef struct { size_t pos, len, size; char *data; BOOL dirty; } nn_editbuf_t; int nn_editbuf_write(nn_editbuf_t *buf, size_t pos, char ch); int nn_editbuf_insert(nn_editbuf_t *buf, size_t pos, char ch); int nn_editbuf_delete(nn_editbuf_t *buf, size_t pos); void nn_editbuf_clear(nn_editbuf_t *buf); nn_editbuf_t * nn_editbuf_new(size_t n); void nn_editbuf_free(nn_editbuf_t *buf); nn_editbuf_t * nn_editbuf_copy(const nn_editbuf_t *src); void nn_editbuf_copy_to(nn_editbuf_t *dst, const nn_editbuf_t *src); void nn_editbuf_setpos(nn_editbuf_t *buf, size_t pos); char * nn_editbuf_get_string(nn_editbuf_t *buf, size_t start, size_t end); typedef struct { size_t len; char *str; } nn_strtuple_t; nn_strtuple_t *nn_strtuple_new(size_t, char *); void nn_strtuple_free(nn_strtuple_t *); BOOL str_get_timestamp(char *str, size_t len, const char *fmt); char * str_trim_left(char *buf); char * str_trim_right(char *buf); int str_compare(const void *s1, const void *s2); #endif