refactored the formatter code

This commit is contained in:
hyung-hwan 2019-05-31 14:31:40 +00:00
parent cff18d2067
commit 3f60b8e4e8
9 changed files with 272 additions and 1970 deletions

View File

@ -88,7 +88,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = mio-execd$(EXEEXT) mio-t01$(EXEEXT)
bin_PROGRAMS = execd$(EXEEXT) t01$(EXEEXT)
subdir = bin
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
@ -106,26 +106,22 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_mio_execd_OBJECTS = mio_execd-execd.$(OBJEXT)
mio_execd_OBJECTS = $(am_mio_execd_OBJECTS)
am_execd_OBJECTS = execd-execd.$(OBJEXT)
execd_OBJECTS = $(am_execd_OBJECTS)
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
mio_execd_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
mio_execd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
execd_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(mio_execd_LDFLAGS) $(LDFLAGS) -o $@
am_mio_t01_OBJECTS = mio_t01-t01.$(OBJEXT)
mio_t01_OBJECTS = $(am_mio_t01_OBJECTS)
mio_t01_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
mio_t01_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(execd_LDFLAGS) $(LDFLAGS) -o $@
am_t01_OBJECTS = t01-t01.$(OBJEXT)
t01_OBJECTS = $(am_t01_OBJECTS)
t01_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(mio_t01_LDFLAGS) $(LDFLAGS) -o $@
$(t01_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@ -160,8 +156,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(mio_execd_SOURCES) $(mio_t01_SOURCES)
DIST_SOURCES = $(mio_execd_SOURCES) $(mio_t01_SOURCES)
SOURCES = $(execd_SOURCES) $(t01_SOURCES)
DIST_SOURCES = $(execd_SOURCES) $(t01_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@ -327,6 +323,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -344,21 +341,19 @@ CPPFLAGS_ALL_COMMON = \
-I$(includedir)
LDFLAGS_ALL_COMMON = -L$(abs_builddir) -L$(abs_builddir)/../lib -L$(libdir)
##################################################
# MAIN LIBRARY
##################################################
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON)
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
LIBADD_LIB_COMMON = $(LIBM)
mio_execd_SOURCES = execd.c
mio_execd_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
mio_execd_LDFLAGS = $(LDFLAGS_LIB_COMMON)
mio_execd_LDADD = $(LIBADD_LIB_COMMON) -lmio $(SSL_LIBS) $(SOCKET_LIBS) $(SENDFILE_LIBS)
mio_t01_SOURCES = t01.c
mio_t01_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
mio_t01_LDFLAGS = $(LDFLAGS_LIB_COMMON)
mio_t01_LDADD = $(LIBADD_LIB_COMMON) -lmio $(SSL_LIBS) $(SOCKET_LIBS) $(SENDFILE_LIBS)
CPPFLAGS_BIN_COMMON = $(CPPFLAGS_ALL_COMMON)
LDFLAGS_BIN_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
LIBADD_BIN_COMMON = $(LIBM)
execd_SOURCES = execd.c
execd_CPPFLAGS = $(CPPFLAGS_ALL_COMMON)
execd_LDFLAGS = $(LDFLAGS_ALL_COMMON)
execd_LDADD = $(LIBADD_BIN_COMMON) -lmio
execd_DEPENDENCIES = ../lib/libmio.la
t01_SOURCES = t01.c
t01_CPPFLAGS = $(CPPFLAGS_ALL_COMMON)
t01_LDFLAGS = $(LDFLAGS_ALL_COMMON)
t01_LDADD = $(LIBADD_BIN_COMMON) -lmio
t01_DEPENDENCIES = ../lib/libmio.la
all: all-am
.SUFFIXES:
@ -442,13 +437,13 @@ clean-binPROGRAMS:
echo " rm -f" $$list; \
rm -f $$list
mio-execd$(EXEEXT): $(mio_execd_OBJECTS) $(mio_execd_DEPENDENCIES) $(EXTRA_mio_execd_DEPENDENCIES)
@rm -f mio-execd$(EXEEXT)
$(AM_V_CCLD)$(mio_execd_LINK) $(mio_execd_OBJECTS) $(mio_execd_LDADD) $(LIBS)
execd$(EXEEXT): $(execd_OBJECTS) $(execd_DEPENDENCIES) $(EXTRA_execd_DEPENDENCIES)
@rm -f execd$(EXEEXT)
$(AM_V_CCLD)$(execd_LINK) $(execd_OBJECTS) $(execd_LDADD) $(LIBS)
mio-t01$(EXEEXT): $(mio_t01_OBJECTS) $(mio_t01_DEPENDENCIES) $(EXTRA_mio_t01_DEPENDENCIES)
@rm -f mio-t01$(EXEEXT)
$(AM_V_CCLD)$(mio_t01_LINK) $(mio_t01_OBJECTS) $(mio_t01_LDADD) $(LIBS)
t01$(EXEEXT): $(t01_OBJECTS) $(t01_DEPENDENCIES) $(EXTRA_t01_DEPENDENCIES)
@rm -f t01$(EXEEXT)
$(AM_V_CCLD)$(t01_LINK) $(t01_OBJECTS) $(t01_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@ -456,8 +451,8 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mio_execd-execd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mio_t01-t01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execd-execd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t01-t01.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@ -483,33 +478,33 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mio_execd-execd.o: execd.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mio_execd-execd.o -MD -MP -MF $(DEPDIR)/mio_execd-execd.Tpo -c -o mio_execd-execd.o `test -f 'execd.c' || echo '$(srcdir)/'`execd.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mio_execd-execd.Tpo $(DEPDIR)/mio_execd-execd.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='execd.c' object='mio_execd-execd.o' libtool=no @AMDEPBACKSLASH@
execd-execd.o: execd.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT execd-execd.o -MD -MP -MF $(DEPDIR)/execd-execd.Tpo -c -o execd-execd.o `test -f 'execd.c' || echo '$(srcdir)/'`execd.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/execd-execd.Tpo $(DEPDIR)/execd-execd.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='execd.c' object='execd-execd.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mio_execd-execd.o `test -f 'execd.c' || echo '$(srcdir)/'`execd.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o execd-execd.o `test -f 'execd.c' || echo '$(srcdir)/'`execd.c
mio_execd-execd.obj: execd.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mio_execd-execd.obj -MD -MP -MF $(DEPDIR)/mio_execd-execd.Tpo -c -o mio_execd-execd.obj `if test -f 'execd.c'; then $(CYGPATH_W) 'execd.c'; else $(CYGPATH_W) '$(srcdir)/execd.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mio_execd-execd.Tpo $(DEPDIR)/mio_execd-execd.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='execd.c' object='mio_execd-execd.obj' libtool=no @AMDEPBACKSLASH@
execd-execd.obj: execd.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT execd-execd.obj -MD -MP -MF $(DEPDIR)/execd-execd.Tpo -c -o execd-execd.obj `if test -f 'execd.c'; then $(CYGPATH_W) 'execd.c'; else $(CYGPATH_W) '$(srcdir)/execd.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/execd-execd.Tpo $(DEPDIR)/execd-execd.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='execd.c' object='execd-execd.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mio_execd-execd.obj `if test -f 'execd.c'; then $(CYGPATH_W) 'execd.c'; else $(CYGPATH_W) '$(srcdir)/execd.c'; fi`
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(execd_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o execd-execd.obj `if test -f 'execd.c'; then $(CYGPATH_W) 'execd.c'; else $(CYGPATH_W) '$(srcdir)/execd.c'; fi`
mio_t01-t01.o: t01.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mio_t01-t01.o -MD -MP -MF $(DEPDIR)/mio_t01-t01.Tpo -c -o mio_t01-t01.o `test -f 't01.c' || echo '$(srcdir)/'`t01.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mio_t01-t01.Tpo $(DEPDIR)/mio_t01-t01.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t01.c' object='mio_t01-t01.o' libtool=no @AMDEPBACKSLASH@
t01-t01.o: t01.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT t01-t01.o -MD -MP -MF $(DEPDIR)/t01-t01.Tpo -c -o t01-t01.o `test -f 't01.c' || echo '$(srcdir)/'`t01.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t01-t01.Tpo $(DEPDIR)/t01-t01.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t01.c' object='t01-t01.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mio_t01-t01.o `test -f 't01.c' || echo '$(srcdir)/'`t01.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o t01-t01.o `test -f 't01.c' || echo '$(srcdir)/'`t01.c
mio_t01-t01.obj: t01.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mio_t01-t01.obj -MD -MP -MF $(DEPDIR)/mio_t01-t01.Tpo -c -o mio_t01-t01.obj `if test -f 't01.c'; then $(CYGPATH_W) 't01.c'; else $(CYGPATH_W) '$(srcdir)/t01.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mio_t01-t01.Tpo $(DEPDIR)/mio_t01-t01.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t01.c' object='mio_t01-t01.obj' libtool=no @AMDEPBACKSLASH@
t01-t01.obj: t01.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT t01-t01.obj -MD -MP -MF $(DEPDIR)/t01-t01.Tpo -c -o t01-t01.obj `if test -f 't01.c'; then $(CYGPATH_W) 't01.c'; else $(CYGPATH_W) '$(srcdir)/t01.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t01-t01.Tpo $(DEPDIR)/t01-t01.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='t01.c' object='t01-t01.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mio_t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mio_t01-t01.obj `if test -f 't01.c'; then $(CYGPATH_W) 't01.c'; else $(CYGPATH_W) '$(srcdir)/t01.c'; fi`
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t01_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o t01-t01.obj `if test -f 't01.c'; then $(CYGPATH_W) 't01.c'; else $(CYGPATH_W) '$(srcdir)/t01.c'; fi`
mostlyclean-libtool:
-rm -f *.lo

View File

@ -34,8 +34,7 @@ lib_LTLIBRARIES = libmio.la
libmio_la_SOURCES = \
dns.c \
err.c \
fmtout.c \
fmtoutv.h \
fmt.c \
mio-prv.h \
mio-sys.h \
mio.c \

View File

@ -139,7 +139,7 @@ am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
libmio_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libmio_la_OBJECTS = libmio_la-dns.lo libmio_la-err.lo \
libmio_la-fmtout.lo libmio_la-mio.lo libmio_la-pro.lo \
libmio_la-fmt.lo libmio_la-mio.lo libmio_la-pro.lo \
libmio_la-sck.lo libmio_la-sck-addr.lo libmio_la-sys.lo \
libmio_la-sys-ass.lo libmio_la-sys-err.lo libmio_la-sys-log.lo \
libmio_la-sys-mux.lo libmio_la-sys-tim.lo libmio_la-tmr.lo \
@ -356,6 +356,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@ -397,8 +398,7 @@ lib_LTLIBRARIES = libmio.la
libmio_la_SOURCES = \
dns.c \
err.c \
fmtout.c \
fmtoutv.h \
fmt.c \
mio-prv.h \
mio-sys.h \
mio.c \
@ -515,7 +515,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-dns.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-err.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-fmtout.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-fmt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-mio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-pro.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmio_la-sck-addr.Plo@am__quote@
@ -568,12 +568,12 @@ libmio_la-err.lo: err.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmio_la-err.lo `test -f 'err.c' || echo '$(srcdir)/'`err.c
libmio_la-fmtout.lo: fmtout.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmio_la-fmtout.lo -MD -MP -MF $(DEPDIR)/libmio_la-fmtout.Tpo -c -o libmio_la-fmtout.lo `test -f 'fmtout.c' || echo '$(srcdir)/'`fmtout.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmio_la-fmtout.Tpo $(DEPDIR)/libmio_la-fmtout.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fmtout.c' object='libmio_la-fmtout.lo' libtool=yes @AMDEPBACKSLASH@
libmio_la-fmt.lo: fmt.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmio_la-fmt.lo -MD -MP -MF $(DEPDIR)/libmio_la-fmt.Tpo -c -o libmio_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmio_la-fmt.Tpo $(DEPDIR)/libmio_la-fmt.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fmt.c' object='libmio_la-fmt.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmio_la-fmtout.lo `test -f 'fmtout.c' || echo '$(srcdir)/'`fmtout.c
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmio_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c
libmio_la-mio.lo: mio.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmio_la-mio.lo -MD -MP -MF $(DEPDIR)/libmio_la-mio.Tpo -c -o libmio_la-mio.lo `test -f 'mio.c' || echo '$(srcdir)/'`mio.c

View File

@ -108,6 +108,127 @@ void mio_seterrnum (mio_t* mio, mio_errnum_t errnum)
mio->errmsg.len = 0;
}
static int err_bcs (mio_fmtout_t* fmtout, const mio_bch_t* ptr, mio_oow_t len)
{
mio_t* mio = (mio_t*)fmtout->ctx;
mio_oow_t max;
max = MIO_COUNTOF(mio->errmsg.buf) - mio->errmsg.len - 1;
#if defined(MIO_OOCH_IS_UCH)
if (max <= 0) return 1;
mio_conv_bchars_to_uchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio->cmgr, 1);
mio->errmsg.len += max;
#else
if (len > max) len = max;
if (len <= 0) return 1;
MIO_MEMCPY (&mio->errmsg.buf[mio->errmsg.len], ptr, len * MIO_SIZEOF(*ptr));
mio->errmsg.len += len;
#endif
mio->errmsg.buf[mio->errmsg.len] = '\0';
return 1; /* success */
}
static int err_ucs (mio_fmtout_t* fmtout, const mio_uch_t* ptr, mio_oow_t len)
{
mio_t* mio = (mio_t*)fmtout->ctx;
mio_oow_t max;
max = MIO_COUNTOF(mio->errmsg.buf) - mio->errmsg.len - 1;
#if defined(MIO_OOCH_IS_UCH)
if (len > max) len = max;
if (len <= 0) return 1;
MIO_MEMCPY (&mio->errmsg.buf[mio->errmsg.len], ptr, len * MIO_SIZEOF(*ptr));
mio->errmsg.len += len;
#else
if (max <= 0) return 1;
mio_conv_uchars_to_bchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio->cmgr);
mio->errmsg.len += max;
#endif
mio->errmsg.buf[mio->errmsg.len] = '\0';
return 1; /* success */
}
void mio_seterrbfmt (mio_t* mio, mio_errnum_t errnum, const mio_bch_t* fmt, ...)
{
va_list ap;
mio_fmtout_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
MIO_MEMSET (&fo, 0, MIO_SIZEOF(fo));
fo.putbcs = err_bcs;
fo.putucs = err_ucs;
fo.ctx = mio;
va_start (ap, fmt);
mio_bfmt_outv (&fo, fmt, ap);
va_end (ap);
mio->errnum = errnum;
}
void mio_seterrufmt (mio_t* mio, mio_errnum_t errnum, const mio_uch_t* fmt, ...)
{
va_list ap;
mio_fmtout_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
MIO_MEMSET (&fo, 0, MIO_SIZEOF(fo));
fo.putbcs = err_bcs;
fo.putucs = err_ucs;
fo.ctx = mio;
va_start (ap, fmt);
mio_ufmt_outv (&fo, fmt, ap);
va_end (ap);
mio->errnum = errnum;
}
void mio_seterrbfmtv (mio_t* mio, mio_errnum_t errnum, const mio_bch_t* fmt, va_list ap)
{
mio_fmtout_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
MIO_MEMSET (&fo, 0, MIO_SIZEOF(fo));
fo.putbcs = err_bcs;
fo.putucs = err_ucs;
fo.ctx = mio;
mio_bfmt_outv (&fo, fmt, ap);
mio->errnum = errnum;
}
void mio_seterrufmtv (mio_t* mio, mio_errnum_t errnum, const mio_uch_t* fmt, va_list ap)
{
mio_fmtout_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
MIO_MEMSET (&fo, 0, MIO_SIZEOF(fo));
fo.putbcs = err_bcs;
fo.putucs = err_ucs;
fo.ctx = mio;
mio_ufmt_outv (&fo, fmt, ap);
mio->errnum = errnum;
}
void mio_seterrwithsyserr (mio_t* mio, int syserr_type, int syserr_code)
{
mio_errnum_t errnum;
@ -242,3 +363,4 @@ void mio_seterrufmtwithsyserr (mio_t* mio, int syserr_type, int syserr_code, con
}
}*/
}

