31 lines
934 B
C
31 lines
934 B
C
#include <akerror.h>
|
|
#include <akgl/staticstring.h>
|
|
#include <errno.h>
|
|
|
|
akerr_ErrorContext *akgl_string_initialize(akgl_String *obj, char *init)
|
|
{
|
|
PREPARE_ERROR(errctx);
|
|
FAIL_ZERO_RETURN(errctx, obj, AKERR_NULLPOINTER, "Attempted to initialize NULL string reference");
|
|
if ( init != NULL ) {
|
|
strncpy((char *)&obj->data, init, AKGL_MAX_STRING_LENGTH);
|
|
} else {
|
|
memset(&obj->data, 0x00, sizeof(akgl_String));
|
|
}
|
|
obj->refcount = 1;
|
|
SUCCEED_RETURN(errctx);
|
|
}
|
|
|
|
akerr_ErrorContext *akgl_string_copy(akgl_String *src, akgl_String *dst, int count)
|
|
{
|
|
PREPARE_ERROR(e);
|
|
FAIL_ZERO_RETURN(e, src, AKERR_NULLPOINTER, "NULL argument");
|
|
FAIL_ZERO_RETURN(e, dst, AKERR_NULLPOINTER, "NULL argument");
|
|
if ( count == 0 ) {
|
|
count = AKGL_MAX_STRING_LENGTH;
|
|
}
|
|
if ( (char *)dst->data != strncpy((char *)&src->data, (char *)&dst->data, count) ) {
|
|
FAIL_RETURN(e, errno, "strncpy");
|
|
}
|
|
SUCCEED_RETURN(e);
|
|
}
|