X Tutup
/* * Copyright (C) 2000, 2001, 2013 Gregory Trubetskoy * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * Originally developed by Gregory Trubetskoy. * * * * See accompanying documentation and source code comments * for details. * */ #include "psp_string.h" #define psp_string_alloc(__pspstring, __length) \ if ((__length) > (__pspstring)->allocated) { \ (__pspstring)->blob = realloc((__pspstring)->blob, (__length) + PSP_STRING_BLOCK); \ (__pspstring)->allocated = (__length) + PSP_STRING_BLOCK; \ } void psp_string_0(psp_string *s) { if (!s->length) { return; } s->blob[s->length] = '\0'; } void psp_string_appendl(psp_string *s, char *text, size_t length) { int newlen = s->length + length; if (text == NULL) { return; } psp_string_alloc(s, newlen); memcpy(s->blob + s->length, text, length); s->length = newlen; } void psp_string_append(psp_string *s, char *text) { if (text == NULL) { return; } psp_string_appendl(s, text, strlen(text)); } void psp_string_appendc(psp_string *s, char c) { int newlen = s->length + 1; psp_string_alloc(s, newlen); s->blob[s->length] = c; s->length = newlen; } void psp_string_clear(psp_string *s) { memset(s->blob, 0, s->length); s->length = 0; } void psp_string_free(psp_string *s) { free(s->blob); s->blob = NULL; s->length = 0; s->allocated = 0; }
X Tutup