diff options
Diffstat (limited to 'fs/cifs/cifs_unicode.c')
| -rw-r--r-- | fs/cifs/cifs_unicode.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c index 1b2e180b018d..fbb9da951843 100644 --- a/fs/cifs/cifs_unicode.c +++ b/fs/cifs/cifs_unicode.c | |||
| @@ -27,17 +27,17 @@ | |||
| 27 | #include "cifs_debug.h" | 27 | #include "cifs_debug.h" |
| 28 | 28 | ||
| 29 | /* | 29 | /* |
| 30 | * cifs_ucs2_bytes - how long will a string be after conversion? | 30 | * cifs_utf16_bytes - how long will a string be after conversion? |
| 31 | * @ucs - pointer to input string | 31 | * @utf16 - pointer to input string |
| 32 | * @maxbytes - don't go past this many bytes of input string | 32 | * @maxbytes - don't go past this many bytes of input string |
| 33 | * @codepage - destination codepage | 33 | * @codepage - destination codepage |
| 34 | * | 34 | * |
| 35 | * Walk a ucs2le string and return the number of bytes that the string will | 35 | * Walk a utf16le string and return the number of bytes that the string will |
| 36 | * be after being converted to the given charset, not including any null | 36 | * be after being converted to the given charset, not including any null |
| 37 | * termination required. Don't walk past maxbytes in the source buffer. | 37 | * termination required. Don't walk past maxbytes in the source buffer. |
| 38 | */ | 38 | */ |
| 39 | int | 39 | int |
| 40 | cifs_ucs2_bytes(const __le16 *from, int maxbytes, | 40 | cifs_utf16_bytes(const __le16 *from, int maxbytes, |
| 41 | const struct nls_table *codepage) | 41 | const struct nls_table *codepage) |
| 42 | { | 42 | { |
| 43 | int i; | 43 | int i; |
| @@ -122,7 +122,7 @@ cp_convert: | |||
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | /* | 124 | /* |
| 125 | * cifs_from_ucs2 - convert utf16le string to local charset | 125 | * cifs_from_utf16 - convert utf16le string to local charset |
| 126 | * @to - destination buffer | 126 | * @to - destination buffer |
| 127 | * @from - source buffer | 127 | * @from - source buffer |
| 128 | * @tolen - destination buffer size (in bytes) | 128 | * @tolen - destination buffer size (in bytes) |
| @@ -130,7 +130,7 @@ cp_convert: | |||
| 130 | * @codepage - codepage to which characters should be converted | 130 | * @codepage - codepage to which characters should be converted |
| 131 | * @mapchar - should characters be remapped according to the mapchars option? | 131 | * @mapchar - should characters be remapped according to the mapchars option? |
| 132 | * | 132 | * |
| 133 | * Convert a little-endian ucs2le string (as sent by the server) to a string | 133 | * Convert a little-endian utf16le string (as sent by the server) to a string |
| 134 | * in the provided codepage. The tolen and fromlen parameters are to ensure | 134 | * in the provided codepage. The tolen and fromlen parameters are to ensure |
| 135 | * that the code doesn't walk off of the end of the buffer (which is always | 135 | * that the code doesn't walk off of the end of the buffer (which is always |
| 136 | * a danger if the alignment of the source buffer is off). The destination | 136 | * a danger if the alignment of the source buffer is off). The destination |
| @@ -139,12 +139,12 @@ cp_convert: | |||
| 139 | * null terminator). | 139 | * null terminator). |
| 140 | * | 140 | * |
| 141 | * Note that some windows versions actually send multiword UTF-16 characters | 141 | * Note that some windows versions actually send multiword UTF-16 characters |
| 142 | * instead of straight UCS-2. The linux nls routines however aren't able to | 142 | * instead of straight UTF16-2. The linux nls routines however aren't able to |
| 143 | * deal with those characters properly. In the event that we get some of | 143 | * deal with those characters properly. In the event that we get some of |
| 144 | * those characters, they won't be translated properly. | 144 | * those characters, they won't be translated properly. |
| 145 | */ | 145 | */ |
| 146 | int | 146 | int |
| 147 | cifs_from_ucs2(char *to, const __le16 *from, int tolen, int fromlen, | 147 | cifs_from_utf16(char *to, const __le16 *from, int tolen, int fromlen, |
| 148 | const struct nls_table *codepage, bool mapchar) | 148 | const struct nls_table *codepage, bool mapchar) |
| 149 | { | 149 | { |
| 150 | int i, charlen, safelen; | 150 | int i, charlen, safelen; |
| @@ -190,13 +190,13 @@ cifs_from_ucs2(char *to, const __le16 *from, int tolen, int fromlen, | |||
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | /* | 192 | /* |
| 193 | * NAME: cifs_strtoUCS() | 193 | * NAME: cifs_strtoUTF16() |
| 194 | * | 194 | * |
| 195 | * FUNCTION: Convert character string to unicode string | 195 | * FUNCTION: Convert character string to unicode string |
| 196 | * | 196 | * |
| 197 | */ | 197 | */ |
| 198 | int | 198 | int |
| 199 | cifs_strtoUCS(__le16 *to, const char *from, int len, | 199 | cifs_strtoUTF16(__le16 *to, const char *from, int len, |
| 200 | const struct nls_table *codepage) | 200 | const struct nls_table *codepage) |
| 201 | { | 201 | { |
| 202 | int charlen; | 202 | int charlen; |
| @@ -206,7 +206,7 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, | |||
| 206 | for (i = 0; len && *from; i++, from += charlen, len -= charlen) { | 206 | for (i = 0; len && *from; i++, from += charlen, len -= charlen) { |
| 207 | charlen = codepage->char2uni(from, len, &wchar_to); | 207 | charlen = codepage->char2uni(from, len, &wchar_to); |
| 208 | if (charlen < 1) { | 208 | if (charlen < 1) { |
| 209 | cERROR(1, "strtoUCS: char2uni of 0x%x returned %d", | 209 | cERROR(1, "strtoUTF16: char2uni of 0x%x returned %d", |
| 210 | *from, charlen); | 210 | *from, charlen); |
| 211 | /* A question mark */ | 211 | /* A question mark */ |
| 212 | wchar_to = 0x003f; | 212 | wchar_to = 0x003f; |
| @@ -220,7 +220,8 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, | |||
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | /* | 222 | /* |
| 223 | * cifs_strndup_from_ucs - copy a string from wire format to the local codepage | 223 | * cifs_strndup_from_utf16 - copy a string from wire format to the local |
| 224 | * codepage | ||
| 224 | * @src - source string | 225 | * @src - source string |
| 225 | * @maxlen - don't walk past this many bytes in the source string | 226 | * @maxlen - don't walk past this many bytes in the source string |
| 226 | * @is_unicode - is this a unicode string? | 227 | * @is_unicode - is this a unicode string? |
| @@ -231,19 +232,19 @@ cifs_strtoUCS(__le16 *to, const char *from, int len, | |||
| 231 | * error. | 232 | * error. |
| 232 | */ | 233 | */ |
| 233 | char * | 234 | char * |
| 234 | cifs_strndup_from_ucs(const char *src, const int maxlen, const bool is_unicode, | 235 | cifs_strndup_from_utf16(const char *src, const int maxlen, |
| 235 | const struct nls_table *codepage) | 236 | const bool is_unicode, const struct nls_table *codepage) |
| 236 | { | 237 | { |
| 237 | int len; | 238 | int len; |
| 238 | char *dst; | 239 | char *dst; |
| 239 | 240 | ||
| 240 | if (is_unicode) { | 241 | if (is_unicode) { |
| 241 | len = cifs_ucs2_bytes((__le16 *) src, maxlen, codepage); | 242 | len = cifs_utf16_bytes((__le16 *) src, maxlen, codepage); |
| 242 | len += nls_nullsize(codepage); | 243 | len += nls_nullsize(codepage); |
| 243 | dst = kmalloc(len, GFP_KERNEL); | 244 | dst = kmalloc(len, GFP_KERNEL); |
| 244 | if (!dst) | 245 | if (!dst) |
| 245 | return NULL; | 246 | return NULL; |
| 246 | cifs_from_ucs2(dst, (__le16 *) src, len, maxlen, codepage, | 247 | cifs_from_utf16(dst, (__le16 *) src, len, maxlen, codepage, |
| 247 | false); | 248 | false); |
| 248 | } else { | 249 | } else { |
| 249 | len = strnlen(src, maxlen); | 250 | len = strnlen(src, maxlen); |
| @@ -264,7 +265,7 @@ cifs_strndup_from_ucs(const char *src, const int maxlen, const bool is_unicode, | |||
| 264 | * names are little endian 16 bit Unicode on the wire | 265 | * names are little endian 16 bit Unicode on the wire |
| 265 | */ | 266 | */ |
| 266 | int | 267 | int |
| 267 | cifsConvertToUCS(__le16 *target, const char *source, int srclen, | 268 | cifsConvertToUTF16(__le16 *target, const char *source, int srclen, |
| 268 | const struct nls_table *cp, int mapChars) | 269 | const struct nls_table *cp, int mapChars) |
| 269 | { | 270 | { |
| 270 | int i, j, charlen; | 271 | int i, j, charlen; |
| @@ -273,7 +274,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, | |||
| 273 | wchar_t tmp; | 274 | wchar_t tmp; |
| 274 | 275 | ||
| 275 | if (!mapChars) | 276 | if (!mapChars) |
| 276 | return cifs_strtoUCS(target, source, PATH_MAX, cp); | 277 | return cifs_strtoUTF16(target, source, PATH_MAX, cp); |
| 277 | 278 | ||
| 278 | for (i = 0, j = 0; i < srclen; j++) { | 279 | for (i = 0, j = 0; i < srclen; j++) { |
| 279 | src_char = source[i]; | 280 | src_char = source[i]; |
| @@ -281,7 +282,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, | |||
| 281 | switch (src_char) { | 282 | switch (src_char) { |
| 282 | case 0: | 283 | case 0: |
| 283 | put_unaligned(0, &target[j]); | 284 | put_unaligned(0, &target[j]); |
| 284 | goto ctoUCS_out; | 285 | goto ctoUTF16_out; |
| 285 | case ':': | 286 | case ':': |
| 286 | dst_char = cpu_to_le16(UNI_COLON); | 287 | dst_char = cpu_to_le16(UNI_COLON); |
| 287 | break; | 288 | break; |
| @@ -326,7 +327,7 @@ cifsConvertToUCS(__le16 *target, const char *source, int srclen, | |||
| 326 | put_unaligned(dst_char, &target[j]); | 327 | put_unaligned(dst_char, &target[j]); |
| 327 | } | 328 | } |
| 328 | 329 | ||
| 329 | ctoUCS_out: | 330 | ctoUTF16_out: |
| 330 | return i; | 331 | return i; |
| 331 | } | 332 | } |
| 332 | 333 | ||
