From ee8609daf4df1a7704b6b347ff68585ad8b483b1 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 26 Feb 2012 02:23:47 +0000 Subject: [PATCH] added qse_mbstoipad4()/qse_wcstoipad4()/qse_ipad4tombs()/qse_ipad4towcs() --- qse/include/qse/cmn/ipad.h | 38 +++++--- qse/include/qse/types.h | 8 ++ qse/lib/cmn/ipad.c | 179 ++++++++++++++++++------------------ qse/samples/cmn/Makefile.am | 2 + qse/samples/cmn/Makefile.in | 49 ++++++---- qse/samples/cmn/fs01.c | 4 +- qse/samples/cmn/ipad01.c | 118 ++++++++++++++++++++++++ 7 files changed, 273 insertions(+), 125 deletions(-) create mode 100644 qse/samples/cmn/ipad01.c diff --git a/qse/include/qse/cmn/ipad.h b/qse/include/qse/cmn/ipad.h index 92060a20..28938050 100644 --- a/qse/include/qse/cmn/ipad.h +++ b/qse/include/qse/cmn/ipad.h @@ -65,31 +65,43 @@ int qse_mbstoipad4 ( int qse_mbsntoipad4 ( const qse_mchar_t* mbs, - qse_size_t len + qse_size_t len, + qse_ipad4_t* ipad ); -int qse_ipad4tombs ( +int qse_wcstoipad4 ( + const qse_wchar_t* wcs, + qse_ipad4_t* ipad +); + +int qse_wcsntoipad4 ( + const qse_wchar_t* wcs, + qse_size_t len, + qse_ipad4_t* ipad +); + +qse_size_t qse_ipad4tombs ( const qse_ipad4_t* ipad, qse_mchar_t* mbs, qse_size_t len ); -int qse_wcstoipad4 ( - const qse_wchar_t* wcs, - qse_ipad4_t* ipad -); - -int qse_wcstoipad4 ( - const qse_wchar_t* wcs, - qse_ipad4_t* ipad -); - -int qse_ipad4towcs ( +qse_size_t qse_ipad4towcs ( const qse_ipad4_t* ipad, qse_wchar_t* wcs, qse_size_t len ); +#if defined(QSE_CHAR_IS_MCHAR) +# define qse_strtoipad4(ptr,ipad) qse_mbstoipad4(ptr,ipad) +# define qse_strntoipad4(ptr,len,ipad) qse_mbsntoipad4(ptr,len,ipad) +# define qse_ipad4tostr(ipad,ptr,len) qse_ipad4tombs(ipad,ptr,len) +#else +# define qse_strtoipad4(ptr,ipad) qse_wcstoipad4(ptr,ipad) +# define qse_strntoipad4(ptr,len,ipad) qse_wcsntoipad4(ptr,len,ipad) +# define qse_ipad4tostr(ipad,ptr,len) qse_ipad4towcs(ipad,ptr,len) +#endif + #ifdef __cplusplus } #endif diff --git a/qse/include/qse/types.h b/qse/include/qse/types.h index ced01111..144262e6 100644 --- a/qse/include/qse/types.h +++ b/qse/include/qse/types.h @@ -743,6 +743,14 @@ struct qse_cmgr_t typedef struct qse_cmgr_t qse_cmgr_t; +#if 0 +struct qse_tmgr_t +{ + int gettimeoffset +}; +typedef struct qse_tmgr_t qse_tmgr_t; +#endif + /** * The #qse_foff_t type defines an integer that can represent a file offset. * Depending on your system, it's defined to one of #qse_int64_t, #qse_int32_t, diff --git a/qse/lib/cmn/ipad.c b/qse/lib/cmn/ipad.c index cf2304ca..c9d33304 100644 --- a/qse/lib/cmn/ipad.c +++ b/qse/lib/cmn/ipad.c @@ -67,38 +67,50 @@ const qse_ipad6_t qse_ipad6_loopback = }; #endif -int qse_strtoipad4 (const qse_char_t* str, qse_ipad4_t* ipad) +static int str_to_ipad4 (int mbs, const void* str, qse_size_t len, qse_ipad4_t* ipad) { - qse_char_t c; + const void* end; int dots = 0, digits = 0; qse_uint32_t acc = 0, addr = 0; + qse_wchar_t c; + + end = (mbs? (const void*)((const qse_mchar_t*)str + len): + (const void*)((const qse_wchar_t*)str + len)); do { - c = *str; - - if (c == QSE_T('\0')) + if (str >= end) { if (dots < 3 || digits == 0) return -1; addr = (addr << 8) | acc; break; } - else if (c >= QSE_T('0') && c <= QSE_T('9')) + + if (mbs) + { + c = *(const qse_mchar_t*)str; + str = (const qse_mchar_t*)str + 1; + } + else + { + c = *(const qse_wchar_t*)str; + str = (const qse_wchar_t*)str + 1; + } + + if (c >= QSE_WT('0') && c <= QSE_WT('9')) { if (digits > 0 && acc == 0) return -1; acc = acc * 10 + (c - QSE_T('0')); if (acc > 255) return -1; digits++; } - else if (c == QSE_T('.')) + else if (c == QSE_WT('.')) { if (dots >= 3 || digits == 0) return -1; addr = (addr << 8) | acc; dots++; acc = 0; digits = 0; } else return -1; - - str++; } while (1); @@ -106,62 +118,40 @@ int qse_strtoipad4 (const qse_char_t* str, qse_ipad4_t* ipad) return 0; } -int qse_strxtoipad4 ( - const qse_char_t* str, qse_size_t len, qse_ipad4_t* ipad) +int qse_mbstoipad4 (const qse_mchar_t* str, qse_ipad4_t* ipad) { - qse_char_t c; - int dots = 0, digits = 0; - qse_uint32_t acc = 0, addr = 0; - const qse_char_t* end = str + len; - - do - { - if (str >= end) - { - if (dots < 3 || digits == 0) return -1; - addr = (addr << 8) | acc; - break; - } - - c = *str; - - if (c >= QSE_T('0') && c <= QSE_T('9')) - { - if (digits > 0 && acc == 0) return -1; - acc = acc * 10 + (c - QSE_T('0')); - if (acc > 255) return -1; - digits++; - } - else if (c == QSE_T('.')) - { - if (dots >= 3 || digits == 0) return -1; - addr = (addr << 8) | acc; - dots++; acc = 0; digits = 0; - } - else return -1; - - str++; - } - while (1); - - if (ipad != QSE_NULL) ipad->value = qse_hton32(addr); - return 0; + return str_to_ipad4 (1, str, qse_mbslen(str), ipad); } -#define __BTOA(b,p,end) \ +int qse_wcstoipad4 (const qse_wchar_t* str, qse_ipad4_t* ipad) +{ + return str_to_ipad4 (0, str, qse_wcslen(str), ipad); +} + +int qse_mbsntoipad4 (const qse_mchar_t* str, qse_size_t len, qse_ipad4_t* ipad) +{ + return str_to_ipad4 (1, str, len, ipad); +} + +int qse_wcsntoipad4 (const qse_wchar_t* str, qse_size_t len, qse_ipad4_t* ipad) +{ + return str_to_ipad4 (0, str, len, ipad); +} + +#define __BTOA(type_t,b,p,end) \ do { \ - qse_char_t* sp = p; \ + type_t* sp = p; \ do { \ if (p >= end) { \ if (p == sp) break; \ if (p - sp > 1) p[-2] = p[-1]; \ - p[-1] = (b % 10) + QSE_T('0'); \ + p[-1] = (b % 10) + '0'; \ } \ - else *p++ = (b % 10) + QSE_T('0'); \ + else *p++ = (b % 10) + '0'; \ b /= 10; \ } while (b > 0); \ if (p - sp > 1) { \ - qse_char_t t = sp[0]; \ + type_t t = sp[0]; \ sp[0] = p[-1]; \ p[-1] = t; \ } \ @@ -170,14 +160,14 @@ int qse_strxtoipad4 ( #define __ADDDOT(p, end) \ do { \ if (p >= end) break; \ - *p++ = QSE_T('.'); \ + *p++ = '.'; \ } while (0) -qse_size_t qse_ipad4tostrx ( - const qse_ipad4_t* ipad, qse_char_t* buf, qse_size_t size) +qse_size_t qse_ipad4tombs ( + const qse_ipad4_t* ipad, qse_mchar_t* buf, qse_size_t size) { qse_byte_t b; - qse_char_t* p, * end; + qse_mchar_t* p, * end; qse_uint32_t ip; if (size <= 0) return 0; @@ -188,23 +178,56 @@ qse_size_t qse_ipad4tostrx ( end = buf + size - 1; #if defined(QSE_ENDIAN_BIG) - b = (ip >> 24) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 16) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 8) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 0) & 0xFF; __BTOA (b, p, end); + b = (ip >> 24) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 16) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 8) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 0) & 0xFF; __BTOA (qse_mchar_t, b, p, end); #elif defined(QSE_ENDIAN_LITTLE) - b = (ip >> 0) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 8) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 16) & 0xFF; __BTOA (b, p, end); __ADDDOT (p, end); - b = (ip >> 24) & 0xFF; __BTOA (b, p, end); + b = (ip >> 0) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 8) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 16) & 0xFF; __BTOA (qse_mchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 24) & 0xFF; __BTOA (qse_mchar_t, b, p, end); #else # error Unknown Endian #endif - *p = QSE_T('\0'); + *p = QSE_MT('\0'); return p - buf; } +qse_size_t qse_ipad4towcs ( + const qse_ipad4_t* ipad, qse_wchar_t* buf, qse_size_t size) +{ + qse_byte_t b; + qse_wchar_t* p, * end; + qse_uint32_t ip; + + if (size <= 0) return 0; + + ip = ipad->value; + + p = buf; + end = buf + size - 1; + +#if defined(QSE_ENDIAN_BIG) + b = (ip >> 24) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 16) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 8) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 0) & 0xFF; __BTOA (qse_wchar_t, b, p, end); +#elif defined(QSE_ENDIAN_LITTLE) + b = (ip >> 0) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 8) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 16) & 0xFF; __BTOA (qse_wchar_t, b, p, end); __ADDDOT (p, end); + b = (ip >> 24) & 0xFF; __BTOA (qse_wchar_t, b, p, end); +#else +# error Unknown Endian +#endif + + *p = QSE_WT('\0'); + return p - buf; +} + +#if 0 int qse_strtoipad6 (const qse_char_t* src, qse_ipad6_t* ipad) { #if 0 @@ -549,28 +572,4 @@ qse_size_t qse_ipad6tostrx ( #undef IP6ADDR_NWORDS } -#if 0 -int qse_strtoipad (const qse_char_t* str, qse_ipad_t* ipad) -{ - if (qse_strtoipad4 (str, &ipad->u.ip4) <= -1) - { - if (qse_strtoipad6 (str, &ipad->u.ip6) <= -1) return -1; - ipad->type = QSE_IPAD_IP6; - } - else ipad->type = QSE_IPAD_IP4; - - return 0; -} - -int qse_strxtoipad (const qse_char_t* str, qse_size_t len, qse_ipad_t* ipad) -{ - if (qse_strxtoipad4 (str, len, &ipad->u.ip4) <= -1) - { - if (qse_strxtoipad6 (str, len, &ipad->u.ip6) <= -1) return -1; - ipad->type = QSE_IPAD_IP6; - } - else ipad->type = QSE_IPAD_IP4; - - return 0; -} #endif diff --git a/qse/samples/cmn/Makefile.am b/qse/samples/cmn/Makefile.am index 0a54079c..77368df9 100644 --- a/qse/samples/cmn/Makefile.am +++ b/qse/samples/cmn/Makefile.am @@ -17,6 +17,7 @@ bin_PROGRAMS = \ fmt02 \ fs01 \ htb \ + ipad01 \ lda \ main01 \ main02 \ @@ -55,6 +56,7 @@ fmt01_SOURCES = fmt01.c fmt02_SOURCES = fmt02.c fs01_SOURCES = fs01.c htb_SOURCES = htb.c +ipad01_SOURCES = ipad01.c lda_SOURCES = lda.c main01_SOURCES = main01.c main02_SOURCES = main02.c diff --git a/qse/samples/cmn/Makefile.in b/qse/samples/cmn/Makefile.in index 52692852..ead75bbb 100644 --- a/qse/samples/cmn/Makefile.in +++ b/qse/samples/cmn/Makefile.in @@ -36,12 +36,12 @@ build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = chr01$(EXEEXT) env$(EXEEXT) dll$(EXEEXT) fio01$(EXEEXT) \ fio02$(EXEEXT) fma$(EXEEXT) fmt01$(EXEEXT) fmt02$(EXEEXT) \ - fs01$(EXEEXT) htb$(EXEEXT) lda$(EXEEXT) main01$(EXEEXT) \ - main02$(EXEEXT) mbwc01$(EXEEXT) mbwc02$(EXEEXT) oht$(EXEEXT) \ - path01$(EXEEXT) pio$(EXEEXT) pma$(EXEEXT) rex01$(EXEEXT) \ - rbt$(EXEEXT) sio01$(EXEEXT) sio02$(EXEEXT) sio03$(EXEEXT) \ - sll$(EXEEXT) slmb01$(EXEEXT) str01$(EXEEXT) time$(EXEEXT) \ - tre01$(EXEEXT) xma$(EXEEXT) + fs01$(EXEEXT) htb$(EXEEXT) ipad01$(EXEEXT) lda$(EXEEXT) \ + main01$(EXEEXT) main02$(EXEEXT) mbwc01$(EXEEXT) \ + mbwc02$(EXEEXT) oht$(EXEEXT) path01$(EXEEXT) pio$(EXEEXT) \ + pma$(EXEEXT) rex01$(EXEEXT) rbt$(EXEEXT) sio01$(EXEEXT) \ + sio02$(EXEEXT) sio03$(EXEEXT) sll$(EXEEXT) slmb01$(EXEEXT) \ + str01$(EXEEXT) time$(EXEEXT) tre01$(EXEEXT) xma$(EXEEXT) @WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) subdir = samples/cmn DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in @@ -101,6 +101,10 @@ am_htb_OBJECTS = htb.$(OBJEXT) htb_OBJECTS = $(am_htb_OBJECTS) htb_LDADD = $(LDADD) htb_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_ipad01_OBJECTS = ipad01.$(OBJEXT) +ipad01_OBJECTS = $(am_ipad01_OBJECTS) +ipad01_LDADD = $(LDADD) +ipad01_DEPENDENCIES = $(am__DEPENDENCIES_2) am_lda_OBJECTS = lda.$(OBJEXT) lda_OBJECTS = $(am_lda_OBJECTS) lda_LDADD = $(LDADD) @@ -197,23 +201,23 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \ $(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \ $(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_SOURCES) \ - $(htb_SOURCES) $(lda_SOURCES) $(main01_SOURCES) \ - $(main02_SOURCES) $(mbwc01_SOURCES) $(mbwc02_SOURCES) \ - $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \ - $(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \ - $(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \ - $(slmb01_SOURCES) $(str01_SOURCES) $(time_SOURCES) \ - $(tre01_SOURCES) $(xma_SOURCES) + $(htb_SOURCES) $(ipad01_SOURCES) $(lda_SOURCES) \ + $(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \ + $(mbwc02_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \ + $(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) $(rex01_SOURCES) \ + $(sio01_SOURCES) $(sio02_SOURCES) $(sio03_SOURCES) \ + $(sll_SOURCES) $(slmb01_SOURCES) $(str01_SOURCES) \ + $(time_SOURCES) $(tre01_SOURCES) $(xma_SOURCES) DIST_SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \ $(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \ $(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_SOURCES) \ - $(htb_SOURCES) $(lda_SOURCES) $(main01_SOURCES) \ - $(main02_SOURCES) $(mbwc01_SOURCES) $(mbwc02_SOURCES) \ - $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \ - $(rbt_SOURCES) $(rex01_SOURCES) $(sio01_SOURCES) \ - $(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \ - $(slmb01_SOURCES) $(str01_SOURCES) $(time_SOURCES) \ - $(tre01_SOURCES) $(xma_SOURCES) + $(htb_SOURCES) $(ipad01_SOURCES) $(lda_SOURCES) \ + $(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \ + $(mbwc02_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \ + $(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) $(rex01_SOURCES) \ + $(sio01_SOURCES) $(sio02_SOURCES) $(sio03_SOURCES) \ + $(sll_SOURCES) $(slmb01_SOURCES) $(str01_SOURCES) \ + $(time_SOURCES) $(tre01_SOURCES) $(xma_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -380,6 +384,7 @@ fmt01_SOURCES = fmt01.c fmt02_SOURCES = fmt02.c fs01_SOURCES = fs01.c htb_SOURCES = htb.c +ipad01_SOURCES = ipad01.c lda_SOURCES = lda.c main01_SOURCES = main01.c main02_SOURCES = main02.c @@ -507,6 +512,9 @@ fs01$(EXEEXT): $(fs01_OBJECTS) $(fs01_DEPENDENCIES) htb$(EXEEXT): $(htb_OBJECTS) $(htb_DEPENDENCIES) @rm -f htb$(EXEEXT) $(LINK) $(htb_OBJECTS) $(htb_LDADD) $(LIBS) +ipad01$(EXEEXT): $(ipad01_OBJECTS) $(ipad01_DEPENDENCIES) + @rm -f ipad01$(EXEEXT) + $(LINK) $(ipad01_OBJECTS) $(ipad01_LDADD) $(LIBS) lda$(EXEEXT): $(lda_OBJECTS) $(lda_DEPENDENCIES) @rm -f lda$(EXEEXT) $(LINK) $(lda_OBJECTS) $(lda_LDADD) $(LIBS) @@ -584,6 +592,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt02.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipad01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lda.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main02.Po@am__quote@ diff --git a/qse/samples/cmn/fs01.c b/qse/samples/cmn/fs01.c index 3691911b..f119f15e 100644 --- a/qse/samples/cmn/fs01.c +++ b/qse/samples/cmn/fs01.c @@ -16,7 +16,7 @@ static void list (qse_fs_t* fs, const qse_char_t* name) if (qse_fs_chdir (fs, name) <= -1) { - qse_fprintf (QSE_STDERR, QSE_T("Error: Cannot change directory to %s - %s\n"), name, qse_fs_geterrmsg(fs)); + qse_fprintf (QSE_STDERR, QSE_T("Error: Cannot change directory to %s - code %d\n"), name, (int)qse_fs_geterrnum(fs)); return; } @@ -33,7 +33,7 @@ static void list (qse_fs_t* fs, const qse_char_t* name) { qse_fs_errnum_t e = qse_fs_geterrnum(fs); if (e != QSE_FS_ENOERR) - qse_fprintf (QSE_STDERR, QSE_T("Error: Read error - %s\n"), qse_fs_geterrmsg(fs)); + qse_fprintf (QSE_STDERR, QSE_T("Error: Read error - code %d\n"), (int)qse_fs_geterrnum(fs)); break; } diff --git a/qse/samples/cmn/ipad01.c b/qse/samples/cmn/ipad01.c new file mode 100644 index 00000000..312c095f --- /dev/null +++ b/qse/samples/cmn/ipad01.c @@ -0,0 +1,118 @@ +#include +#include +#include +#include + +#include +#if defined(_WIN32) +# include +#endif + +static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[]) +{ + qse_ipad4_t ipad4; + qse_char_t buf[32]; + qse_mchar_t mbsbuf[32]; + qse_wchar_t wcsbuf[32]; + qse_size_t i; + + static qse_char_t* ipstr[] = + { + QSE_T("192.168.1.1"), + QSE_T("255.255.255.255"), + QSE_T("4.3.0.0"), + QSE_T("4.3.0.0X"), + QSE_T("65.1234.11.34"), + QSE_T("65.123.11.34"), + QSE_T("1.1.1.1") + }; + + static qse_mchar_t* ipstr_mbs[] = + { + QSE_MT("192.168.1.1"), + QSE_MT("255.255.255.255"), + QSE_MT("4.3.0.0"), + QSE_MT("4.3.0.0X"), + QSE_MT("65.1234.11.34"), + QSE_MT("65.123.11.34"), + QSE_MT("1.1.1.1") + }; + + static qse_wchar_t* ipstr_wcs[] = + { + QSE_WT("192.168.1.1"), + QSE_WT("255.255.255.255"), + QSE_WT("4.3.0.0"), + QSE_WT("4.3.0.0X"), + QSE_WT("65.1234.11.34"), + QSE_WT("65.123.11.34"), + QSE_WT("1.1.1.1") + }; + + for (i = 0; i < QSE_COUNTOF(ipstr); i++) + { + if (qse_strtoipad4 (ipstr[i], &ipad4) <= -1) + { + qse_printf (QSE_T("Failed to convert %s\n"), ipstr[i]); + } + else + { + qse_ipad4tostr (&ipad4, buf, QSE_COUNTOF(buf)); + qse_printf (QSE_T("Converted [%s] to [%s]\n"), ipstr[i], buf); + } + } + + qse_printf (QSE_T("-------------------\n")); + for (i = 0; i < QSE_COUNTOF(ipstr_mbs); i++) + { + if (qse_mbstoipad4 (ipstr_mbs[i], &ipad4) <= -1) + { + qse_printf (QSE_T("Failed to convert %hs\n"), ipstr_mbs[i]); + } + else + { + qse_ipad4tombs (&ipad4, mbsbuf, QSE_COUNTOF(mbsbuf)); + qse_printf (QSE_T("Converted [%hs] to [%hs]\n"), ipstr[i], mbsbuf); + } + } + + qse_printf (QSE_T("-------------------\n")); + for (i = 0; i < QSE_COUNTOF(ipstr_wcs); i++) + { + if (qse_wcstoipad4 (ipstr_wcs[i], &ipad4) <= -1) + { + qse_printf (QSE_T("Failed to convert %ls\n"), ipstr_wcs[i]); + } + else + { + qse_ipad4towcs (&ipad4, wcsbuf, QSE_COUNTOF(wcsbuf)); + qse_printf (QSE_T("Converted [%ls] to [%ls]\n"), ipstr[i], wcsbuf); + } + } + + return 0; +} + +int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[]) +{ +#if defined(_WIN32) + char locale[100]; + UINT codepage = GetConsoleOutputCP(); + if (codepage == CP_UTF8) + { + /*SetConsoleOUtputCP (CP_UTF8);*/ + qse_setdflcmgr (qse_utf8cmgr); + } + else + { + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); + qse_setdflcmgr (qse_slmbcmgr); + } +#else + setlocale (LC_ALL, ""); + qse_setdflcmgr (qse_slmbcmgr); +#endif + return qse_runmainwithenv (argc, argv, envp, test_main); +} +