Mercurial > hg > nnchat
diff nnchat.c @ 65:e763ef5cfd53
Move more functions to libnnchat.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 11 Nov 2008 23:57:49 +0200 |
parents | 6a3a917303e4 |
children | 4086088e95dc |
line wrap: on
line diff
--- a/nnchat.c Tue Nov 11 22:33:35 2008 +0200 +++ b/nnchat.c Tue Nov 11 23:57:49 2008 +0200 @@ -148,152 +148,6 @@ } -typedef struct { - char **data; - size_t n, size; -} ringbuf_t; - - -ringbuf_t * newRingBuf(const size_t size) -{ - ringbuf_t *res = th_calloc(1, sizeof(ringbuf_t)); - - res->data = (char **) th_malloc(size * sizeof(char *)); - res->size = size; - res->n = 0; - - return res; -} - - -void freeRingBuf(ringbuf_t *buf) -{ - size_t i; - - for (i = 0; i < buf->n; i++) - th_free(buf->data[i]); - - th_free(buf->data); - th_free(buf); -} - - -void addRingBuf(ringbuf_t *buf, const char *str) -{ - if (buf->n < buf->size) { - buf->data[buf->n] = strdup(str); - buf->n++; - } else { - th_free(buf->data[0]); - memmove(&(buf->data[0]), &(buf->data[1]), buf->size - 1); - buf->data[buf->size - 1] = strdup(str); - } -} - - -typedef struct { - ssize_t pos, len, size; - char *data; -} editbuf_t; - - -int writeBuf(editbuf_t *buf, ssize_t pos, int ch) -{ - /* Check arguments */ - if (buf->len+1 >= buf->size) return -3; - - if (pos < 0) - return -1; - else if (pos >= buf->len) { - buf->data[buf->len++] = ch; - } else { - buf->data[pos] = ch; - } - return 0; -} - -int insertBuf(editbuf_t *buf, ssize_t pos, int ch) -{ - /* Check arguments */ - if (buf->len+1 >= buf->size) return -3; - - if (pos < 0) - return -1; - else if (pos >= buf->len) { - buf->data[buf->len] = ch; - } else { - memmove(&(buf->data[pos+1]), &(buf->data[pos]), buf->len - pos + 1); - buf->data[pos] = ch; - } - buf->len++; - return 0; -} - -int deleteBuf(editbuf_t *buf, ssize_t pos) -{ - /* Check arguments */ - if (pos < 0) - return -1; - else if (pos < buf->len) { - memmove(&(buf->data[pos]), &(buf->data[pos+1]), buf->len - pos); - buf->len--; - return 0; - } else - return -2; -} - -void clearBuf(editbuf_t *buf) -{ - buf->len = 0; - buf->pos = 0; -} - -editbuf_t * newBuf(ssize_t n) -{ - editbuf_t *res = th_calloc(1, sizeof(editbuf_t)); - - res->data = (char *) th_malloc(n); - res->size = n; - - return res; -} - -void freeBuf(editbuf_t *buf) -{ - if (buf) { - th_free(buf->data); - th_free(buf); - } -} - -editbuf_t * copyBuf(editbuf_t *src) -{ - editbuf_t *res; - - assert(src != NULL); - - if (src == NULL) return NULL; - - if ((res = newBuf(src->size)) == NULL) - return NULL; - - memcpy(res->data, src->data, src->size); - res->pos = res->len = src->len; - - return res; -} - -void setBufPos(editbuf_t *buf, ssize_t pos) -{ - /* Check arguments */ - if (pos < 0) - buf->pos = 0; - else if (pos >= buf->len) - buf->pos = buf->len; - else - buf->pos = pos; -} - void updateStatus(BOOL insertMode) { char tmpStr[128] = "";