View File

@ -1,707 +0,0 @@
/*
* $Id$
*
Copyright (c) 2015-2016 Chung, Hyung-Hwan. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "mio-prv.h"
/*#include <stdio.h>*/ /* for snprintf(). used for floating-point number formatting */
#if defined(_MSC_VER) || defined(__BORLANDC__) || (defined(__WATCOMC__) && (__WATCOMC__ < 1200))
# define snprintf _snprintf
# if !defined(HAVE_SNPRINTF)
# define HAVE_SNPRINTF
# endif
#endif
#if defined(HAVE_QUADMATH_H)
# include <quadmath.h> /* for quadmath_snprintf() */
#endif
/* TODO: remove stdio.h and quadmath.h once snprintf gets replaced by own
floting-point conversion implementation*/
/* Max number conversion buffer length:
* mio_intmax_t in base 2, plus NUL byte. */
#define MAXNBUF (MIO_SIZEOF(mio_intmax_t) * MIO_BITS_PER_BYTE + 1)
enum
{
/* integer */
LF_C = (1 << 0),
LF_H = (1 << 1),
LF_J = (1 << 2),
LF_L = (1 << 3),
LF_Q = (1 << 4),
LF_T = (1 << 5),
LF_Z = (1 << 6),
/* long double */
LF_LD = (1 << 7),
/* __float128 */
LF_QD = (1 << 8)
};
static struct
{
mio_uint8_t flag; /* for single occurrence */
mio_uint8_t dflag; /* for double occurrence */
} lm_tab[26] =
{
{ 0, 0 }, /* a */
{ 0, 0 }, /* b */
{ 0, 0 }, /* c */
{ 0, 0 }, /* d */
{ 0, 0 }, /* e */
{ 0, 0 }, /* f */
{ 0, 0 }, /* g */
{ LF_H, LF_C }, /* h */
{ 0, 0 }, /* i */
{ LF_J, 0 }, /* j */
{ 0, 0 }, /* k */
{ LF_L, LF_Q }, /* l */
{ 0, 0 }, /* m */
{ 0, 0 }, /* n */
{ 0, 0 }, /* o */
{ 0, 0 }, /* p */
{ LF_Q, 0 }, /* q */
{ 0, 0 }, /* r */
{ 0, 0 }, /* s */
{ LF_T, 0 }, /* t */
{ 0, 0 }, /* u */
{ 0, 0 }, /* v */
{ 0, 0 }, /* w */
{ 0, 0 }, /* z */
{ 0, 0 }, /* y */
{ LF_Z, 0 }, /* z */
};
enum
{
FLAGC_DOT = (1 << 0),
FLAGC_SPACE = (1 << 1),
FLAGC_SHARP = (1 << 2),
FLAGC_SIGN = (1 << 3),
FLAGC_LEFTADJ = (1 << 4),
FLAGC_ZEROPAD = (1 << 5),
FLAGC_WIDTH = (1 << 6),
FLAGC_PRECISION = (1 << 7),
FLAGC_STAR1 = (1 << 8),
FLAGC_STAR2 = (1 << 9),
FLAGC_LENMOD = (1 << 10) /* length modifier */
};
static const mio_bch_t hex2ascii_lower[] =
{
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'
};
static const mio_bch_t hex2ascii_upper[] =
{
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','H','Z'
};
static mio_uch_t uch_nullstr[] = { '(','n','u','l','l', ')','\0' };
static mio_bch_t bch_nullstr[] = { '(','n','u','l','l', ')','\0' };
typedef int (*mio_fmtout_putch_t) (
mio_t* mio,
mio_bitmask_t mask,
mio_ooch_t c,
mio_oow_t len
);
typedef int (*mio_fmtout_putcs_t) (
mio_t* mio,
mio_bitmask_t mask,
const mio_ooch_t* ptr,
mio_oow_t len
);
typedef struct mio_fmtout_data_t mio_fmtout_data_t;
struct mio_fmtout_data_t
{
mio_oow_t count; /* out */
mio_bitmask_t mask; /* in */
mio_fmtout_putch_t putch; /* in */
mio_fmtout_putcs_t putcs; /* in */
};
/* ------------------------------------------------------------------------- */
/*
* Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
* order; return an optional length and a pointer to the last character
* written in the buffer (i.e., the first character of the string).
* The buffer pointed to by `nbuf' must have length >= MAXNBUF.
*/
static mio_bch_t* sprintn_lower (mio_bch_t* nbuf, mio_uintmax_t num, int base, mio_ooi_t* lenp)
{
mio_bch_t* p;
p = nbuf;
*p = '\0';
do { *++p = hex2ascii_lower[num % base]; } while (num /= base);
if (lenp) *lenp = p - nbuf;
return p; /* returns the end */
}
static mio_bch_t* sprintn_upper (mio_bch_t* nbuf, mio_uintmax_t num, int base, mio_ooi_t* lenp)
{
mio_bch_t* p;
p = nbuf;
*p = '\0';
do { *++p = hex2ascii_upper[num % base]; } while (num /= base);
if (lenp) *lenp = p - nbuf;
return p; /* returns the end */
}
/* ------------------------------------------------------------------------- */
static int put_ooch (mio_t* mio, mio_bitmask_t mask, mio_ooch_t ch, mio_oow_t len)
{
/* this is not equivalent to put_oocs(mio,mask,&ch, 1);
* this function is to emit a single character multiple times */
mio_oow_t rem;
if (len <= 0) return 1;
if (mio->log.len > 0 && mio->log.last_mask != mask)
{
/* the mask has changed. commit the buffered text */
/* TODO: HANDLE LINE ENDING CONVENTION BETTER... */
if (mio->log.ptr[mio->log.len - 1] != '\n')
{
/* no line ending - append a line terminator */
mio->log.ptr[mio->log.len++] = '\n';
}
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
redo:
rem = 0;
if (len > mio->log.capa - mio->log.len)
{
mio_oow_t newcapa, max;
mio_ooch_t* tmp;
max = MIO_TYPE_MAX(mio_oow_t) - mio->log.len;
if (len > max)
{
/* data too big. */
rem += len - max;
len = max;
}
newcapa = MIO_ALIGN_POW2(mio->log.len + len, MIO_LOG_CAPA_ALIGN); /* TODO: adjust this capacity */
if (newcapa > mio->option.log_maxcapa)
{
/* [NOTE]
* it doesn't adjust newcapa to mio->option.log_maxcapa.
* nor does it cut the input to fit it into the adjusted capacity.
* if maxcapa set is not aligned to MIO_LOG_CAPA_ALIGN,
* the largest buffer capacity may be suboptimal */
goto make_do;
}
/* +1 to handle line ending injection more easily */
tmp = mio_reallocmem(mio, mio->log.ptr, (newcapa + 1) * MIO_SIZEOF(*tmp));
if (!tmp)
{
make_do:
if (mio->log.len > 0)
{
/* can't expand the buffer. just flush the existing contents */
/* TODO: HANDLE LINE ENDING CONVENTION BETTER... */
if (mio->log.ptr[mio->log.len - 1] != '\n')
{
/* no line ending - append a line terminator */
mio->log.ptr[mio->log.len++] = '\n';
}
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
if (len > mio->log.capa)
{
rem += len - mio->log.capa;
len = mio->log.capa;
}
}
else
{
mio->log.ptr = tmp;
mio->log.capa = newcapa;
}
}
while (len > 0)
{
mio->log.ptr[mio->log.len++] = ch;
len--;
}
mio->log.last_mask = mask;
if (rem > 0)
{
len = rem;
goto redo;
}
return 1; /* success */
}
static int put_oocs (mio_t* mio, mio_bitmask_t mask, const mio_ooch_t* ptr, mio_oow_t len)
{
mio_oow_t rem;
if (len <= 0) return 1;
if (mio->log.len > 0 && mio->log.last_mask != mask)
{
/* the mask has changed. commit the buffered text */
/* TODO: HANDLE LINE ENDING CONVENTION BETTER... */
if (mio->log.ptr[mio->log.len - 1] != '\n')
{
/* no line ending - append a line terminator */
mio->log.ptr[mio->log.len++] = '\n';
}
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
redo:
rem = 0;
if (len > mio->log.capa - mio->log.len)
{
mio_oow_t newcapa, max;
mio_ooch_t* tmp;
max = MIO_TYPE_MAX(mio_oow_t) - mio->log.len;
if (len > max)
{
/* data too big. */
rem += len - max;
len = max;
}
newcapa = MIO_ALIGN_POW2(mio->log.len + len, 512); /* TODO: adjust this capacity */
if (newcapa > mio->option.log_maxcapa)
{
/* [NOTE]
* it doesn't adjust newcapa to mio->option.log_maxcapa.
* nor does it cut the input to fit it into the adjusted capacity.
* if maxcapa set is not aligned to MIO_LOG_CAPA_ALIGN,
* the largest buffer capacity may be suboptimal */
goto make_do;
}
/* +1 to handle line ending injection more easily */
tmp = mio_reallocmem(mio, mio->log.ptr, (newcapa + 1) * MIO_SIZEOF(*tmp));
if (!tmp)
{
make_do:
if (mio->log.len > 0)
{
/* can't expand the buffer. just flush the existing contents */
/* TODO: HANDLE LINE ENDING CONVENTION BETTER... */
if (mio->log.ptr[mio->log.len - 1] != '\n')
{
/* no line ending - append a line terminator */
mio->log.ptr[mio->log.len++] = '\n';
}
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
if (len > mio->log.capa)
{
rem += len - mio->log.capa;
len = mio->log.capa;
}
}
else
{
mio->log.ptr = tmp;
mio->log.capa = newcapa;
}
}
MIO_MEMCPY (&mio->log.ptr[mio->log.len], ptr, len * MIO_SIZEOF(*ptr));
mio->log.len += len;
mio->log.last_mask = mask;
if (rem > 0)
{
ptr += len;
len = rem;
goto redo;
}
return 1; /* success */
}
/* ------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------- */
#undef FMTCHAR_IS_BCH
#undef FMTCHAR_IS_UCH
#undef FMTCHAR_IS_OOCH
#undef fmtchar_t
#undef fmtoutv
#define fmtchar_t mio_bch_t
#define fmtoutv __logbfmtv
#define FMTCHAR_IS_BCH
#if defined(MIO_OOCH_IS_BCH)
# define FMTCHAR_IS_OOCH
#endif
#include "fmtoutv.h"
#undef FMTCHAR_IS_BCH
#undef FMTCHAR_IS_UCH
#undef FMTCHAR_IS_OOCH
#undef fmtchar_t
#undef fmtoutv
#define fmtchar_t mio_uch_t
#define fmtoutv __logufmtv
#define FMTCHAR_IS_UCH
#if defined(MIO_OOCH_IS_UCH)
# define FMTCHAR_IS_OOCH
#endif
#include "fmtoutv.h"
static int _logbfmtv (mio_t* mio, const mio_bch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logbfmtv(mio, fmt, data, ap);
}
static int _logufmtv (mio_t* mio, const mio_uch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logufmtv(mio, fmt, data, ap);
}
mio_ooi_t mio_logbfmt (mio_t* mio, mio_bitmask_t mask, const mio_bch_t* fmt, ...)
{
int x;
va_list ap;
mio_fmtout_data_t fo;
if (mio->log.default_type_mask & MIO_LOG_ALL_TYPES)
{
/* if a type is given, it's not untyped any more.
* mask off the UNTYPED bit */
mask &= ~MIO_LOG_UNTYPED;
/* if the default_type_mask has the UNTYPED bit on,
* it'll get turned back on */
mask |= (mio->log.default_type_mask & MIO_LOG_ALL_TYPES);
}
else if (!(mask & MIO_LOG_ALL_TYPES))
{
/* no type is set in the given mask and no default type is set.
* make it UNTYPED. */
mask |= MIO_LOG_UNTYPED;
}
fo.mask = mask;
fo.putch = put_ooch;
fo.putcs = put_oocs;
va_start (ap, fmt);
x = _logbfmtv(mio, fmt, &fo, ap);
va_end (ap);
if (mio->log.len > 0 && mio->log.ptr[mio->log.len - 1] == '\n')
{
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
return (x <= -1)? -1: fo.count;
}
mio_ooi_t mio_logufmt (mio_t* mio, mio_bitmask_t mask, const mio_uch_t* fmt, ...)
{
int x;
va_list ap;
mio_fmtout_data_t fo;
if (mio->log.default_type_mask & MIO_LOG_ALL_TYPES)
{
mask &= ~MIO_LOG_UNTYPED;
mask |= (mio->log.default_type_mask & MIO_LOG_ALL_TYPES);
}
else if (!(mask & MIO_LOG_ALL_TYPES))
{
mask |= MIO_LOG_UNTYPED;
}
fo.mask = mask;
fo.putch = put_ooch;
fo.putcs = put_oocs;
va_start (ap, fmt);
x = _logufmtv(mio, fmt, &fo, ap);
va_end (ap);
if (mio->log.len > 0 && mio->log.ptr[mio->log.len - 1] == '\n')
{
prim_write_log (mio, mio->log.last_mask, mio->log.ptr, mio->log.len);
mio->log.len = 0;
}
return (x <= -1)? -1: fo.count;
}
/* --------------------------------------------------------------------------
* ERROR MESSAGE FORMATTING
* -------------------------------------------------------------------------- */
static int put_errch (mio_t* mio, mio_bitmask_t mask, mio_ooch_t ch, mio_oow_t len)
{
mio_oow_t max;
max = MIO_COUNTOF(mio->errmsg.buf) - mio->errmsg.len - 1;
if (len > max) len = max;
if (len <= 0) return 1;
while (len > 0)
{
mio->errmsg.buf[mio->errmsg.len++] = ch;
len--;
}
mio->errmsg.buf[mio->errmsg.len] = '\0';
return 1; /* success */
}
static int put_errcs (mio_t* mio, mio_bitmask_t mask, const mio_ooch_t* ptr, mio_oow_t len)
{
mio_oow_t max;
max = MIO_COUNTOF(mio->errmsg.buf) - mio->errmsg.len - 1;
if (len > max) len = max;
if (len <= 0) return 1;
MIO_MEMCPY (&mio->errmsg.buf[mio->errmsg.len], ptr, len * MIO_SIZEOF(*ptr));
mio->errmsg.len += len;
mio->errmsg.buf[mio->errmsg.len] = '\0';
return 1; /* success */
}
static int _errbfmtv (mio_t* mio, const mio_bch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logbfmtv(mio, fmt, data, ap);
}
static int _errufmtv (mio_t* mio, const mio_uch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logufmtv(mio, fmt, data, ap);
}
void mio_seterrbfmt (mio_t* mio, mio_errnum_t errnum, const mio_bch_t* fmt, ...)
{
va_list ap;
mio_fmtout_data_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
fo.mask = 0; /* not used */
fo.putch = put_errch;
fo.putcs = put_errcs;
va_start (ap, fmt);
_errbfmtv (mio, fmt, &fo, ap);
va_end (ap);
mio->errnum = errnum;
}
void mio_seterrufmt (mio_t* mio, mio_errnum_t errnum, const mio_uch_t* fmt, ...)
{
va_list ap;
mio_fmtout_data_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
fo.mask = 0; /* not used */
fo.putch = put_errch;
fo.putcs = put_errcs;
va_start (ap, fmt);
_errufmtv (mio, fmt, &fo, ap);
va_end (ap);
mio->errnum = errnum;
}
void mio_seterrbfmtv (mio_t* mio, mio_errnum_t errnum, const mio_bch_t* fmt, va_list ap)
{
mio_fmtout_data_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
fo.mask = 0; /* not used */
fo.putch = put_errch;
fo.putcs = put_errcs;
_errbfmtv (mio, fmt, &fo, ap);
mio->errnum = errnum;
}
void mio_seterrufmtv (mio_t* mio, mio_errnum_t errnum, const mio_uch_t* fmt, va_list ap)
{
mio_fmtout_data_t fo;
if (mio->shuterr) return;
mio->errmsg.len = 0;
fo.mask = 0; /* not used */
fo.putch = put_errch;
fo.putcs = put_errcs;
_errufmtv (mio, fmt, &fo, ap);
mio->errnum = errnum;
}
/* --------------------------------------------------------------------------
* SUPPORT FOR THE BUILTIN SPRINTF PRIMITIVE FUNCTION
* -------------------------------------------------------------------------- */
static int put_sprcs (mio_t* mio, mio_bitmask_t mask, const mio_ooch_t* ptr, mio_oow_t len)
{
if (len > mio->sprintf.xbuf.capa - mio->sprintf.xbuf.len)
{
mio_ooch_t* tmp;
mio_oow_t newcapa;
newcapa = mio->sprintf.xbuf.len + len + 1;
newcapa = MIO_ALIGN_POW2(newcapa, 256);
tmp = (mio_ooch_t*)mio_reallocmem(mio, mio->sprintf.xbuf.ptr, newcapa * MIO_SIZEOF(*tmp));
if (!tmp) return -1;
mio->sprintf.xbuf.ptr = tmp;
mio->sprintf.xbuf.capa = newcapa;
}
MIO_MEMCPY (&mio->sprintf.xbuf.ptr[mio->sprintf.xbuf.len], ptr, len * MIO_SIZEOF(*ptr));
mio->sprintf.xbuf.len += len;
return 1; /* success */
}
static int put_sprch (mio_t* mio, mio_bitmask_t mask, mio_ooch_t ch, mio_oow_t len)
{
if (len > mio->sprintf.xbuf.capa - mio->sprintf.xbuf.len)
{
mio_ooch_t* tmp;
mio_oow_t newcapa;
newcapa = mio->sprintf.xbuf.len + len + 1;
newcapa = MIO_ALIGN_POW2(newcapa, 256);
tmp = (mio_ooch_t*)mio_reallocmem(mio, mio->sprintf.xbuf.ptr, newcapa * MIO_SIZEOF(*tmp));
if (!tmp) return -1;
mio->sprintf.xbuf.ptr = tmp;
mio->sprintf.xbuf.capa = newcapa;
}
while (len > 0)
{
--len;
mio->sprintf.xbuf.ptr[mio->sprintf.xbuf.len++] = ch;
}
return 1; /* success */
}
static int _sprbfmtv (mio_t* mio, const mio_bch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logbfmtv (mio, fmt, data, ap);
}
/*
static int _sprufmtv (mio_t* mio, const mio_uch_t* fmt, mio_fmtout_data_t* data, va_list ap)
{
return __logufmtv (mio, fmt, data, ap, __sprbfmtv);
}*/
mio_ooi_t mio_sproutbfmt (mio_t* mio, mio_bitmask_t mask, const mio_bch_t* fmt, ...)
{
int x;
va_list ap;
mio_fmtout_data_t fo;
fo.mask = mask;
fo.putch = put_sprch;
fo.putcs = put_sprcs;
va_start (ap, fmt);
x = _sprbfmtv(mio, fmt, &fo, ap);
va_end (ap);
return (x <= -1)? -1: fo.count;
}
/*
mio_ooi_t mio_sproutufmt (mio_t* mio, mio_bitmask_t mask, const mio_uch_t* fmt, ...)
{
int x;
va_list ap;
mio_fmtout_data_t fo;
fo.mask = mask;
fo.putch = put_sprch;
fo.putcs = put_sprcs;
va_start (ap, fmt);
x = _sprufmtv (mio, fmt, &fo, ap);
va_end (ap);
return (x <= -1)? -1: fo.count;
}*/

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,6 @@
#include "mio.h"
#include "mio-utl.h"
#include <stdarg.h>
#if defined(__has_builtin)
@ -160,24 +159,6 @@ int mio_gettmrtmout (
mio_ntime_t* tmout
);
/* ========================================================================= */
/* err.c */
/* ========================================================================= */
void mio_seterrbfmtv (
mio_t* mio,
mio_errnum_t errnum,
const mio_bch_t* fmt,
va_list ap
);
void mio_seterrufmtv (
mio_t* mio,
mio_errnum_t errnum,
const mio_uch_t* fmt,
va_list ap
);
/* ========================================================================== */
/* system intefaces */
/* ========================================================================== */

View File

@ -28,6 +28,7 @@
#define _MIO_UTL_H_
#include "mio-cmn.h"
#include <stdarg.h>
/* =========================================================================
* ENDIAN CHANGE OF A CONSTANT
@ -154,6 +155,44 @@
# error UNKNOWN ENDIAN
#endif
/* =========================================================================
* FORMATTED OUTPUT
* ========================================================================= */
typedef struct mio_fmtout_t mio_fmtout_t;
typedef int (*mio_fmtout_putbcs_t) (
mio_fmtout_t* fmtout,
const mio_bch_t* ptr,
mio_oow_t len
);
typedef int (*mio_fmtout_putucs_t) (
mio_fmtout_t* fmtout,
const mio_uch_t* ptr,
mio_oow_t len
);
enum mio_fmtout_fmt_type_t
{
MIO_FMTOUT_FMT_TYPE_BCH = 0,
MIO_FMTOUT_FMT_TYPE_UCH
};
typedef enum mio_fmtout_fmt_type_t mio_fmtout_fmt_type_t;
struct mio_fmtout_t
{
mio_oow_t count; /* out */
mio_fmtout_putbcs_t putbcs; /* in */
mio_fmtout_putucs_t putucs; /* in */
mio_bitmask_t mask; /* in */
void* ctx; /* in */
mio_fmtout_fmt_type_t fmt_type;
const void* fmt_str;
};
#ifdef __cplusplus
extern "C" {
@ -510,8 +549,38 @@ MIO_EXPORT mio_oow_t mio_utf8_to_uc (
mio_uch_t* uc
);
/* ------------------------------------------------------------------------- */
/* =========================================================================
* FORMATTED OUTPUT
* ========================================================================= */
MIO_EXPORT int mio_bfmt_outv (
mio_fmtout_t* fmtout,
const mio_bch_t* fmt,
va_list ap
);
MIO_EXPORT int mio_ufmt_outv (
mio_fmtout_t* fmtout,
const mio_uch_t* fmt,
va_list ap
);
MIO_EXPORT int mio_bfmt_out (
mio_fmtout_t* fmtout,
const mio_bch_t* fmt,
...
);
MIO_EXPORT int mio_ufmt_out (
mio_fmtout_t* fmtout,
const mio_uch_t* fmt,
...
);
/* =========================================================================
* BIT SWAP
* ========================================================================= */
#if defined(MIO_HAVE_INLINE)
#if defined(MIO_HAVE_UINT16_T)

View File

@ -27,7 +27,8 @@
#ifndef _MIO_H_
#define _MIO_H_
#include <mio-cmn.h>
#include "mio-cmn.h"
#include <stdarg.h>
#if defined(_WIN32)
typedef mio_uintptr_t qse_syshnd_t;
@ -679,6 +680,20 @@ MIO_EXPORT void mio_seterrufmt (
...
);
MIO_EXPORT void mio_seterrbfmtv (
mio_t* mio,
mio_errnum_t errnum,
const mio_bch_t* fmt,
va_list ap
);
MIO_EXPORT void mio_seterrufmtv (
mio_t* mio,
mio_errnum_t errnum,
const mio_uch_t* fmt,
va_list ap
);
MIO_EXPORT void mio_seterrbfmtwithsyserr (
mio_t* mio,
int syserr_type,