void string_replace_w(smb_ucs2_t *s, smb_ucs2_t oldc, smb_ucs2_t newc) { smb_ucs2_t cp; for(;*(COPY_UCS2_CHAR(&cp,s));s++) { if(cp==oldc) { COPY_UCS2_CHAR(s,&newc); } } }
int strcmp_wa(const smb_ucs2_t *a, const char *b) { smb_ucs2_t cp = 0; while (*b && *(COPY_UCS2_CHAR(&cp,a)) == UCS2_CHAR(*b)) { a++; b++; } return (*(COPY_UCS2_CHAR(&cp,a)) - UCS2_CHAR(*b)); }
int strcasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b) { smb_ucs2_t cpa, cpb; while ((*COPY_UCS2_CHAR(&cpb,b)) && toupper_w(*(COPY_UCS2_CHAR(&cpa,a))) == toupper_w(cpb)) { a++; b++; } return (tolower_w(*(COPY_UCS2_CHAR(&cpa,a))) - tolower_w(*(COPY_UCS2_CHAR(&cpb,b)))); }
int strncasecmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len) { smb_ucs2_t cpa, cpb; size_t n = 0; while ((n < len) && *COPY_UCS2_CHAR(&cpb,b) && (toupper_w(*(COPY_UCS2_CHAR(&cpa,a))) == toupper_w(cpb))) { a++; b++; n++; } return (len - n)?(tolower_w(*(COPY_UCS2_CHAR(&cpa,a))) - tolower_w(*(COPY_UCS2_CHAR(&cpb,b)))):0; }
int strncmp_wa(const smb_ucs2_t *a, const char *b, size_t len) { smb_ucs2_t cp = 0; size_t n = 0; while ((n < len) && *b && *(COPY_UCS2_CHAR(&cp,a)) == UCS2_CHAR(*b)) { a++; b++; n++; } return (len - n)?(*(COPY_UCS2_CHAR(&cp,a)) - UCS2_CHAR(*b)):0; }
int strncmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b, size_t len) { smb_ucs2_t cpa, cpb; size_t n = 0; while ((n < len) && (*(COPY_UCS2_CHAR(&cpb,b))) && (*(COPY_UCS2_CHAR(&cpa,a)) == cpb)) { a++; b++; n++; } return (len - n)?(*(COPY_UCS2_CHAR(&cpa,a)) - *(COPY_UCS2_CHAR(&cpb,b))):0; }
int strcmp_w(const smb_ucs2_t *a, const smb_ucs2_t *b) { smb_ucs2_t cpa, cpb; while ((*(COPY_UCS2_CHAR(&cpb,b))) && (*(COPY_UCS2_CHAR(&cpa,a)) == cpb)) { a++; b++; } return (*(COPY_UCS2_CHAR(&cpa,a)) - *(COPY_UCS2_CHAR(&cpb,b))); /* warning: if *a != *b and both are not 0 we return a random greater or lesser than 0 number not realted to which string is longer */ }
bool strupper_w(smb_ucs2_t *s) { smb_ucs2_t cp; bool ret = false; while (*(COPY_UCS2_CHAR(&cp,s))) { smb_ucs2_t v = toupper_m(cp); if (v != cp) { COPY_UCS2_CHAR(s,&v); ret = true; } s++; } return ret; }
BOOL strupper_w(smb_ucs2_t *s) { smb_ucs2_t cp; BOOL ret = False; while (*(COPY_UCS2_CHAR(&cp,s))) { smb_ucs2_t v = toupper_w(cp); if (v != cp) { COPY_UCS2_CHAR(s,&v); ret = True; } s++; } return ret; }
bool strlower_w(smb_ucs2_t *s) { smb_ucs2_t cp; bool ret = False; while (*(COPY_UCS2_CHAR(&cp,s))) { smb_ucs2_t v = tolower_w(cp); if (v != cp) { COPY_UCS2_CHAR(s,&v); ret = True; } s++; } return ret; }
smb_ucs2_t *strncpy_w(smb_ucs2_t *dest, const smb_ucs2_t *src, const size_t max) { smb_ucs2_t cp; size_t len; if (!dest || !src) { return NULL; } for (len = 0; (*COPY_UCS2_CHAR(&cp,(src+len))) && (len < max); len++) { cp = *COPY_UCS2_CHAR(dest+len,src+len); } cp = 0; for ( /*nothing*/ ; len < max; len++ ) { cp = *COPY_UCS2_CHAR(dest+len,&cp); } return dest; }
size_t strnlen_w(const smb_ucs2_t *src, size_t max) { size_t len; smb_ucs2_t c; for(len = 0; *(COPY_UCS2_CHAR(&c,src)) && (len < max); src++, len++) { ; } return len; }
smb_ucs2_t *strpbrk_wa(const smb_ucs2_t *s, const char *p) { smb_ucs2_t cp; while (*(COPY_UCS2_CHAR(&cp,s))) { int i; for (i=0; p[i] && cp != UCS2_CHAR(p[i]); i++) ; if (p[i]) { return (smb_ucs2_t *)s; } s++; } return NULL; }
smb_ucs2_t *strchr_w(const smb_ucs2_t *s, smb_ucs2_t c) { smb_ucs2_t cp; while (*(COPY_UCS2_CHAR(&cp,s))) { if (c == cp) { return (smb_ucs2_t *)s; } s++; } if (c == cp) { return (smb_ucs2_t *)s; } return NULL; }
smb_ucs2_t *strrchr_w(const smb_ucs2_t *s, smb_ucs2_t c) { smb_ucs2_t cp; const smb_ucs2_t *p = s; int len = strlen_w(s); if (len == 0) { return NULL; } p += (len - 1); do { if (c == *(COPY_UCS2_CHAR(&cp,p))) { return (smb_ucs2_t *)p; } } while (p-- != s); return NULL; }
smb_ucs2_t *strcat_w(smb_ucs2_t *dest, const smb_ucs2_t *src) { size_t start; size_t len; smb_ucs2_t z = 0; if (!dest || !src) { return NULL; } start = strlen_w(dest); len = strlen_w(src); memcpy(&dest[start], src, len*sizeof(smb_ucs2_t)); z = *COPY_UCS2_CHAR(dest+start+len,&z); return dest; }
smb_ucs2_t *strnrchr_w(const smb_ucs2_t *s, smb_ucs2_t c, unsigned int n) { smb_ucs2_t cp; const smb_ucs2_t *p = s; int len = strlen_w(s); if (len == 0 || !n) { return NULL; } p += (len - 1); do { if (c == *(COPY_UCS2_CHAR(&cp,p))) { n--; } if (!n) { return (smb_ucs2_t *)p; } } while (p-- != s); return NULL; }