refactored the formatter code
This commit is contained in:
parent
cff18d2067
commit
3f60b8e4e8
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
122
mio/lib/err.c
122
mio/lib/err.c
@ -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
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
707
mio/lib/fmtout.c
707
mio/lib/fmtout.c
@ -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;
|
||||
}*/
|
||||
|
1172
mio/lib/fmtoutv.h
1172
mio/lib/fmtoutv.h
File diff suppressed because it is too large
Load Diff
@ -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 */
|
||||
/* ========================================================================== */
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user