SuperTweet I18n version
Dependencies: EthernetNetIf mbed
utils.h@1:6699b22eb872, 2011-11-06 (annotated)
- Committer:
- yamaguch
- Date:
- Sun Nov 06 13:40:37 2011 +0000
- Revision:
- 1:6699b22eb872
- Parent:
- 0:e980b24fd680
0.91
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yamaguch | 0:e980b24fd680 | 1 | #include "mbed.h" |
yamaguch | 0:e980b24fd680 | 2 | #include <ctype.h> |
yamaguch | 0:e980b24fd680 | 3 | |
yamaguch | 0:e980b24fd680 | 4 | int encodeFormUrl(char *s, char *t) { |
yamaguch | 0:e980b24fd680 | 5 | char *head = t; |
yamaguch | 0:e980b24fd680 | 6 | for (char c; (c = *s) != 0; s++) |
yamaguch | 0:e980b24fd680 | 7 | switch (c) { |
yamaguch | 0:e980b24fd680 | 8 | case '\r': |
yamaguch | 0:e980b24fd680 | 9 | break; |
yamaguch | 0:e980b24fd680 | 10 | case ' ' : |
yamaguch | 0:e980b24fd680 | 11 | *t++ = '+'; |
yamaguch | 0:e980b24fd680 | 12 | break; |
yamaguch | 0:e980b24fd680 | 13 | default: |
yamaguch | 0:e980b24fd680 | 14 | t += sprintf(t, isalnum(c) ? "%c" : (c == '\n') ? "\r%c" : "%%%02X", c); |
yamaguch | 0:e980b24fd680 | 15 | } |
yamaguch | 0:e980b24fd680 | 16 | *t = '\0'; |
yamaguch | 0:e980b24fd680 | 17 | return t - head; |
yamaguch | 0:e980b24fd680 | 18 | } |
yamaguch | 0:e980b24fd680 | 19 | |
yamaguch | 0:e980b24fd680 | 20 | void encodeBase64(char ibuf[], int length, char *obuf) { |
yamaguch | 0:e980b24fd680 | 21 | const char BASE64[] = |
yamaguch | 0:e980b24fd680 | 22 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
yamaguch | 0:e980b24fd680 | 23 | int i, j; |
yamaguch | 0:e980b24fd680 | 24 | for (i = j = 0; j < length; j += 3, i += 4) { |
yamaguch | 0:e980b24fd680 | 25 | long a = ibuf[j] << 16 | |
yamaguch | 0:e980b24fd680 | 26 | (j + 1 < length ? ibuf[j + 1] << 8 : 0) | |
yamaguch | 0:e980b24fd680 | 27 | (j + 2 < length ? ibuf[j + 2] : 0); |
yamaguch | 0:e980b24fd680 | 28 | for (int k = 3; k >= 0; k--, a >>= 6) |
yamaguch | 0:e980b24fd680 | 29 | obuf[i + k] = (j + k - 1) < length ? BASE64[a & 63] : '='; |
yamaguch | 0:e980b24fd680 | 30 | } |
yamaguch | 0:e980b24fd680 | 31 | obuf[i] = '\0'; |
yamaguch | 0:e980b24fd680 | 32 | } |
yamaguch | 0:e980b24fd680 | 33 | |
yamaguch | 0:e980b24fd680 | 34 | void encodeBase64(char *ibuf, char *obuf) { |
yamaguch | 0:e980b24fd680 | 35 | encodeBase64(ibuf, strlen(ibuf), obuf); |
yamaguch | 0:e980b24fd680 | 36 | } |
yamaguch | 0:e980b24fd680 | 37 | |
yamaguch | 0:e980b24fd680 | 38 | void getValue(char *path, char *name, char *value) { |
yamaguch | 0:e980b24fd680 | 39 | FILE *fp = fopen(path, "r"); |
yamaguch | 0:e980b24fd680 | 40 | if (!fp) return; |
yamaguch | 0:e980b24fd680 | 41 | |
yamaguch | 0:e980b24fd680 | 42 | char buf[512]; |
yamaguch | 0:e980b24fd680 | 43 | int i = strlen(name); |
yamaguch | 0:e980b24fd680 | 44 | while (fgets(buf, 511, fp)) { |
yamaguch | 0:e980b24fd680 | 45 | if (strncmp(name, buf, i) == 0 && (buf[i] == ':' || isspace(buf[i]))) { |
yamaguch | 0:e980b24fd680 | 46 | while (buf[i] && buf[i] != ':') i++; |
yamaguch | 0:e980b24fd680 | 47 | if (buf[i]) i++; |
yamaguch | 1:6699b22eb872 | 48 | while (buf[i] && isspace(buf[i])) i++; |
yamaguch | 0:e980b24fd680 | 49 | for (int j = strlen(buf) - 1; isspace(buf[j]); j--) buf[j] = '\0'; |
yamaguch | 0:e980b24fd680 | 50 | strcpy(value, &buf[i]); |
yamaguch | 0:e980b24fd680 | 51 | break; |
yamaguch | 0:e980b24fd680 | 52 | } |
yamaguch | 0:e980b24fd680 | 53 | } |
yamaguch | 0:e980b24fd680 | 54 | fclose(fp); |
yamaguch | 0:e980b24fd680 | 55 | } |