replay get form stewgate

Dependencies:   EthernetNetIf NetServices mbed

Fork of HTTPClientExample by Donatien Garnier

Committer:
nameless129
Date:
Sat Aug 31 07:55:46 2013 +0000
Revision:
4:a81d4a6f6e29
reply get from stewgate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nameless129 4:a81d4a6f6e29 1 #include <stdio.h>
nameless129 4:a81d4a6f6e29 2 #include <stdlib.h>
nameless129 4:a81d4a6f6e29 3 #include <locale.h>
nameless129 4:a81d4a6f6e29 4 #include <cwchar>
nameless129 4:a81d4a6f6e29 5
nameless129 4:a81d4a6f6e29 6 int utf8tosjis(const char* utfBuffer, int utfBufLen, char* sjisBuffer, int sjisBufLen)
nameless129 4:a81d4a6f6e29 7 {
nameless129 4:a81d4a6f6e29 8 wchar_t wstr[256];
nameless129 4:a81d4a6f6e29 9 int i, wi;
nameless129 4:a81d4a6f6e29 10 wchar_t wc;
nameless129 4:a81d4a6f6e29 11 mbstate_t state = {0};
nameless129 4:a81d4a6f6e29 12 size_t ret;
nameless129 4:a81d4a6f6e29 13 char * current_locale;
nameless129 4:a81d4a6f6e29 14 i = wi = 0;
nameless129 4:a81d4a6f6e29 15
nameless129 4:a81d4a6f6e29 16 current_locale = setlocale(LC_CTYPE, "UTF-8");
nameless129 4:a81d4a6f6e29 17 if (current_locale == NULL)
nameless129 4:a81d4a6f6e29 18 return 0;
nameless129 4:a81d4a6f6e29 19
nameless129 4:a81d4a6f6e29 20 while (1) {
nameless129 4:a81d4a6f6e29 21 ret = mbrtowc(&wc, utfBuffer+i, 3, &state);
nameless129 4:a81d4a6f6e29 22 if (ret == (size_t)-2 || ret == (size_t)-1) {
nameless129 4:a81d4a6f6e29 23 printf("\nThere was a problem decoding the multibyte string.\n");
nameless129 4:a81d4a6f6e29 24 return ret;
nameless129 4:a81d4a6f6e29 25 } else if (ret == 0) {
nameless129 4:a81d4a6f6e29 26 break; /* we hit \0, end of string */
nameless129 4:a81d4a6f6e29 27 } else {
nameless129 4:a81d4a6f6e29 28 i += ret;
nameless129 4:a81d4a6f6e29 29 wstr[wi++] = wc;
nameless129 4:a81d4a6f6e29 30 }
nameless129 4:a81d4a6f6e29 31 }
nameless129 4:a81d4a6f6e29 32 wstr[wi] = L'\0';
nameless129 4:a81d4a6f6e29 33
nameless129 4:a81d4a6f6e29 34 current_locale = setlocale(LC_CTYPE, "SJIS");
nameless129 4:a81d4a6f6e29 35 if (current_locale == NULL)
nameless129 4:a81d4a6f6e29 36 return 0;
nameless129 4:a81d4a6f6e29 37
nameless129 4:a81d4a6f6e29 38 ret = wcstombs(sjisBuffer, wstr, sjisBufLen);
nameless129 4:a81d4a6f6e29 39
nameless129 4:a81d4a6f6e29 40 return ret;
nameless129 4:a81d4a6f6e29 41 }