Beispiel #1
0
str_buf *
str_buf_concat(str_buf * buf1, str_buf * buf2)
{
    str_buf * buf;

    if ( buf1 == NULL ) {
        if ( buf2 == NULL ) 
            buf = str_buf_alloc(0);
        else
            buf = str_buf_alloc_substr(buf2->data, buf2->length);
    } 
    else if ( buf2 == NULL ) {
        buf = str_buf_alloc_substr(buf1->data, buf1->length);
    }
    else {
        buf = str_buf_alloc( buf1->length + buf2->length );

        if ( buf == NULL ) return NULL ;

        strcpy(buf->data, buf1->data);
        strcpy(buf->data + buf1->length, buf2->data);
        buf->length = buf->size;
    }

    return buf;
}
Beispiel #2
0
void
test_str_buf_alloc_substr(){
    str_buf *b1;
    str_buf *b2;
	b1 = str_buf_alloc_substr("abcdef",4);
	b2 = str_buf_alloc_substr("abcdef",4);
	assert(strcmp(str_buf_head(b1) , "abcd")==0);
	assert(str_buf_equals(b1,b2));
	assert(str_buf_len(b1)==4);
	str_buf_free(b1);
	str_buf_free(b2);
}
Beispiel #3
0
str_buf *
str_buf_alloc_str(const char * str)
{
    return  str_buf_alloc_substr( str, strlen(str) );   
}