From 48d1ef8fad4932ec5df94c3205cea20539d6e49e Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Fri, 17 Dec 2021 07:33:10 +0300
Subject: [PATCH] another unsigned char cast in os2cp.c. code clean-up in os/2
geniconv.
---
src/core/os2/geniconv/geniconv.c | 93 ++++++++++++++++----------------
src/core/os2/geniconv/geniconv.h | 20 +++----
src/core/os2/geniconv/os2cp.c | 51 ++++++++++--------
src/core/os2/geniconv/os2iconv.c | 44 ++++++++-------
src/core/os2/geniconv/sys2utf8.c | 82 ++++++++++++++--------------
5 files changed, 151 insertions(+), 139 deletions(-)
diff --git a/src/core/os2/geniconv/geniconv.c b/src/core/os2/geniconv/geniconv.c
index b11b7498497..c76a398bb49 100644
--- a/src/core/os2/geniconv/geniconv.c
+++ b/src/core/os2/geniconv/geniconv.c
@@ -25,34 +25,31 @@
Andrey Vasilkin, 2016.
*/
-#define INCL_DOSMODULEMGR /* Module Manager values */
-#define INCL_DOSERRORS /* Error values */
+#define INCL_DOSMODULEMGR /* Module Manager */
+#define INCL_DOSERRORS /* Error values */
#include <os2.h>
#include "geniconv.h"
/*#define DEBUG*/
-
#ifdef DEBUG
# include <stdio.h>
-# define debug(s,...) printf(__func__"(): "##s"\n" ,##__VA_ARGS__)
+# define iconv_debug(s,...) printf(__func__"(): "##s"\n" ,##__VA_ARGS__)
#else
-# define debug(s,...) do {} while (0)
+# define iconv_debug(s,...) do {} while (0)
#endif
/* Exports from os2iconv.c */
-extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode);
-extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
- size_t *inbytesleft, char* * outbuf,
- size_t *outbytesleft);
-extern int _System os2_iconv_close(iconv_t cd);
+extern iconv_t _System os2_iconv_open (const char* tocode, const char* fromcode);
+extern size_t _System os2_iconv (iconv_t cd,
+ char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+extern int _System os2_iconv_close (iconv_t cd);
/* Functions pointers types */
-typedef iconv_t _System (*FNICONV_OPEN)(const char* tocode, const char* fromcode);
-typedef size_t _System (*FNICONV)(iconv_t cd, char* * inbuf,
- size_t *inbytesleft, char* * outbuf,
- size_t *outbytesleft);
-typedef int _System (*FNICONV_CLOSE)(iconv_t cd);
+typedef iconv_t (_System *FNICONV_OPEN)(const char*, const char*);
+typedef size_t (_System *FNICONV) (iconv_t, char **, size_t *, char **, size_t *);
+typedef int (_System *FNICONV_CLOSE)(iconv_t);
/* Used DLL module handle */
static HMODULE hmIconv = NULLHANDLE;
@@ -62,41 +59,42 @@ static FNICONV fn_iconv = NULL;
static FNICONV_CLOSE fn_iconv_close = NULL;
-static BOOL _loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv,
- PSZ pszIconvClose)
+static BOOL _loadDLL(const char *dllname,
+ const char *sym_iconvopen,
+ const char *sym_iconv,
+ const char *sym_iconvclose)
{
- ULONG ulRC;
- CHAR acError[256];
+ ULONG rc;
+ char error[256];
- ulRC = DosLoadModule(acError, sizeof(acError), pszName, &hmIconv);
- if (ulRC != NO_ERROR) {
- debug("DLL not loaded: %s", &acError);
+ rc = DosLoadModule(error, sizeof(error), dllname, &hmIconv);
+ if (rc != NO_ERROR) {
+ iconv_debug("DLL %s not loaded: %s", dllname, error);
return FALSE;
}
- do {
- ulRC = DosQueryProcAddr(hmIconv, 0, pszIconvOpen, (PFN *)&fn_iconv_open);
- if (ulRC != NO_ERROR) {
- debug("Error: cannot find entry %s in %s", pszIconvOpen, pszName);
- break;
- }
-
- ulRC = DosQueryProcAddr(hmIconv, 0, pszIconv, (PFN *)&fn_iconv);
- if (ulRC != NO_ERROR) {
- debug("Error: cannot find entry %s in %s", pszIconv, pszName);
- break;
- }
-
- ulRC = DosQueryProcAddr(hmIconv, 0, pszIconvClose, (PFN *)&fn_iconv_close);
- if (ulRC != NO_ERROR) {
- debug("Error: cannot find entry %s in %s", pszIconvClose, pszName);
- break;
- }
-
- debug("DLL %s used", pszName);
- return TRUE;
- } while (FALSE);
+ rc = DosQueryProcAddr(hmIconv, 0, sym_iconvopen, (PFN *)&fn_iconv_open);
+ if (rc != NO_ERROR) {
+ iconv_debug("Error: cannot find entry %s in %s", sym_iconvopen, dllname);
+ goto fail;
+ }
+
+ rc = DosQueryProcAddr(hmIconv, 0, sym_iconv, (PFN *)&fn_iconv);
+ if (rc != NO_ERROR) {
+ iconv_debug("Error: cannot find entry %s in %s", sym_iconv, dllname);
+ goto fail;
+ }
+
+ rc = DosQueryProcAddr(hmIconv, 0, sym_iconvclose, (PFN *)&fn_iconv_close);
+ if (rc != NO_ERROR) {
+ iconv_debug("Error: cannot find entry %s in %s", sym_iconvclose, dllname);
+ goto fail;
+ }
+
+ iconv_debug("DLL %s used", dllname);
+ return TRUE;
+ fail:
DosFreeModule(hmIconv);
hmIconv = NULLHANDLE;
return FALSE;
@@ -104,15 +102,16 @@ static BOOL _loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv,
static void _init(void)
{
- if (fn_iconv_open != NULL) /* Already was initialized */
- return;
+ if (fn_iconv_open != NULL) {
+ return; /* Already initialized */
+ }
/* Try to load kiconv.dll, iconv2.dll or iconv.dll */
if (!_loadDLL("KICONV", "_libiconv_open", "_libiconv", "_libiconv_close") &&
!_loadDLL("ICONV2", "_libiconv_open", "_libiconv", "_libiconv_close") &&
!_loadDLL("ICONV", "_iconv_open", "_iconv", "_iconv_close") ) {
/* No DLL was loaded - use OS/2 conversion objects API */
- debug("Uni*() API used");
+ iconv_debug("Uni*() API used");
fn_iconv_open = os2_iconv_open;
fn_iconv = os2_iconv;
fn_iconv_close = os2_iconv_close;
diff --git a/src/core/os2/geniconv/geniconv.h b/src/core/os2/geniconv/geniconv.h
index 377a1e64954..f66c6152df5 100644
--- a/src/core/os2/geniconv/geniconv.h
+++ b/src/core/os2/geniconv/geniconv.h
@@ -58,27 +58,27 @@ size_t libiconv (iconv_t cd, char **inbuf, size_t *inbytesleft,
/* System codepage <-> UTF-8
*
* StrUTF8()
- * Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
- * the system cp (fToUTF8 is 0). Converted ASCIIZ string will be placed at the
- * buffer pcDst, up to cbDst - 1 (for sys->utf8) or 2 (for utf8->sys) bytes.
- * Returns the number of bytes written into pcDst, not counting the terminating
+ * Converts string from system cp to UTF-8 (to_utf8 is not 0) or from UTF-8 to
+ * the system cp (to_utf8 is 0). Converted ASCIIZ string will be placed at the
+ * buffer dst, up to c_dst - 1 (for sys->utf8) or 2 (for utf8->sys) bytes.
+ * Returns the number of bytes written into dst, not counting the terminating
* 0 byte(s) or -1 on error.
*/
-int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc);
+int StrUTF8(int to_utf8, char *dst, int c_dst, char *src, int c_src);
/* StrUTF8New()
- * Coverts string from system cp to UTF-8 (fToUTF8 is not 0) or from UTF-8 to
- * the system cp (fToUTF8 is 0). Memory for the new string is obtained by
+ * Converts string from system cp to UTF-8 (to_utf8 is not 0) or from UTF-8
+ * to the system cp (to_utf8 is 0). Memory for the new string is obtained by
* using libc malloc().
* Returns converted string, terminating two bytes 0 is appended to the result.
* Returns null on error.
*/
-char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr);
+char *StrUTF8New(int to_utf8, char *str, int c_str);
/* StrUTF8Free()
- * Deallocates the memory block located by StrUTF8New() (just libc free()).
+ * Deallocates the memory block allocated by StrUTF8New() (just libc free()).
*/
-void StrUTF8Free(char *pszStr);
+void StrUTF8Free(char *str);
#endif /* GENICONV_H */
diff --git a/src/core/os2/geniconv/os2cp.c b/src/core/os2/geniconv/os2cp.c
index 3e571f89887..4b71265a7b6 100644
--- a/src/core/os2/geniconv/os2cp.c
+++ b/src/core/os2/geniconv/os2cp.c
@@ -315,30 +315,30 @@ char *os2cpToName(unsigned long cp)
if (cp == SYSTEM_CP) {
ULONG aulCP[3];
ULONG cCP;
-
- if (DosQueryCp(sizeof(aulCP), aulCP, &cCP) != NO_ERROR)
+ if (DosQueryCp(sizeof(aulCP), aulCP, &cCP) != NO_ERROR) {
return NULL;
-
+ }
cp = aulCP[0];
}
- if (aCP2Name[0].ulCode > cp || aCP2Name[ulHi].ulCode < cp)
+ if (aCP2Name[0].ulCode > cp || aCP2Name[ulHi].ulCode < cp) {
return NULL;
-
- if (aCP2Name[0].ulCode == cp)
+ }
+ if (aCP2Name[0].ulCode == cp) {
return aCP2Name[0].pszName;
-
- if (aCP2Name[ulHi].ulCode == cp)
+ }
+ if (aCP2Name[ulHi].ulCode == cp) {
return aCP2Name[ulHi].pszName;
+ }
while ((ulHi - ulLo) > 1) {
ulNext = (ulLo + ulHi) / 2;
- if (aCP2Name[ulNext].ulCode < cp)
+ if (aCP2Name[ulNext].ulCode < cp) {
ulLo = ulNext;
- else if (aCP2Name[ulNext].ulCode > cp)
+ } else if (aCP2Name[ulNext].ulCode > cp) {
ulHi = ulNext;
- else {
+ } else {
lFound = ulNext;
break;
}
@@ -360,46 +360,51 @@ unsigned long os2cpFromName(char *cp)
if (cp == NULL) {
ULONG aulCP[3];
ULONG cCP;
-
return (DosQueryCp(sizeof(aulCP), aulCP, &cCP) != NO_ERROR)? 0 : aulCP[0];
}
- while (SDL_isspace(*cp))
+ while (SDL_isspace((unsigned char) *cp)) {
cp++;
+ }
pcEnd = SDL_strchr(cp, ' ');
- if (pcEnd == NULL)
+ if (pcEnd == NULL) {
pcEnd = SDL_strchr(cp, '\0');
-
+ }
ulNext = pcEnd - cp;
- if (ulNext >= sizeof(acBuf))
+ if (ulNext >= sizeof(acBuf)) {
return 0;
+ }
SDL_memcpy(acBuf, cp, ulNext);
acBuf[ulNext] = '\0';
SDL_strupr(acBuf);
lCmp = SDL_strcmp(aName2CP[0].pszName, acBuf);
- if (lCmp > 0)
+ if (lCmp > 0) {
return 0;
- else if (lCmp == 0)
+ }
+ if (lCmp == 0) {
return aName2CP[0].ulCode;
+ }
lCmp = SDL_strcmp(aName2CP[ulHi].pszName, acBuf);
- if (lCmp < 0)
+ if (lCmp < 0) {
return 0;
- else if (lCmp == 0)
+ }
+ if (lCmp == 0) {
return aName2CP[ulHi].ulCode;
+ }
while ((ulHi - ulLo) > 1) {
ulNext = (ulLo + ulHi) / 2;
lCmp = SDL_strcmp(aName2CP[ulNext].pszName, acBuf);
- if (lCmp < 0)
+ if (lCmp < 0) {
ulLo = ulNext;
- else if (lCmp > 0)
+ } else if (lCmp > 0) {
ulHi = ulNext;
- else {
+ } else {
lFound = ulNext;
break;
}
diff --git a/src/core/os2/geniconv/os2iconv.c b/src/core/os2/geniconv/os2iconv.c
index c24cc54dcee..ac5a2821f3d 100644
--- a/src/core/os2/geniconv/os2iconv.c
+++ b/src/core/os2/geniconv/os2iconv.c
@@ -103,27 +103,28 @@ static int uconv_open(const char *code, UconvObject *uobj)
if (rc != ULS_SUCCESS) {
unsigned long cp = os2cpFromName((char *)code);
char cp_name[16];
-
- if (cp != 0 && SDL_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);
+ }
}
return rc;
}
-extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
+iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
{
UconvObject uo_tocode;
UconvObject uo_fromcode;
int rc;
iuconv_obj *iuobj;
- if (tocode == NULL)
+ if (tocode == NULL) {
tocode = "";
-
- if (fromcode == NULL)
+ }
+ if (fromcode == NULL) {
fromcode = "";
+ }
if (SDL_strcasecmp(tocode, fromcode) != 0) {
rc = uconv_open(fromcode, &uo_fromcode);
@@ -131,7 +132,6 @@ extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
errno = EINVAL;
return (iconv_t)(-1);
}
-
rc = uconv_open(tocode, &uo_tocode);
if (rc != ULS_SUCCESS) {
UniFreeUconvObject(uo_fromcode);
@@ -155,9 +155,9 @@ extern iconv_t _System os2_iconv_open(const char* tocode, const char* fromcode)
return iuobj;
}
-extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
- size_t *inbytesleft,
- char* * outbuf, size_t *outbytesleft)
+size_t _System os2_iconv(iconv_t cd,
+ char **inbuf, size_t *inbytesleft ,
+ char **outbuf, size_t *outbytesleft)
{
UconvObject uo_tocode = ((iuconv_obj *)(cd))->uo_tocode;
UconvObject uo_fromcode = ((iuconv_obj *)(cd))->uo_fromcode;
@@ -183,12 +183,12 @@ extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
DosRequestMutexSem(((iuconv_obj *)(cd))->hMtx, SEM_INDEFINITE_WAIT);
#endif
- if (uo_tocode && uo_fromcode &&
- (((iuconv_obj *)cd)->buf_len >> 1) < *inbytesleft) {
- if (((iuconv_obj *)cd)->buf != NULL)
+ if (uo_tocode && uo_fromcode && (((iuconv_obj *)cd)->buf_len >> 1) < *inbytesleft) {
+ if (((iuconv_obj *)cd)->buf != NULL) {
SDL_free(((iuconv_obj *)cd)->buf);
+ }
((iuconv_obj *)cd)->buf_len = *inbytesleft << 1;
- ((iuconv_obj *)cd)->buf = (UniChar *)SDL_malloc(((iuconv_obj *)cd)->buf_len);
+ ((iuconv_obj *)cd)->buf = (UniChar *) SDL_malloc(((iuconv_obj *)cd)->buf_len);
}
if (uo_fromcode) {
@@ -205,8 +205,9 @@ extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
rc = UniUconvToUcs(uo_fromcode, (void **)inbuf, inbytesleft,
uc_str, uc_str_len, &nonIdenticalConv);
uc_buf_len = uc_buf_len << 1;
- if (!uo_tocode)
+ if (!uo_tocode) {
*outbytesleft = uc_buf_len;
+ }
if (rc != ULS_SUCCESS) {
errno = EILSEQ;
@@ -216,8 +217,9 @@ extern size_t _System os2_iconv(iconv_t cd, char* * inbuf,
goto done;
}
- if (!uo_tocode)
+ if (!uo_tocode) {
return nonIdenticalConv;
+ }
uc_buf = ((iuconv_obj *)cd)->buf;
uc_buf_len = ((iuconv_obj *)cd)->buf_len - uc_buf_len;
@@ -266,14 +268,16 @@ int _System os2_iconv_close(iconv_t cd)
#ifdef ICONV_THREAD_SAFE
DosCloseMutexSem(((iuconv_obj *)cd)->hMtx);
#endif
- if (((iuconv_obj *)cd)->uo_tocode != NULL)
+ if (((iuconv_obj *)cd)->uo_tocode != NULL) {
UniFreeUconvObject(((iuconv_obj *)cd)->uo_tocode);
- if (((iuconv_obj *)cd)->uo_fromcode != NULL)
+ }
+ if (((iuconv_obj *)cd)->uo_fromcode != NULL) {
UniFreeUconvObject(((iuconv_obj *)cd)->uo_fromcode);
+ }
- if (((iuconv_obj *)cd)->buf != NULL)
+ if (((iuconv_obj *)cd)->buf != NULL) {
SDL_free(((iuconv_obj *)cd)->buf);
-
+ }
SDL_free(cd);
return 0;
diff --git a/src/core/os2/geniconv/sys2utf8.c b/src/core/os2/geniconv/sys2utf8.c
index fb9643045fe..577cd5a6ea4 100644
--- a/src/core/os2/geniconv/sys2utf8.c
+++ b/src/core/os2/geniconv/sys2utf8.c
@@ -30,40 +30,42 @@
#define SDL_free free
#endif
-int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc)
+int StrUTF8(int to_utf8, char *dst, int c_dst, char *src, int c_src)
{
size_t rc;
- char *pcDstStart = pcDst;
+ char *dststart = dst;
iconv_t cd;
- char *pszToCP, *pszFromCP;
- int fError = 0;
+ char *tocp, *fromcp;
+ int err = 0;
- if (cbDst < 4)
+ if (c_dst < 4) {
return -1;
+ }
- if (fToUTF8) {
- pszToCP = "UTF-8";
- pszFromCP = "";
+ if (to_utf8) {
+ tocp = "UTF-8";
+ fromcp = "";
} else {
- pszToCP = "";
- pszFromCP = "UTF-8";
+ tocp = "";
+ fromcp = "UTF-8";
}
- cd = iconv_open(pszToCP, pszFromCP);
- if (cd == (iconv_t)-1)
+ cd = iconv_open(tocp, fromcp);
+ if (cd == (iconv_t)-1) {
return -1;
+ }
- while (cbSrc > 0) {
- rc = iconv(cd, &pcSrc, (size_t *)&cbSrc, &pcDst, (size_t *)&cbDst);
+ while (c_src > 0) {
+ rc = iconv(cd, &src, (size_t *)&c_src, &dst, (size_t *)&c_dst);
if (rc == (size_t)-1) {
if (errno == EILSEQ) {
/* Try to skip invalid character */
- pcSrc++;
- cbSrc--;
+ src++;
+ c_src--;
continue;
}
- fError = 1;
+ err = 1;
break;
}
}
@@ -71,45 +73,47 @@ int StrUTF8(int fToUTF8, char *pcDst, int cbDst, char *pcSrc, int cbSrc)
iconv_close(cd);
/* Write trailing ZERO (1 byte for UTF-8, 2 bytes for the system cp) */
- if (fToUTF8) {
- if (cbDst < 1) {
- pcDst--;
- fError = 1; /* The destination buffer overflow */
+ if (to_utf8) {
+ if (c_dst < 1) {
+ dst--;
+ err = 1; /* The destination buffer overflow */
}
- *pcDst = '\0';
+ *dst = '\0';
} else {
- if (cbDst < 2) {
- pcDst -= (cbDst == 0)? 2 : 1;
- fError = 1; /* The destination buffer overflow */
+ if (c_dst < 2) {
+ dst -= (c_dst == 0) ? 2 : 1;
+ err = 1; /* The destination buffer overflow */
}
- *((short *)pcDst) = '\0';
+ *((short *)dst) = '\0';
}
- return (fError) ? -1 : (pcDst - pcDstStart);
+ return (err) ? -1 : (dst - dststart);
}
-char *StrUTF8New(int fToUTF8, char *pcStr, int cbStr)
+char *StrUTF8New(int to_utf8, char *str, int c_str)
{
- int cbNewStr = (((cbStr > 4)? cbStr : 4) + 1) * 2;
- char *pszNewStr = (char *) SDL_malloc(cbNewStr);
+ int c_newstr = (((c_str > 4) ? c_str : 4) + 1) * 2;
+ char * newstr = (char *) SDL_malloc(c_newstr);
- if (pszNewStr == NULL)
+ if (newstr == NULL) {
return NULL;
+ }
- cbNewStr = StrUTF8(fToUTF8, pszNewStr, cbNewStr, pcStr, cbStr);
- if (cbNewStr != -1) {
- pcStr = (char *) SDL_realloc(pszNewStr, cbNewStr + ((fToUTF8)? 1 : sizeof(short)));
- if (pcStr)
- return pcStr;
+ c_newstr = StrUTF8(to_utf8, newstr, c_newstr, str, c_str);
+ if (c_newstr != -1) {
+ str = (char *) SDL_realloc(newstr, c_newstr + ((to_utf8) ? 1 : sizeof(short)));
+ if (str) {
+ return str;
+ }
}
- SDL_free(pszNewStr);
+ SDL_free(newstr);
return NULL;
}
-void StrUTF8Free(char *pszStr)
+void StrUTF8Free(char *str)
{
- SDL_free(pszStr);
+ SDL_free(str);
}
/* vi: set ts=4 sw=4 expandtab: */