added qse_nwad_t and related functions

This commit is contained in:
2012-02-27 15:44:57 +00:00
parent ee8609daf4
commit 8b95a1d26c
11 changed files with 1180 additions and 237 deletions

View File

@ -23,6 +23,7 @@ bin_PROGRAMS = \
main02 \
mbwc01 \
mbwc02 \
nwad01 \
oht \
path01 \
pio \
@ -62,6 +63,7 @@ main01_SOURCES = main01.c
main02_SOURCES = main02.c
mbwc01_SOURCES = mbwc01.c
mbwc02_SOURCES = mbwc02.c
nwad01_SOURCES = nwad01.c
oht_SOURCES = oht.c
path01_SOURCES = path01.c
pio_SOURCES = pio.c

View File

@ -38,10 +38,11 @@ bin_PROGRAMS = chr01$(EXEEXT) env$(EXEEXT) dll$(EXEEXT) fio01$(EXEEXT) \
fio02$(EXEEXT) fma$(EXEEXT) fmt01$(EXEEXT) fmt02$(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)
mbwc02$(EXEEXT) nwad01$(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
@ -125,6 +126,10 @@ am_mbwc02_OBJECTS = mbwc02.$(OBJEXT)
mbwc02_OBJECTS = $(am_mbwc02_OBJECTS)
mbwc02_LDADD = $(LDADD)
mbwc02_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_nwad01_OBJECTS = nwad01.$(OBJEXT)
nwad01_OBJECTS = $(am_nwad01_OBJECTS)
nwad01_LDADD = $(LDADD)
nwad01_DEPENDENCIES = $(am__DEPENDENCIES_2)
am_oht_OBJECTS = oht.$(OBJEXT)
oht_OBJECTS = $(am_oht_OBJECTS)
oht_LDADD = $(LDADD)
@ -203,21 +208,23 @@ SOURCES = $(chr01_SOURCES) $(dll_SOURCES) $(env_SOURCES) \
$(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_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)
$(mbwc02_SOURCES) $(nwad01_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) $(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)
$(mbwc02_SOURCES) $(nwad01_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)
@ -390,6 +397,7 @@ main01_SOURCES = main01.c
main02_SOURCES = main02.c
mbwc01_SOURCES = mbwc01.c
mbwc02_SOURCES = mbwc02.c
nwad01_SOURCES = nwad01.c
oht_SOURCES = oht.c
path01_SOURCES = path01.c
pio_SOURCES = pio.c
@ -530,6 +538,9 @@ mbwc01$(EXEEXT): $(mbwc01_OBJECTS) $(mbwc01_DEPENDENCIES)
mbwc02$(EXEEXT): $(mbwc02_OBJECTS) $(mbwc02_DEPENDENCIES)
@rm -f mbwc02$(EXEEXT)
$(LINK) $(mbwc02_OBJECTS) $(mbwc02_LDADD) $(LIBS)
nwad01$(EXEEXT): $(nwad01_OBJECTS) $(nwad01_DEPENDENCIES)
@rm -f nwad01$(EXEEXT)
$(LINK) $(nwad01_OBJECTS) $(nwad01_LDADD) $(LIBS)
oht$(EXEEXT): $(oht_OBJECTS) $(oht_DEPENDENCIES)
@rm -f oht$(EXEEXT)
$(LINK) $(oht_OBJECTS) $(oht_LDADD) $(LIBS)
@ -598,6 +609,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main02.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbwc01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbwc02.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nwad01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oht.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Po@am__quote@

View File

@ -8,7 +8,7 @@
# include <windows.h>
#endif
static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
static int test_ipad4 (void)
{
qse_ipad4_t ipad4;
qse_char_t buf[32];
@ -93,6 +93,99 @@ static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
return 0;
}
static int test_ipad6 (void)
{
qse_ipad6_t ipad6;
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("::"),
QSE_T("::1"),
QSE_T("fe80::f27b:cbff:fea3:f40c"),
QSE_T("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_T("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_T("::ffff:0:0"),
QSE_T("::ffff:192.168.1.1")
};
static qse_mchar_t* ipstr_mbs[] =
{
QSE_MT("::"),
QSE_MT("::1"),
QSE_MT("fe80::f27b:cbff:fea3:f40c"),
QSE_MT("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_MT("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_MT("::ffff:0:0"),
QSE_MT("::ffff:192.168.1.1")
};
static qse_wchar_t* ipstr_wcs[] =
{
QSE_WT("::"),
QSE_WT("::1"),
QSE_WT("fe80::f27b:cbff:fea3:f40c"),
QSE_WT("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_WT("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_WT("::ffff:0:0"),
QSE_WT("::ffff:192.168.1.1")
};
for (i = 0; i < QSE_COUNTOF(ipstr); i++)
{
if (qse_strtoipad6 (ipstr[i], &ipad6) <= -1)
{
qse_printf (QSE_T("Failed to convert %s\n"), ipstr[i]);
}
else
{
qse_ipad6tostr (&ipad6, 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_mbstoipad6 (ipstr_mbs[i], &ipad6) <= -1)
{
qse_printf (QSE_T("Failed to convert %hs\n"), ipstr_mbs[i]);
}
else
{
qse_ipad6tombs (&ipad6, mbsbuf, QSE_COUNTOF(mbsbuf));
qse_printf (QSE_T("Converted [%hs] to [%hs]\n"), ipstr_mbs[i], mbsbuf);
}
}
qse_printf (QSE_T("-------------------\n"));
for (i = 0; i < QSE_COUNTOF(ipstr_wcs); i++)
{
if (qse_wcstoipad6 (ipstr_wcs[i], &ipad6) <= -1)
{
qse_printf (QSE_T("Failed to convert %ls\n"), ipstr_wcs[i]);
}
else
{
qse_ipad6towcs (&ipad6, wcsbuf, QSE_COUNTOF(wcsbuf));
qse_printf (QSE_T("Converted [%ls] to [%ls]\n"), ipstr_wcs[i], wcsbuf);
}
}
return 0;
}
static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
{
test_ipad4 ();
qse_printf (QSE_T("==============\n"));
test_ipad6 ();
return 0;
}
int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
{
#if defined(_WIN32)

166
qse/samples/cmn/nwad01.c Normal file
View File

@ -0,0 +1,166 @@
#include <qse/cmn/nwad.h>
#include <qse/cmn/main.h>
#include <qse/cmn/mbwc.h>
#include <qse/cmn/stdio.h>
#include <locale.h>
#if defined(_WIN32)
# include <windows.h>
#endif
static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
{
qse_nwad_t nwad;
qse_char_t buf[64];
qse_mchar_t mbsbuf[64];
qse_wchar_t wcsbuf[64];
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"),
QSE_T("::"),
QSE_T("::1"),
QSE_T("fe80::f27b:cbff:fea3:f40c"),
QSE_T("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_T("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_T("::ffff:0:0"),
QSE_T("::ffff:192.168.1.1"),
QSE_T("::ffff:192.168.1.1%88"),
QSE_T("[::]:10"),
QSE_T("[::1]:20"),
QSE_T("[fe80::f27b:cbff:fea3:f40c]:30"),
QSE_T("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:60"),
QSE_T("[2001:db8:1234:ffff:ffff:ffff:ffff:ffff]:50"),
QSE_T("[::ffff:0:0]:60"),
QSE_T("[::ffff:192.168.1.1]:70"),
QSE_T("[::ffff:192.168.1.1%999]:70")
};
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"),
QSE_MT("::"),
QSE_MT("::1"),
QSE_MT("fe80::f27b:cbff:fea3:f40c"),
QSE_MT("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_MT("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_MT("::ffff:0:0"),
QSE_MT("::ffff:192.168.1.1"),
QSE_MT("::ffff:192.168.1.1%88"),
QSE_MT("[::]:10"),
QSE_MT("[::1]:20"),
QSE_MT("[fe80::f27b:cbff:fea3:f40c]:30"),
QSE_MT("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:60"),
QSE_MT("[2001:db8:1234:ffff:ffff:ffff:ffff:ffff]:50"),
QSE_MT("[::ffff:0:0]:60"),
QSE_MT("[::ffff:192.168.1.1]:70"),
QSE_MT("[::ffff:192.168.1.1%999]:70")
};
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"),
QSE_WT("::"),
QSE_WT("::1"),
QSE_WT("fe80::f27b:cbff:fea3:f40c"),
QSE_WT("2001:0db8:85a3:0000:0000:8a2e:0370:7334"),
QSE_WT("2001:db8:1234:ffff:ffff:ffff:ffff:ffff"),
QSE_WT("::ffff:0:0"),
QSE_WT("::ffff:192.168.1.1"),
QSE_WT("::ffff:192.168.1.1%88"),
QSE_WT("[::]:10"),
QSE_WT("[::1]:20"),
QSE_WT("[fe80::f27b:cbff:fea3:f40c]:30"),
QSE_WT("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:60"),
QSE_WT("[2001:db8:1234:ffff:ffff:ffff:ffff:ffff]:50"),
QSE_WT("[::ffff:0:0]:60"),
QSE_WT("[::ffff:192.168.1.1]:70"),
QSE_WT("[::ffff:192.168.1.1%999]:70")
};
for (i = 0; i < QSE_COUNTOF(ipstr); i++)
{
if (qse_strtonwad (ipstr[i], &nwad) <= -1)
{
qse_printf (QSE_T("Failed to convert %s\n"), ipstr[i]);
}
else
{
qse_nwadtostr (&nwad, 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_mbstonwad (ipstr_mbs[i], &nwad) <= -1)
{
qse_printf (QSE_T("Failed to convert %hs\n"), ipstr_mbs[i]);
}
else
{
qse_nwadtombs (&nwad, mbsbuf, QSE_COUNTOF(mbsbuf));
qse_printf (QSE_T("Converted <%hs> to <%hs>\n"), ipstr_mbs[i], mbsbuf);
}
}
qse_printf (QSE_T("-------------------\n"));
for (i = 0; i < QSE_COUNTOF(ipstr_wcs); i++)
{
if (qse_wcstonwad (ipstr_wcs[i], &nwad) <= -1)
{
qse_printf (QSE_T("Failed to convert %ls\n"), ipstr_wcs[i]);
}
else
{
qse_nwadtowcs (&nwad, wcsbuf, QSE_COUNTOF(wcsbuf));
qse_printf (QSE_T("Converted <%ls> to <%ls>\n"), ipstr_wcs[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);
}