/** * @file staticstring.c * @brief Implements the staticstring subsystem. */ #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 *dest, int count) { PREPARE_ERROR(errctx); FAIL_ZERO_RETURN(errctx, src, AKERR_NULLPOINTER, "NULL argument"); FAIL_ZERO_RETURN(errctx, dest, AKERR_NULLPOINTER, "NULL argument"); if ( count == 0 ) { count = AKGL_MAX_STRING_LENGTH; } if ( (char *)dest->data != strncpy((char *)&dest->data, (char *)&src->data, count) ) { FAIL_RETURN(errctx, errno, "strncpy"); } SUCCEED_RETURN(errctx); }