#include #include #include 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); }