|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
--- openobex-1.3/lib/obex.c 2008-06-02 15:53:56.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+++ openobex-1.3/lib/obex.c.utf 2008-06-02 15:54:37.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
@@ -65,6 +65,9 @@
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
typedef char *bdaddr_t;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+#include <iconv.h>
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+#include <locale.h>
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
void OBEX_FreeInterfaces(obex_t *self);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
/**
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
@@ -828,21 +831,9 @@
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
return 0;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
}
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
-/**
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- * OBEX_CharToUnicode - Simple char to unicode function.
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- * @uc: Destination (unicode)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- * @c: Source (char)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- * @size: Length of destination buffer, at least twice the size of source
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- *
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- * Buffers may not overlap. Returns -1 on error.
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- */
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
-int OBEX_CharToUnicode(uint8_t *uc, const uint8_t *c, int size)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+static int obex_ascii_to_unicode(uint8_t *uc, const uint8_t *c, int size)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
{
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
int len, n;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- DEBUG(4, "\n");
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
-
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- obex_return_val_if_fail(uc != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
- obex_return_val_if_fail(c != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
len = n = strlen((char *) c);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
obex_return_val_if_fail(n*2+2 <= size, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
@@ -858,6 +849,67 @@
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
return (len*2)+2 ;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
}
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+static int obex_char_to_unicode(const char * iconv_encoding, uint8_t *uc, const uint8_t *c, int size)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+{
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ iconv_t hConv;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ int len = -1;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ if ((iconv_t)-1 != (hConv = iconv_open("UCS-2BE", iconv_encoding))) {
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ char * inBuffer = (char *)c;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ char * outBuffer = (char *)uc;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ size_t inBytes = strlen(inBuffer);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ size_t outBytes = size;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ if ((size_t)-1 != iconv(hConv, &inBuffer, &inBytes, &outBuffer, &outBytes)) {
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ len = size - outBytes;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ uc[len] = 0;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ uc[len + 1] = 0;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ len += 2;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ iconv_close(hConv);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ return len;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+}
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+/**
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ * OBEX_CharToUnicode - Simple char to unicode function.
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ * @uc: Destination (unicode)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ * @c: Source (char)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ * @size: Length of destination buffer, at least twice the size of source
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ *
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ * Buffers may not overlap. Returns -1 on error.
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+int OBEX_CharToUnicode(uint8_t *uc, const uint8_t *c, int size)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+{
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ DEBUG(4, "\n");
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ int len;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ //@@@@@
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ char const *locale = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ obex_return_val_if_fail(uc != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ obex_return_val_if_fail(c != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ /* get current locale */
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ locale = setlocale(LC_CTYPE, "");
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ obex_return_val_if_fail(locale != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ if (strcmp(locale, "ASCII") == 0 ||
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ strcmp(locale, "C") == 0 ||
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ strcmp(locale, "POSIX") == 0 ||
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ strcmp(locale, "US-ASCII") == 0)
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ locale = "en_US.US-ASCII";
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ locale = strchr(locale, '.');
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ obex_return_val_if_fail(locale != NULL, -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ locale ++;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ obex_return_val_if_fail(locale[0] != '\0', -1);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ if ((len = obex_char_to_unicode("UTF-8", uc, c, size)) >= 0) return len;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ if ((len = obex_char_to_unicode("KOI8-U", uc, c, size)) >= 0) return len;
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+ return obex_ascii_to_unicode(uc, c, size);
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+}
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
+
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
/**
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
* OBEX_ResponseToString - Return a human understandable string from a response-code.
|
|
![](https://seccdn.libravatar.org/avatar/1329faa0118ece7c293cfd7c29338468568eac491169cc971419cea51c13ae4c?s=16&d=retro) |
7fdde6f |
* @rsp: Response code.
|