|
@@ -31,19 +31,30 @@
|
|
#define _ULS_CALLCONV_
|
|
#define _ULS_CALLCONV_
|
|
#define CALLCONV _System
|
|
#define CALLCONV _System
|
|
#include <uconv.h>
|
|
#include <uconv.h>
|
|
-#include <stdio.h>
|
|
|
|
-#include <stdlib.h>
|
|
|
|
-#include <string.h>
|
|
|
|
#ifdef ICONV_THREAD_SAFE
|
|
#ifdef ICONV_THREAD_SAFE
|
|
#define INCL_DOSSEMAPHORES
|
|
#define INCL_DOSSEMAPHORES
|
|
#define INCL_DOSERRORS
|
|
#define INCL_DOSERRORS
|
|
#include <os2.h>
|
|
#include <os2.h>
|
|
#endif
|
|
#endif
|
|
|
|
+
|
|
#include "os2cp.h"
|
|
#include "os2cp.h"
|
|
|
|
|
|
|
|
+#ifndef GENICONV_STANDALONE
|
|
|
|
+#include "../../../SDL_internal.h"
|
|
|
|
+#else
|
|
|
|
+#include <stdio.h>
|
|
|
|
+#include <stdlib.h>
|
|
|
|
+#include <string.h>
|
|
#if !defined(min)
|
|
#if !defined(min)
|
|
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
|
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
#endif
|
|
|
|
+#define SDL_min min
|
|
|
|
+#define SDL_strcasecmp stricmp
|
|
|
|
+#define SDL_snprintf _snprintf
|
|
|
|
+#define SDL_malloc malloc
|
|
|
|
+#define SDL_free free
|
|
|
|
+#define SDL_memcpy memcpy
|
|
|
|
+#endif
|
|
|
|
|
|
#define MAX_CP_NAME_LEN 64
|
|
#define MAX_CP_NAME_LEN 64
|
|
|
|
|
|
@@ -82,7 +93,7 @@ static int uconv_open(const char *code, UconvObject *uobj)
|
|
{
|
|
{
|
|
int rc;
|
|
int rc;
|
|
|
|
|
|
- if (!stricmp(code, "UTF-16")) {
|
|
|
|
|
|
+ if (!SDL_strcasecmp(code, "UTF-16")) {
|
|
*uobj = NULL;
|
|
*uobj = NULL;
|
|
return ULS_SUCCESS;
|
|
return ULS_SUCCESS;
|
|
}
|
|
}
|
|
@@ -92,7 +103,7 @@ static int uconv_open(const char *code, UconvObject *uobj)
|
|
unsigned long cp = os2cpFromName((char *)code);
|
|
unsigned long cp = os2cpFromName((char *)code);
|
|
char cp_name[16];
|
|
char cp_name[16];
|
|
|
|
|
|
- if (cp != 0 && _snprintf(cp_name, sizeof(cp_name), "IBM-%u", cp) > 0)
|
|
|
|
|
|
+ if (cp != 0 && SDL_snprintf(cp_name, sizeof(cp_name), "IBM-%u", cp) > 0)
|
|
rc = _createUconvObj(cp_name, uobj);
|
|
rc = _createUconvObj(cp_name, uobj);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -113,7 +124,7 @@ extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
|
|
if (fromcode == NULL)
|
|
if (fromcode == NULL)
|
|
fromcode = "";
|
|
fromcode = "";
|
|
|
|
|
|
- if (stricmp(tocode, fromcode) != 0) {
|
|
|
|
|
|
+ if (SDL_strcasecmp(tocode, fromcode) != 0) {
|
|
rc = uconv_open(fromcode, &uo_fromcode);
|
|
rc = uconv_open(fromcode, &uo_fromcode);
|
|
if (rc != ULS_SUCCESS) {
|
|
if (rc != ULS_SUCCESS) {
|
|
errno = EINVAL;
|
|
errno = EINVAL;
|
|
@@ -131,7 +142,7 @@ extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
|
|
uo_fromcode = NULL;
|
|
uo_fromcode = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
- iuobj = (iuconv_obj *) malloc(sizeof(iuconv_obj));
|
|
|
|
|
|
+ iuobj = (iuconv_obj *) SDL_malloc(sizeof(iuconv_obj));
|
|
iuobj->uo_tocode = uo_tocode;
|
|
iuobj->uo_tocode = uo_tocode;
|
|
iuobj->uo_fromcode = uo_fromcode;
|
|
iuobj->uo_fromcode = uo_fromcode;
|
|
iuobj->buf_len = 0;
|
|
iuobj->buf_len = 0;
|
|
@@ -158,8 +169,8 @@ extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
|
|
size_t ret = (size_t)(-1);
|
|
size_t ret = (size_t)(-1);
|
|
|
|
|
|
if (uo_tocode == NULL && uo_fromcode == NULL) {
|
|
if (uo_tocode == NULL && uo_fromcode == NULL) {
|
|
- uc_buf_len = min(*inbytesleft, *outbytesleft);
|
|
|
|
- memcpy(*outbuf, *inbuf, uc_buf_len);
|
|
|
|
|
|
+ uc_buf_len = SDL_min(*inbytesleft, *outbytesleft);
|
|
|
|
+ SDL_memcpy(*outbuf, *inbuf, uc_buf_len);
|
|
*inbytesleft -= uc_buf_len;
|
|
*inbytesleft -= uc_buf_len;
|
|
*outbytesleft -= uc_buf_len;
|
|
*outbytesleft -= uc_buf_len;
|
|
outbuf += uc_buf_len;
|
|
outbuf += uc_buf_len;
|
|
@@ -174,9 +185,9 @@ extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
|
|
if (uo_tocode && uo_fromcode &&
|
|
if (uo_tocode && uo_fromcode &&
|
|
(((iuconv_obj *)cd)->buf_len >> 1) < *inbytesleft) {
|
|
(((iuconv_obj *)cd)->buf_len >> 1) < *inbytesleft) {
|
|
if (((iuconv_obj *)cd)->buf != NULL)
|
|
if (((iuconv_obj *)cd)->buf != NULL)
|
|
- free(((iuconv_obj *)cd)->buf);
|
|
|
|
|
|
+ SDL_free(((iuconv_obj *)cd)->buf);
|
|
((iuconv_obj *)cd)->buf_len = *inbytesleft << 1;
|
|
((iuconv_obj *)cd)->buf_len = *inbytesleft << 1;
|
|
- ((iuconv_obj *)cd)->buf = (UniChar *)malloc(((iuconv_obj *)cd)->buf_len);
|
|
|
|
|
|
+ ((iuconv_obj *)cd)->buf = (UniChar *)SDL_malloc(((iuconv_obj *)cd)->buf_len);
|
|
}
|
|
}
|
|
|
|
|
|
if (uo_fromcode) {
|
|
if (uo_fromcode) {
|
|
@@ -260,9 +271,9 @@ int _System os2_iconv_close(iconv_t cd)
|
|
UniFreeUconvObject(((iuconv_obj *)cd)->uo_fromcode);
|
|
UniFreeUconvObject(((iuconv_obj *)cd)->uo_fromcode);
|
|
|
|
|
|
if (((iuconv_obj *)cd)->buf != NULL)
|
|
if (((iuconv_obj *)cd)->buf != NULL)
|
|
- free(((iuconv_obj *)cd)->buf);
|
|
|
|
|
|
+ SDL_free(((iuconv_obj *)cd)->buf);
|
|
|
|
|
|
- free(cd);
|
|
|
|
|
|
+ SDL_free(cd);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|