Mercurial > hg > nnchat
diff th_string.c @ 81:69aed051f84d
Synced th-libs.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 20 Apr 2009 22:02:37 +0300 |
parents | e36df57c5b0f |
children | fe4d5f3b486c |
line wrap: on
line diff
--- a/th_string.c Fri Jan 30 01:54:51 2009 +0200 +++ b/th_string.c Mon Apr 20 22:02:37 2009 +0300 @@ -18,15 +18,15 @@ */ char *th_strdup(const char *s) { - char *res; - if (s == NULL) - return NULL; - - if ((res = th_malloc(strlen(s) + 1)) == NULL) - return NULL; - - strcpy(res, s); - return res; + char *res; + if (s == NULL) + return NULL; + + if ((res = th_malloc(strlen(s) + 1)) == NULL) + return NULL; + + strcpy(res, s); + return res; } @@ -34,69 +34,69 @@ */ char *th_stralloc(const size_t l) { - assert(l > 0); - return th_malloc(sizeof(char) * l); + assert(l > 0); + return th_malloc(sizeof(char) * l); } char *th_strrealloc(char * s, const size_t l) { - assert(l > 0); - return th_realloc(s, sizeof(char) * l); + assert(l > 0); + return th_realloc(s, sizeof(char) * l); } char *th_strncpy(char * dst, const char * src, size_t n) { - const char *s = src; - char *d = dst; - size_t i; - assert(src != NULL); - assert(dst != NULL); + const char *s = src; + char *d = dst; + size_t i; + assert(src != NULL); + assert(dst != NULL); - /* Copy to the destination */ - i = n; - while (*s && (i > 0)) { - *(d++) = *(s++); - i--; - } + /* Copy to the destination */ + i = n; + while (*s && (i > 0)) { + *(d++) = *(s++); + i--; + } - /* Fill rest of space with zeros */ - while (i > 0) { - *(d++) = 0; - i--; - } + /* Fill rest of space with zeros */ + while (i > 0) { + *(d++) = 0; + i--; + } - /* Ensure that last is always zero */ - dst[n - 1] = 0; + /* Ensure that last is always zero */ + dst[n - 1] = 0; - return dst; + return dst; } int th_strncmp(char * str1, char * str2, size_t n) { - char *s1, *s2; - assert(str1 != NULL); - assert(str2 != NULL); + char *s1, *s2; + assert(str1 != NULL); + assert(str2 != NULL); - /* Check the string pointers */ - if (str1 == str2) - return 0; + /* Check the string pointers */ + if (str1 == str2) + return 0; - /* Go through the string */ - s1 = str1; - s2 = str2; - while ((n > 0) && *s1 && *s2 && (*s1 == *s2)) { - s1++; - s2++; - n--; - } + /* Go through the string */ + s1 = str1; + s2 = str2; + while ((n > 0) && *s1 && *s2 && (*s1 == *s2)) { + s1++; + s2++; + n--; + } - if (n > 0) - return ((*s1) - (*s2)); - else - return 0; + if (n > 0) + return ((*s1) - (*s2)); + else + return 0; } @@ -104,45 +104,45 @@ */ int th_strcasecmp(char * str1, char * str2) { - char *s1 = str1, *s2 = str2; - assert(str1 != NULL); - assert(str2 != NULL); + char *s1 = str1, *s2 = str2; + assert(str1 != NULL); + assert(str2 != NULL); - /* Check the string pointers */ - if (str1 == str2) - return 0; + /* Check the string pointers */ + if (str1 == str2) + return 0; - /* Go through the string */ - while (*s1 && *s2 && (th_tolower(*s1) == th_tolower(*s2))) { - s1++; - s2++; - } + /* Go through the string */ + while (*s1 && *s2 && (th_tolower(*s1) == th_tolower(*s2))) { + s1++; + s2++; + } - return (th_tolower(*s1) - th_tolower(*s2)); + return (th_tolower(*s1) - th_tolower(*s2)); } int th_strncasecmp(char * str1, char * str2, size_t n) { - char *s1 = str1, *s2 = str2; - assert(str1 != NULL); - assert(str2 != NULL); + char *s1 = str1, *s2 = str2; + assert(str1 != NULL); + assert(str2 != NULL); - /* Check the string pointers */ - if (str1 == str2) - return 0; + /* Check the string pointers */ + if (str1 == str2) + return 0; - /* Go through the string */ - while ((n > 0) && *s1 && *s2 && (th_tolower(*s1) == th_tolower(*s2))) { - s1++; - s2++; - n--; - } + /* Go through the string */ + while ((n > 0) && *s1 && *s2 && (th_tolower(*s1) == th_tolower(*s2))) { + s1++; + s2++; + n--; + } - if (n > 0) - return (th_tolower(*s1) - th_tolower(*s2)); - else - return 0; + if (n > 0) + return (th_tolower(*s1) - th_tolower(*s2)); + else + return 0; } @@ -151,18 +151,18 @@ */ void th_strip_ctrlchars(char * str) { - char *i, *j; - assert(str != NULL); + char *i, *j; + assert(str != NULL); - i = str; - j = str; - while (*i) { - if (!th_iscntrl(*i)) - *(j++) = *i; - i++; - } + i = str; + j = str; + while (*i) { + if (!th_iscntrl(*i)) + *(j++) = *i; + i++; + } - *j = 0; + *j = 0; } @@ -170,22 +170,22 @@ */ int th_pstrcpy(char ** result, char * str) { - assert(result != NULL); + assert(result != NULL); - /* Check the string pointers */ - if (str == NULL) - return -1; + /* Check the string pointers */ + if (str == NULL) + return -1; - /* Allocate memory for destination */ - th_free(*result); - *result = th_stralloc(strlen(str) + 1); - if (!*result) - return -2; + /* Allocate memory for destination */ + th_free(*result); + *result = th_stralloc(strlen(str) + 1); + if (!*result) + return -2; - /* Copy to the destination */ - strcpy(*result, str); + /* Copy to the destination */ + strcpy(*result, str); - return 0; + return 0; } @@ -193,27 +193,27 @@ */ int th_pstrcat(char ** result, char * str) { - assert(result != NULL); + assert(result != NULL); - /* Check the string pointers */ - if (str == NULL) - return -1; + /* Check the string pointers */ + if (str == NULL) + return -1; - if (*result != NULL) { - *result = th_strrealloc(*result, strlen(*result) + strlen(str) + 1); - if (*result == NULL) - return -1; + if (*result != NULL) { + *result = th_strrealloc(*result, strlen(*result) + strlen(str) + 1); + if (*result == NULL) + return -1; - strcat(*result, str); - } else { - *result = th_stralloc(strlen(str) + 1); - if (*result == NULL) - return -1; + strcat(*result, str); + } else { + *result = th_stralloc(strlen(str) + 1); + if (*result == NULL) + return -1; - strcpy(*result, str); - } + strcpy(*result, str); + } - return 0; + return 0; } @@ -223,12 +223,12 @@ */ char *th_findnext(char * str, size_t * iPos) { - assert(str != NULL); + assert(str != NULL); - /* Terminating NULL-character is not whitespace! */ - while (th_isspace(str[*iPos])) - (*iPos)++; - return &str[*iPos]; + /* Terminating NULL-character is not whitespace! */ + while (th_isspace(str[*iPos])) + (*iPos)++; + return &str[*iPos]; } @@ -236,12 +236,12 @@ */ char *th_findsep(char * str, size_t * iPos, char chSep) { - assert(str != NULL); + assert(str != NULL); - /* Terminating NULL-character is not digit! */ - while (str[*iPos] && (str[*iPos] != chSep)) - (*iPos)++; - return &str[*iPos]; + /* Terminating NULL-character is not digit! */ + while (str[*iPos] && (str[*iPos] != chSep)) + (*iPos)++; + return &str[*iPos]; } @@ -249,12 +249,12 @@ */ char *th_findseporspace(char * str, size_t * iPos, char chSep) { - assert(str != NULL); + assert(str != NULL); - /* Terminating NULL-character is not digit! */ - while (!th_isspace(str[*iPos]) && (str[*iPos] != chSep)) - (*iPos)++; - return &str[*iPos]; + /* Terminating NULL-character is not digit! */ + while (!th_isspace(str[*iPos]) && (str[*iPos] != chSep)) + (*iPos)++; + return &str[*iPos]; } @@ -265,88 +265,88 @@ */ BOOL th_strmatch(char * str, char * pattern) { - BOOL didMatch = TRUE, isAnyMode = FALSE, isEnd = FALSE; - char *tmpPattern = NULL; + BOOL didMatch = TRUE, isAnyMode = FALSE, isEnd = FALSE; + char *tmpPattern = NULL; - /* Check given pattern and string */ - if (str == NULL || pattern == NULL) - return FALSE; + /* Check given pattern and string */ + if (str == NULL || pattern == NULL) + return FALSE; - /* Start comparision */ - do { - didMatch = FALSE; - switch (*pattern) { - case '?': - /* Any single character matches */ - if (*str) { - didMatch = TRUE; - pattern++; - str++; - } - break; + /* Start comparision */ + do { + didMatch = FALSE; + switch (*pattern) { + case '?': + /* Any single character matches */ + if (*str) { + didMatch = TRUE; + pattern++; + str++; + } + break; - case '*': - didMatch = TRUE; - pattern++; - if (!*pattern) - isEnd = TRUE; - isAnyMode = TRUE; - tmpPattern = pattern; - break; + case '*': + didMatch = TRUE; + pattern++; + if (!*pattern) + isEnd = TRUE; + isAnyMode = TRUE; + tmpPattern = pattern; + break; - case 0: - if (isAnyMode) { - if (*str) - str++; - else - isEnd = TRUE; - } else { - if (*str) { - if (tmpPattern) { - isAnyMode = TRUE; - pattern = tmpPattern; - } else - didMatch = FALSE; - } else - isEnd = TRUE; - } - break; - default: - if (isAnyMode) { - if (*pattern == *str) { - isAnyMode = FALSE; - didMatch = TRUE; - } else { - if (*str) { - didMatch = TRUE; - str++; - } - } - } else { - if (*pattern == *str) { - didMatch = TRUE; - if (*pattern) - pattern++; - if (*str) - str++; - } else { - if (tmpPattern) { - didMatch = TRUE; - isAnyMode = TRUE; - pattern = tmpPattern; - } - } - } + case 0: + if (isAnyMode) { + if (*str) + str++; + else + isEnd = TRUE; + } else { + if (*str) { + if (tmpPattern) { + isAnyMode = TRUE; + pattern = tmpPattern; + } else + didMatch = FALSE; + } else + isEnd = TRUE; + } + break; + default: + if (isAnyMode) { + if (*pattern == *str) { + isAnyMode = FALSE; + didMatch = TRUE; + } else { + if (*str) { + didMatch = TRUE; + str++; + } + } + } else { + if (*pattern == *str) { + didMatch = TRUE; + if (*pattern) + pattern++; + if (*str) + str++; + } else { + if (tmpPattern) { + didMatch = TRUE; + isAnyMode = TRUE; + pattern = tmpPattern; + } + } + } - if (!*str && !*pattern) - isEnd = TRUE; - break; + if (!*str && !*pattern) + isEnd = TRUE; + break; - } /* switch */ + } /* switch */ - } while (didMatch && !isEnd); + } while (didMatch && !isEnd); - return didMatch; + return didMatch; } @@ -354,84 +354,84 @@ */ BOOL th_strcasematch(char * str, char * pattern) { - BOOL didMatch = TRUE, isAnyMode = FALSE, isEnd = FALSE; - char *tmpPattern = NULL; + BOOL didMatch = TRUE, isAnyMode = FALSE, isEnd = FALSE; + char *tmpPattern = NULL; - /* Check given pattern and string */ - if (str == NULL || pattern == NULL) - return FALSE; + /* Check given pattern and string */ + if (str == NULL || pattern == NULL) + return FALSE; - /* Start comparision */ - do { - switch (*pattern) { - case '?': - /* Any single character matches */ - if (*str) { - pattern++; - str++; - } else - didMatch = FALSE; - break; + /* Start comparision */ + do { + switch (*pattern) { + case '?': + /* Any single character matches */ + if (*str) { + pattern++; + str++; + } else + didMatch = FALSE; + break; - case '*': - pattern++; - if (!*pattern || *pattern == '?') - isEnd = TRUE; - isAnyMode = TRUE; - tmpPattern = pattern; - break; + case '*': + pattern++; + if (!*pattern || *pattern == '?') + isEnd = TRUE; + isAnyMode = TRUE; + tmpPattern = pattern; + break; - case 0: - if (isAnyMode) { - if (*str) - str++; - else - isEnd = TRUE; - } else { - if (*str) { - if (tmpPattern) { - isAnyMode = TRUE; - pattern = tmpPattern; - } else - didMatch = FALSE; - } else - isEnd = TRUE; - } - break; + case 0: + if (isAnyMode) { + if (*str) + str++; + else + isEnd = TRUE; + } else { + if (*str) { + if (tmpPattern) { + isAnyMode = TRUE; + pattern = tmpPattern; + } else + didMatch = FALSE; + } else + isEnd = TRUE; + } + break; - default: - if (isAnyMode) { - if (th_tolower(*pattern) == th_tolower(*str)) { - isAnyMode = FALSE; - } else { - if (*str) - str++; - else - didMatch = FALSE; - } - } else { - if (th_tolower(*pattern) == th_tolower(*str)) { - if (*pattern) - pattern++; - if (*str) - str++; - } else { - if (tmpPattern) { - isAnyMode = TRUE; - pattern = tmpPattern; - } else - didMatch = FALSE; - } - } + default: + if (isAnyMode) { + if (th_tolower(*pattern) == th_tolower(*str)) { + isAnyMode = FALSE; + } else { + if (*str) + str++; + else + didMatch = FALSE; + } + } else { + if (th_tolower(*pattern) == th_tolower(*str)) { + if (*pattern) + pattern++; + if (*str) + str++; + } else { + if (tmpPattern) { + isAnyMode = TRUE; + pattern = tmpPattern; + } else + didMatch = FALSE; + } + } - if (!*str && !*pattern) - isEnd = TRUE; - break; + if (!*str && !*pattern) + isEnd = TRUE; + break; - } /* switch */ + } /* switch */ - } while (didMatch && !isEnd); + } while (didMatch && !isEnd); - return didMatch; + return didMatch; }