summaryrefslogtreecommitdiffstats
path: root/tinySAK/src/tsk_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinySAK/src/tsk_string.c')
-rwxr-xr-xtinySAK/src/tsk_string.c529
1 files changed, 265 insertions, 264 deletions
diff --git a/tinySAK/src/tsk_string.c b/tinySAK/src/tsk_string.c
index 301eed3..2ee5c6d 100755
--- a/tinySAK/src/tsk_string.c
+++ b/tinySAK/src/tsk_string.c
@@ -58,23 +58,23 @@
*/
tsk_string_t* tsk_string_create(const char* str)
{
- return (tsk_string_t*)tsk_object_new(tsk_string_def_t, str);
+ return (tsk_string_t*)tsk_object_new(tsk_string_def_t, str);
}
int tsk_string_pred_icmp(const tsk_list_item_t* item, const void* str)
{
- if (item && str){
- return tsk_stricmp(TSK_STRING_STR(item->data), (const char*)str);
- }
- return -1;
+ if (item && str) {
+ return tsk_stricmp(TSK_STRING_STR(item->data), (const char*)str);
+ }
+ return -1;
}
int tsk_string_pred_cmp(const tsk_list_item_t* item, const void* str)
{
- if (item && str){
- return tsk_strcmp(TSK_STRING_STR(item->data), (const char*)str);
- }
- return -1;
+ if (item && str) {
+ return tsk_strcmp(TSK_STRING_STR(item->data), (const char*)str);
+ }
+ return -1;
}
/**@ingroup tsk_string_group
@@ -84,8 +84,8 @@ int tsk_string_pred_cmp(const tsk_list_item_t* item, const void* str)
*/
char tsk_b10tob16(char c)
{
- static char HEX[] = "0123456789abcdef";
- return HEX[c & 15];
+ static char HEX[] = "0123456789abcdef";
+ return HEX[c & 15];
}
/**@ingroup tsk_string_group
@@ -95,7 +95,7 @@ char tsk_b10tob16(char c)
*/
char tsk_b16tob10(char c)
{
- return isdigit(c) ? c - '0' : tolower(c) - 'a' + 10;
+ return isdigit(c) ? c - '0' : tolower(c) - 'a' + 10;
}
/**@ingroup tsk_string_group
@@ -112,10 +112,10 @@ char tsk_b16tob10(char c)
*/
int tsk_stricmp(const char * str1, const char * str2)
{
- return (str1 && str2) ?
- ((tolower(*str1) == tolower(*str2)) ? stricmp(str1, str2) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
- :
- ((!str1 && !str2) ? 0 : -1);
+ return (str1 && str2) ?
+ ((tolower(*str1) == tolower(*str2)) ? stricmp(str1, str2) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
+ :
+ ((!str1 && !str2) ? 0 : -1);
}
/**@ingroup tsk_string_group
@@ -133,20 +133,20 @@ int tsk_stricmp(const char * str1, const char * str2)
*/
int tsk_strnicmp(const char * str1, const char * str2, tsk_size_t n)
{
- return (str1 && str2 && n) ?
- ((tolower(*str1) == tolower(*str2)) ? strnicmp(str1, str2, n) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
- :
- ((!str1 && !str2) ? 0 : -1);
+ return (str1 && str2 && n) ?
+ ((tolower(*str1) == tolower(*str2)) ? strnicmp(str1, str2, n) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
+ :
+ ((!str1 && !str2) ? 0 : -1);
}
/**@ingroup tsk_string_group
*/
int tsk_strcmp(const char * str1, const char * str2)
{
- return (str1 && str2) ?
- ((*str1 == *str2) ? stricmp(str1, str2) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
- :
- ((!str1 && !str2) ? 0 : -1);
+ return (str1 && str2) ?
+ ((*str1 == *str2) ? stricmp(str1, str2) : (*str1 - *str2)) /* Compare first charaters before doing complete comparison */
+ :
+ ((!str1 && !str2) ? 0 : -1);
}
/**@ingroup tsk_string_group
@@ -164,7 +164,7 @@ int tsk_strcmp(const char * str1, const char * str2)
*/
int tsk_strncmp(const char * str1, const char * str2, tsk_size_t n)
{
- return (str1 && str2) ? ((*str1 != *str2) ? -1 : strncmp(str1, str2, n)) : ((!str1 && !str2) ? 0 : -1);
+ return (str1 && str2) ? ((*str1 != *str2) ? -1 : strncmp(str1, str2, n)) : ((!str1 && !str2) ? 0 : -1);
}
/**@ingroup tsk_string_group
@@ -174,10 +174,10 @@ int tsk_strncmp(const char * str1, const char * str2, tsk_size_t n)
*/
char* tsk_strdup(const char *s1)
{
- if (s1){
- return strdup(s1);
- }
- return tsk_null;
+ if (s1) {
+ return strdup(s1);
+ }
+ return tsk_null;
}
/** Duplicates the first @a n chars of @a s1.
@@ -187,18 +187,18 @@ char* tsk_strdup(const char *s1)
**/
char* tsk_strndup(const char *s1, tsk_size_t n)
{
- char *ret = tsk_null;
+ char *ret = tsk_null;
- if (s1 && n){
- tsk_size_t len = tsk_strlen(s1);
- tsk_size_t nret = (n > len) ? (len) : (n);
+ if (s1 && n) {
+ tsk_size_t len = tsk_strlen(s1);
+ tsk_size_t nret = (n > len) ? (len) : (n);
- if ((ret = (char*)tsk_calloc((nret + 1), sizeof(uint8_t)))){
- memcpy(ret, s1, nret);
- }
- }
+ if ((ret = (char*)tsk_calloc((nret + 1), sizeof(uint8_t)))) {
+ memcpy(ret, s1, nret);
+ }
+ }
- return ret;
+ return ret;
}
/**@ingroup tsk_string_group
@@ -210,7 +210,7 @@ char* tsk_strndup(const char *s1, tsk_size_t n)
*/
tsk_bool_t tsk_strcontains(const char * str, tsk_size_t size, const char * substring)
{
- return (tsk_strindexOf(str, size, substring) >= 0);
+ return (tsk_strindexOf(str, size, substring) >= 0);
}
/**@ingroup tsk_string_group
@@ -223,42 +223,42 @@ tsk_bool_t tsk_strcontains(const char * str, tsk_size_t size, const char * subst
*/
int tsk_strindexOf(const char * str, tsk_size_t size, const char * substring)
{
- if (str && substring){
- const char* sub_start = strstr(str, substring);
- if (sub_start && (sub_start < (str + size))) {
- int ret;
- tsk_subsat_int32_ptr(sub_start, str, &ret);
- return ret;
- }
- }
- return -1;
+ if (str && substring) {
+ const char* sub_start = strstr(str, substring);
+ if (sub_start && (sub_start < (str + size))) {
+ int ret;
+ tsk_subsat_int32_ptr(sub_start, str, &ret);
+ return ret;
+ }
+ }
+ return -1;
}
/**@ingroup tsk_string_group
*/
int tsk_strLastIndexOf(const char * str, tsk_size_t size, const char * substring)
{
- if (str && substring){
- tsk_size_t sub_size = tsk_strlen(substring);
- const char* last_sub_start = tsk_null;
- const char* sub_start = strstr(str, substring);
- const char* end = (str + size);
- while (sub_start && (sub_start < end)) {
- last_sub_start = sub_start;
- if ((sub_start + sub_size) < end){
- sub_start = strstr((sub_start + sub_size), substring);
- }
- else {
- break;
- }
- }
- if (last_sub_start) {
- int ret;
- tsk_subsat_int32_ptr(last_sub_start, str, &ret);
- return ret;
- }
- }
- return -1;
+ if (str && substring) {
+ tsk_size_t sub_size = tsk_strlen(substring);
+ const char* last_sub_start = tsk_null;
+ const char* sub_start = strstr(str, substring);
+ const char* end = (str + size);
+ while (sub_start && (sub_start < end)) {
+ last_sub_start = sub_start;
+ if ((sub_start + sub_size) < end) {
+ sub_start = strstr((sub_start + sub_size), substring);
+ }
+ else {
+ break;
+ }
+ }
+ if (last_sub_start) {
+ int ret;
+ tsk_subsat_int32_ptr(last_sub_start, str, &ret);
+ return ret;
+ }
+ }
+ return -1;
}
/**@ingroup tsk_string_group
@@ -270,49 +270,49 @@ int tsk_strLastIndexOf(const char * str, tsk_size_t size, const char * substring
*/
void tsk_strcat(char** destination, const char* source)
{
- tsk_strncat(destination, source, tsk_strlen(source));
+ tsk_strncat(destination, source, tsk_strlen(source));
}
/**@ingroup tsk_string_group
*/
void tsk_strcat_2(char** destination, const char* format, ...)
{
- char* temp = tsk_null;
- int len;
- va_list ap;
+ char* temp = tsk_null;
+ int len;
+ va_list ap;
- /* initialize variable arguments */
- va_start(ap, format);
- /* compute */
- if ((len = tsk_sprintf_2(&temp, format, &ap))){
- tsk_strncat(destination, temp, len);
- }
- /* reset variable arguments */
- va_end(ap);
- TSK_FREE(temp);
+ /* initialize variable arguments */
+ va_start(ap, format);
+ /* compute */
+ if ((len = tsk_sprintf_2(&temp, format, &ap))) {
+ tsk_strncat(destination, temp, len);
+ }
+ /* reset variable arguments */
+ va_end(ap);
+ TSK_FREE(temp);
}
/**@ingroup tsk_string_group
*/
void tsk_strncat(char** destination, const char* source, tsk_size_t n)
{
- tsk_size_t index = 0;
- tsk_size_t tsk_size_to_cat = (n > tsk_strlen(source)) ? tsk_strlen(source) : n;
+ tsk_size_t index = 0;
+ tsk_size_t tsk_size_to_cat = (n > tsk_strlen(source)) ? tsk_strlen(source) : n;
- if (!source || !n) {
- return;
- }
+ if (!source || !n) {
+ return;
+ }
- if (!*destination) {
- *destination = (char*)tsk_malloc(tsk_size_to_cat + 1);
- strncpy(*destination, source, tsk_size_to_cat + 1);
- }
- else {
- index = tsk_strlen(*destination);
- *destination = (char*)tsk_realloc(*destination, index + tsk_size_to_cat + 1);
- strncpy(((*destination) + index), source, tsk_size_to_cat + 1);
- }
- (*destination)[index + tsk_size_to_cat] = '\0';
+ if (!*destination) {
+ *destination = (char*)tsk_malloc(tsk_size_to_cat + 1);
+ strncpy(*destination, source, tsk_size_to_cat + 1);
+ }
+ else {
+ index = tsk_strlen(*destination);
+ *destination = (char*)tsk_realloc(*destination, index + tsk_size_to_cat + 1);
+ strncpy(((*destination) + index), source, tsk_size_to_cat + 1);
+ }
+ (*destination)[index + tsk_size_to_cat] = '\0';
}
/**@ingroup tsk_string_group
@@ -329,68 +329,68 @@ void tsk_strncat(char** destination, const char* source, tsk_size_t n)
*/
int tsk_sprintf(char** str, const char* format, ...)
{
- int len;
- va_list ap;
+ int len;
+ va_list ap;
- /* initialize variable arguments */
- va_start(ap, format);
- /* compute */
- len = tsk_sprintf_2(str, format, &ap);
- /* reset variable arguments */
- va_end(ap);
+ /* initialize variable arguments */
+ va_start(ap, format);
+ /* compute */
+ len = tsk_sprintf_2(str, format, &ap);
+ /* reset variable arguments */
+ va_end(ap);
- return len;
+ return len;
}
/**@ingroup tsk_string_group
*/
int tsk_sprintf_2(char** str, const char* format, va_list* ap)
{
- int len = 0;
- va_list ap2;
+ int len = 0;
+ va_list ap2;
- /* free previous value */
- if (*str){
- tsk_free((void**)str);
- }
+ /* free previous value */
+ if (*str) {
+ tsk_free((void**)str);
+ }
- /* needed for 64bit platforms where vsnprintf will change the va_list */
- tsk_va_copy(ap2, *ap);
+ /* needed for 64bit platforms where vsnprintf will change the va_list */
+ tsk_va_copy(ap2, *ap);
- /* compute destination len for windows mobile
- */
+ /* compute destination len for windows mobile
+ */
#if defined(_WIN32_WCE)
- {
- int n;
- len = (tsk_strlen(format) * 2);
- *str = (char*)tsk_calloc(1, len+1);
- for(;;){
- if( (n = vsnprintf(*str, len, format, *ap)) >= 0 && (n<len) ){
- len = n;
- goto done;
- }
- else{
- len += 10;
- *str = (char*)tsk_realloc(*str, len+1);
- }
- }
- done:
- (*str)[len] = '\0';
- }
+ {
+ int n;
+ len = (tsk_strlen(format) * 2);
+ *str = (char*)tsk_calloc(1, len+1);
+ for(;;) {
+ if( (n = vsnprintf(*str, len, format, *ap)) >= 0 && (n<len) ) {
+ len = n;
+ goto done;
+ }
+ else {
+ len += 10;
+ *str = (char*)tsk_realloc(*str, len+1);
+ }
+ }
+done:
+ (*str)[len] = '\0';
+ }
#else
- len = vsnprintf(0, 0, format, *ap);
- *str = (char*)tsk_calloc(1, len + 1);
- vsnprintf(*str, len
+ len = vsnprintf(0, 0, format, *ap);
+ *str = (char*)tsk_calloc(1, len + 1);
+ vsnprintf(*str, len
#if !defined(_MSC_VER) || defined(__GNUC__)
- +1
+ +1
#endif
- , format, ap2);
+ , format, ap2);
#endif
- va_end(ap2);
+ va_end(ap2);
- return len;
- }
+ return len;
+}
/**@ingroup tsk_string_group
* Updates the value of @a str.
@@ -399,17 +399,17 @@ int tsk_sprintf_2(char** str, const char* format, va_list* ap)
*/
void tsk_strupdate(char** str, const char* newval)
{
- if (str && *str != newval){ // do nothing if same memory address
- // use realloc() to keep same memory address
- tsk_size_t length = tsk_strlen(newval);
- if (!length) {
- tsk_free((void**)str);
- }
- else if ((*str = (char*)tsk_realloc(*str, length + 1))){
- memcpy(*str, newval, length);
- (*str)[length] = '\0';
- }
- }
+ if (str && *str != newval) { // do nothing if same memory address
+ // use realloc() to keep same memory address
+ tsk_size_t length = tsk_strlen(newval);
+ if (!length) {
+ tsk_free((void**)str);
+ }
+ else if ((*str = (char*)tsk_realloc(*str, length + 1))) {
+ memcpy(*str, newval, length);
+ (*str)[length] = '\0';
+ }
+ }
}
@@ -419,15 +419,17 @@ void tsk_strupdate(char** str, const char* newval)
*/
void tsk_strtrim_left(char **str)
{
- if (str && *str) {
- tsk_size_t count = 0;
- while (isspace(*((*str) + count))) count++;
- if (count) {
- tsk_size_t len = tsk_strlen((*str));
- memmove((*str), (*str) + count, (len - count));
- (*str)[len - count] = '\0';
- }
- }
+ if (str && *str) {
+ tsk_size_t count = 0;
+ while (isspace(*((*str) + count))) {
+ count++;
+ }
+ if (count) {
+ tsk_size_t len = tsk_strlen((*str));
+ memmove((*str), (*str) + count, (len - count));
+ (*str)[len - count] = '\0';
+ }
+ }
}
/**@ingroup tsk_string_group
@@ -436,13 +438,15 @@ void tsk_strtrim_left(char **str)
*/
void tsk_strtrim_right(char **str)
{
- if (str && *str){
- tsk_size_t size;
- if ((size = tsk_strlen(*str))){
- while (isspace(*((*str) + size - 1))) size--;
- *(*str + size) = '\0';
- }
- }
+ if (str && *str) {
+ tsk_size_t size;
+ if ((size = tsk_strlen(*str))) {
+ while (isspace(*((*str) + size - 1))) {
+ size--;
+ }
+ *(*str + size) = '\0';
+ }
+ }
}
/**@ingroup tsk_string_group
* Removes all occurrences of white space characters from the beginning and end of @a str.
@@ -450,10 +454,10 @@ void tsk_strtrim_right(char **str)
*/
void tsk_strtrim(char **str)
{
- // left
- tsk_strtrim_left(str);
- // right
- tsk_strtrim_right(str);
+ // left
+ tsk_strtrim_left(str);
+ // right
+ tsk_strtrim_right(str);
}
/**@ingroup tsk_string_group
@@ -463,7 +467,7 @@ void tsk_strtrim(char **str)
*/
void tsk_strquote(char **str)
{
- tsk_strquote_2(str, '"', '"');
+ tsk_strquote_2(str, '"', '"');
}
/**@ingroup tsk_string_group
@@ -474,12 +478,12 @@ void tsk_strquote(char **str)
*/
void tsk_strquote_2(char **str, char lquote, char rquote)
{
- if (str && *str){
- char *result = tsk_null;
- tsk_sprintf(&result, "%c%s%c", lquote, *str, rquote);
- tsk_free((void**)str);
- *str = result;
- }
+ if (str && *str) {
+ char *result = tsk_null;
+ tsk_sprintf(&result, "%c%s%c", lquote, *str, rquote);
+ tsk_free((void**)str);
+ *str = result;
+ }
}
/**@ingroup tsk_string_group
@@ -489,7 +493,7 @@ void tsk_strquote_2(char **str, char lquote, char rquote)
*/
void tsk_strunquote(char **str)
{
- tsk_strunquote_2(str, '"', '"');
+ tsk_strunquote_2(str, '"', '"');
}
/**@ingroup tsk_string_group
@@ -501,13 +505,13 @@ void tsk_strunquote(char **str)
*/
void tsk_strunquote_2(char **str, char lquote, char rquote)
{
- if (str && *str) {
- tsk_size_t size = tsk_strlen(*str);
- if (size >= 2 && **str == lquote && *((*str) + size - 1) == rquote){
- memmove((*str), (*str) + 1, (size - 2));
- *((*str) + size - 2) = '\0';
- }
- }
+ if (str && *str) {
+ tsk_size_t size = tsk_strlen(*str);
+ if (size >= 2 && **str == lquote && *((*str) + size - 1) == rquote) {
+ memmove((*str), (*str) + 1, (size - 2));
+ *((*str) + size - 2) = '\0';
+ }
+ }
}
/**@ingroup tsk_string_group
@@ -517,36 +521,36 @@ void tsk_strunquote_2(char **str, char lquote, char rquote)
*/
void tsk_itoa(int64_t i, tsk_istr_t *result)
{
- memset(result, 0, sizeof(*result));
- sprintf(*result, "%lld", i);
+ memset(result, 0, sizeof(*result));
+ sprintf(*result, "%lld", i);
}
/**@ingroup tsk_string_group
*/
int64_t tsk_atoll(const char* str)
{
- // FIXME: use HAVE_ATOLL and use macro instead of function
- if (str){
+ // FIXME: use HAVE_ATOLL and use macro instead of function
+ if (str) {
#if defined(_MSC_VER)
- return _atoi64(str);
+ return _atoi64(str);
#elif defined(__GNUC__)
- return atoll(str);
+ return atoll(str);
#else
- return atol(str);
+ return atol(str);
#endif
- }
- return 0;
+ }
+ return 0;
}
/**@ingroup tsk_string_group
*/
long tsk_atox(const char* str)
{
- long ret = 0;
- if (str){
- sscanf(str, "%lx", &ret);
- }
- return ret;
+ long ret = 0;
+ if (str) {
+ sscanf(str, "%lx", &ret);
+ }
+ return ret;
}
/**@ingroup tsk_string_group
@@ -556,8 +560,8 @@ long tsk_atox(const char* str)
**/
void tsk_strrandom(tsk_istr_t *result)
{
- static uint64_t __counter = 1;
- tsk_itoa((tsk_time_now() ^ (rand())) ^ ++__counter, result);
+ static uint64_t __counter = 1;
+ tsk_itoa((tsk_time_now() ^ (rand())) ^ ++__counter, result);
}
/**@ingroup tsk_string_group
@@ -572,13 +576,13 @@ void tsk_strrandom(tsk_istr_t *result)
**/
void tsk_str_from_hex(const uint8_t *hex, tsk_size_t size, char* str)
{
- static const char *TSK_HEXA_VALUES = { "0123456789abcdef" };
- tsk_size_t i;
+ static const char *TSK_HEXA_VALUES = { "0123456789abcdef" };
+ tsk_size_t i;
- for (i = 0; i < size; i++){
- str[2 * i] = TSK_HEXA_VALUES[(*(hex + i) & 0xf0) >> 4];
- str[(2 * i) + 1] = TSK_HEXA_VALUES[(*(hex + i) & 0x0f)];
- }
+ for (i = 0; i < size; i++) {
+ str[2 * i] = TSK_HEXA_VALUES[(*(hex + i) & 0xf0) >> 4];
+ str[(2 * i) + 1] = TSK_HEXA_VALUES[(*(hex + i) & 0x0f)];
+ }
}
/**@ingroup tsk_string_group
@@ -590,8 +594,8 @@ void tsk_str_from_hex(const uint8_t *hex, tsk_size_t size, char* str)
**/
void tsk_str_to_hex(const char *str, tsk_size_t size, uint8_t* hex)
{
- // to avoid SIGBUS error when memory is misaligned do not use sscanf("%2x")
- TSK_DEBUG_FATAL("Not implemented.");
+ // to avoid SIGBUS error when memory is misaligned do not use sscanf("%2x")
+ TSK_DEBUG_FATAL("Not implemented.");
}
@@ -600,36 +604,30 @@ void tsk_str_to_hex(const char *str, tsk_size_t size, uint8_t* hex)
TINYSAK_API std::vector<char> rt_tsk_str_to_native(Platform::String^ str)
{
- if(str != nullptr && !str->IsEmpty())
- {
- int len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), nullptr, 0, nullptr, nullptr);
- if (len > 0)
- {
- std::vector<char> vec(len + 1);
- if (WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), vec.data(), len, nullptr, nullptr) == len)
- {
- return std::move(vec);
- }
- }
- }
- return std::move(std::vector<char>(0));
+ if(str != nullptr && !str->IsEmpty()) {
+ int len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), nullptr, 0, nullptr, nullptr);
+ if (len > 0) {
+ std::vector<char> vec(len + 1);
+ if (WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), vec.data(), len, nullptr, nullptr) == len) {
+ return std::move(vec);
+ }
+ }
+ }
+ return std::move(std::vector<char>(0));
}
TINYSAK_API Platform::String^ rt_tsk_str_to_managed(char const* str)
{
- if(str)
- {
- int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, nullptr, 0);
- if (len > 0)
- {
- std::vector<wchar_t> vec(len);
- if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, vec.data(), len) == len)
- {
- return ref new Platform::String(vec.data());
- }
- }
- }
- return nullptr;
+ if(str) {
+ int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, nullptr, 0);
+ if (len > 0) {
+ std::vector<wchar_t> vec(len);
+ if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, vec.data(), len) == len) {
+ return ref new Platform::String(vec.data());
+ }
+ }
+ }
+ return nullptr;
}
#endif /* TSK_UNDER_WINDOWS_RT */
@@ -644,42 +642,45 @@ TINYSAK_API Platform::String^ rt_tsk_str_to_managed(char const* str)
//
static tsk_object_t* tsk_string_ctor(tsk_object_t * self, va_list * app)
{
- tsk_string_t *string = (tsk_string_t*)self;
- const char *value = va_arg(*app, const char *);
- if (value){
- string->value = tsk_strdup(value);
- }
- return self;
+ tsk_string_t *string = (tsk_string_t*)self;
+ const char *value = va_arg(*app, const char *);
+ if (value) {
+ string->value = tsk_strdup(value);
+ }
+ return self;
}
static tsk_object_t* tsk_string_dtor(tsk_object_t * self)
{
- tsk_string_t *string = (tsk_string_t*)self;
- if (string){
- TSK_FREE(string->value);
- }
+ tsk_string_t *string = (tsk_string_t*)self;
+ if (string) {
+ TSK_FREE(string->value);
+ }
- return self;
+ return self;
}
static int tsk_string_cmp(const tsk_object_t *_s1, const tsk_object_t *_s2)
{
- const tsk_string_t *s1 = (const tsk_string_t *)_s1;
- const tsk_string_t *s2 = (const tsk_string_t *)_s2;
-
- if (s1 && s2){
- return tsk_stricmp(s1->value, s2->value);
- }
- else if (!s1 && !s2) return 0;
- else return -1;
-}
-
-static const tsk_object_def_t tsk_string_def_s =
-{
- sizeof(tsk_string_t),
- tsk_string_ctor,
- tsk_string_dtor,
- tsk_string_cmp,
+ const tsk_string_t *s1 = (const tsk_string_t *)_s1;
+ const tsk_string_t *s2 = (const tsk_string_t *)_s2;
+
+ if (s1 && s2) {
+ return tsk_stricmp(s1->value, s2->value);
+ }
+ else if (!s1 && !s2) {
+ return 0;
+ }
+ else {
+ return -1;
+ }
+}
+
+static const tsk_object_def_t tsk_string_def_s = {
+ sizeof(tsk_string_t),
+ tsk_string_ctor,
+ tsk_string_dtor,
+ tsk_string_cmp,
};
const tsk_object_def_t *tsk_string_def_t = &tsk_string_def_s;
OpenPOWER on IntegriCloud