snadd() function;
This commit is contained in:
parent
f5c0db55ac
commit
e78adae9d6
@ -97,6 +97,17 @@ extern "C" {
|
||||
*/
|
||||
CSTRING *sadd(CSTRING *s, char *a);
|
||||
|
||||
/**
|
||||
* Concatenate the len bytes of the second argument to the CSTRING
|
||||
* passed in the first.
|
||||
* A NULL return value indicates that something went wrong and that
|
||||
* sexp_errno should be checked for the cause. The contents of s are
|
||||
* left alone. As such, the caller should check the pointer returned
|
||||
* before overwriting the value of s, as this may result in a memory
|
||||
* leak if an error condition occurs.
|
||||
*/
|
||||
CSTRING *snadd(CSTRING *s, char *a, size_t len);
|
||||
|
||||
/**
|
||||
* Append a character to the end of the CSTRING.
|
||||
* A NULL return value indicates that something went wrong and that
|
||||
|
@ -86,7 +86,18 @@ CSTRING *snew(size_t s) {
|
||||
return cs;
|
||||
}
|
||||
|
||||
CSTRING *sadd(CSTRING *s, char *a) {
|
||||
CSTRING *sadd(CSTRING *s, char *a)
|
||||
{
|
||||
size_t len = strlen(a);
|
||||
|
||||
if(!s) return NULL;
|
||||
if(!a || !len) return s;
|
||||
|
||||
return snadd(s, a, len);
|
||||
}
|
||||
|
||||
CSTRING *snadd(CSTRING *s, char *a, size_t len)
|
||||
{
|
||||
size_t alen;
|
||||
char *newbase;
|
||||
|
||||
@ -100,7 +111,7 @@ CSTRING *sadd(CSTRING *s, char *a) {
|
||||
return s;
|
||||
}
|
||||
|
||||
alen = strlen(a);
|
||||
alen = len;
|
||||
|
||||
if (s->curlen + alen >= s->len) {
|
||||
#ifdef __cplusplus
|
||||
@ -125,9 +136,10 @@ CSTRING *sadd(CSTRING *s, char *a) {
|
||||
s->base = newbase;
|
||||
}
|
||||
|
||||
memcpy(&s->base[s->curlen],a,alen);
|
||||
memcpy(&s->base[s->curlen], a, alen);
|
||||
s->curlen += alen;
|
||||
s->base[s->curlen] = 0;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user