wsbuffer.c

来自「mms client」· C语言 代码 · 共 98 行

C
98
字号
/* * * wsbuffer.c * * Author: Markku Rossi <mtr@iki.fi> * * Copyright (c) 1999-2000 WAPIT OY LTD. *		 All rights reserved. * * A multipurpose buffer. * */#include "wsint.h"/********************* Global functions *********************************/void ws_buffer_init(WsBuffer *buffer){    buffer->len = 0;    buffer->data = NULL;}void ws_buffer_uninit(WsBuffer *buffer){    ws_free(buffer->data);    buffer->len = 0;    buffer->data = NULL;}WsBuffer *ws_buffer_alloc(){    return ws_calloc(1, sizeof(WsBuffer));}void ws_buffer_free(WsBuffer *buffer){    ws_free(buffer->data);    ws_free(buffer);}WsBool ws_buffer_append(WsBuffer *buffer, unsigned char *data, size_t len){    unsigned char *p;    if (!ws_buffer_append_space(buffer, &p, len))        return WS_FALSE;    memcpy(p, data, len);    return WS_TRUE;}WsBool ws_buffer_append_space(WsBuffer *buffer, unsigned char **p, size_t size){    unsigned char *ndata = ws_realloc(buffer->data, buffer->len + size);    if (ndata == NULL)        return WS_FALSE;    buffer->data = ndata;    if (p)        *p = buffer->data + buffer->len;    buffer->len += size;    return WS_TRUE;}unsigned char *ws_buffer_ptr(WsBuffer *buffer){    return buffer->data;}size_t ws_buffer_len(WsBuffer *buffer){    return buffer->len;}unsigned char *ws_buffer_steal(WsBuffer *buffer){    unsigned char *p = buffer->data;    buffer->data = NULL;    buffer->len = 0;    return p;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?