1#include <linux/ucs2_string.h> 2#include <linux/module.h> 3 4/* Return the number of unicode characters in data */ 5unsigned long 6ucs2_strnlen(const ucs2_char_t *s, size_t maxlength) 7{ 8 unsigned long length = 0; 9 10 while (*s++ != 0 && length < maxlength) 11 length++; 12 return length; 13} 14EXPORT_SYMBOL(ucs2_strnlen); 15 16unsigned long 17ucs2_strlen(const ucs2_char_t *s) 18{ 19 return ucs2_strnlen(s, ~0UL); 20} 21EXPORT_SYMBOL(ucs2_strlen); 22 23/* 24 * Return the number of bytes is the length of this string 25 * Note: this is NOT the same as the number of unicode characters 26 */ 27unsigned long 28ucs2_strsize(const ucs2_char_t *data, unsigned long maxlength) 29{ 30 return ucs2_strnlen(data, maxlength/sizeof(ucs2_char_t)) * sizeof(ucs2_char_t); 31} 32EXPORT_SYMBOL(ucs2_strsize); 33 34int 35ucs2_strncmp(const ucs2_char_t *a, const ucs2_char_t *b, size_t len) 36{ 37 while (1) { 38 if (len == 0) 39 return 0; 40 if (*a < *b) 41 return -1; 42 if (*a > *b) 43 return 1; 44 if (*a == 0) /* implies *b == 0 */ 45 return 0; 46 a++; 47 b++; 48 len--; 49 } 50} 51EXPORT_SYMBOL(ucs2_strncmp); 52