28 #define INCL_DOSMODULEMGR
29 #define INCL_DOSERRORS
38 # define debug(s,...) printf(__func__"(): "##s"\n" ,##__VA_ARGS__)
40 # define debug(s,...) do {} while (0)
46 size_t *inbytesleft,
char* * outbuf,
47 size_t *outbytesleft);
53 size_t *inbytesleft,
char* * outbuf,
54 size_t *outbytesleft);
65 static BOOL
_loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv,
71 ulRC = DosLoadModule(acError,
sizeof(acError), pszName, &
hmIconv);
72 if (ulRC != NO_ERROR) {
73 debug(
"DLL not loaded: %s", &acError);
79 if (ulRC != NO_ERROR) {
80 debug(
"Error: cannot find entry %s in %s", pszIconvOpen, pszName);
85 if (ulRC != NO_ERROR) {
86 debug(
"Error: cannot find entry %s in %s", pszIconv, pszName);
91 if (ulRC != NO_ERROR) {
92 debug(
"Error: cannot find entry %s in %s", pszIconvClose, pszName);
96 debug(
"DLL %s used", pszName);
111 if (!
_loadDLL(
"KICONV",
"_libiconv_open",
"_libiconv",
"_libiconv_close") &&
112 !
_loadDLL(
"ICONV2",
"_libiconv_open",
"_libiconv",
"_libiconv_close") &&
113 !
_loadDLL(
"ICONV",
"_iconv_open",
"_iconv",
"_iconv_close") ) {
115 debug(
"Uni*() API used");
147 char* * outbuf,
size_t *outbytesleft)
149 return fn_iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft);
int _System os2_iconv_close(iconv_t cd)
static FNICONV_CLOSE fn_iconv_close
static BOOL _loadDLL(PSZ pszName, PSZ pszIconvOpen, PSZ pszIconv, PSZ pszIconvClose)
int libiconv_close(iconv_t cd)
iconv_t libiconv_open(const char *tocode, const char *fromcode)
iconv_t _System os2_iconv_open(const char *tocode, const char *fromcode)
iconv_t _System(* FNICONV_OPEN)(const char *tocode, const char *fromcode)
int _System(* FNICONV_CLOSE)(iconv_t cd)
void libiconv_clean(void)
size_t libiconv(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)
size_t _System(* FNICONV)(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
static FNICONV_OPEN fn_iconv_open