added win32 nwio
This commit is contained in:
@ -5,7 +5,7 @@ AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(includedir)
|
||||
|
||||
bin_PROGRAMS = awk01 awk02 awk03 awk04 awk09 awk10
|
||||
bin_PROGRAMS = awk01 awk02 awk03 awk04 awk09 awk10 awk11
|
||||
|
||||
LDFLAGS = -L../../lib/awk -L../../lib/cmn
|
||||
LDADD = -lqseawk -lqsecmn $(LIBM)
|
||||
@ -20,6 +20,7 @@ awk03_SOURCES = awk03.c
|
||||
awk04_SOURCES = awk04.c
|
||||
awk09_SOURCES = awk09.c
|
||||
awk10_SOURCES = awk10.c
|
||||
awk11_SOURCES = awk11.c
|
||||
|
||||
if ENABLE_CXX
|
||||
|
||||
|
@ -35,7 +35,8 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
bin_PROGRAMS = awk01$(EXEEXT) awk02$(EXEEXT) awk03$(EXEEXT) \
|
||||
awk04$(EXEEXT) awk09$(EXEEXT) awk10$(EXEEXT) $(am__EXEEXT_1)
|
||||
awk04$(EXEEXT) awk09$(EXEEXT) awk10$(EXEEXT) awk11$(EXEEXT) \
|
||||
$(am__EXEEXT_1)
|
||||
@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS)
|
||||
@ENABLE_CXX_TRUE@am__append_2 = awk05 awk06 awk07 awk08
|
||||
subdir = samples/awk
|
||||
@ -103,6 +104,10 @@ am_awk10_OBJECTS = awk10.$(OBJEXT)
|
||||
awk10_OBJECTS = $(am_awk10_OBJECTS)
|
||||
awk10_LDADD = $(LDADD)
|
||||
awk10_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
am_awk11_OBJECTS = awk11.$(OBJEXT)
|
||||
awk11_OBJECTS = $(am_awk11_OBJECTS)
|
||||
awk11_LDADD = $(LDADD)
|
||||
awk11_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
DEFAULT_INCLUDES =
|
||||
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@ -128,11 +133,12 @@ CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES) \
|
||||
$(awk04_SOURCES) $(awk05_SOURCES) $(awk06_SOURCES) \
|
||||
$(awk07_SOURCES) $(awk08_SOURCES) $(awk09_SOURCES) \
|
||||
$(awk10_SOURCES)
|
||||
$(awk10_SOURCES) $(awk11_SOURCES)
|
||||
DIST_SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES) \
|
||||
$(awk04_SOURCES) $(am__awk05_SOURCES_DIST) \
|
||||
$(am__awk06_SOURCES_DIST) $(am__awk07_SOURCES_DIST) \
|
||||
$(am__awk08_SOURCES_DIST) $(awk09_SOURCES) $(awk10_SOURCES)
|
||||
$(am__awk08_SOURCES_DIST) $(awk09_SOURCES) $(awk10_SOURCES) \
|
||||
$(awk11_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
@ -295,6 +301,7 @@ awk03_SOURCES = awk03.c
|
||||
awk04_SOURCES = awk04.c
|
||||
awk09_SOURCES = awk09.c
|
||||
awk10_SOURCES = awk10.c
|
||||
awk11_SOURCES = awk11.c
|
||||
@ENABLE_CXX_TRUE@CXXLIB = -lqseawkxx -lqsecmnxx
|
||||
@ENABLE_CXX_TRUE@awk05_SOURCES = awk05.cpp
|
||||
@ENABLE_CXX_TRUE@awk06_SOURCES = awk06.cpp
|
||||
@ -411,6 +418,9 @@ awk09$(EXEEXT): $(awk09_OBJECTS) $(awk09_DEPENDENCIES)
|
||||
awk10$(EXEEXT): $(awk10_OBJECTS) $(awk10_DEPENDENCIES)
|
||||
@rm -f awk10$(EXEEXT)
|
||||
$(LINK) $(awk10_OBJECTS) $(awk10_LDADD) $(LIBS)
|
||||
awk11$(EXEEXT): $(awk11_OBJECTS) $(awk11_DEPENDENCIES)
|
||||
@rm -f awk11$(EXEEXT)
|
||||
$(LINK) $(awk11_OBJECTS) $(awk11_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
@ -428,6 +438,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk08.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk09.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk10.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk11.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
|
128
qse/samples/awk/awk11.c
Normal file
128
qse/samples/awk/awk11.c
Normal file
@ -0,0 +1,128 @@
|
||||
/*
|
||||
* $Id: awk01.c 441 2011-04-22 14:28:43Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
|
||||
QSE is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation, either version 3 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
QSE is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with QSE. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <qse/awk/std.h>
|
||||
#include <qse/cmn/stdio.h>
|
||||
|
||||
const qse_char_t* src = QSE_T("BEGIN { print \"hello, world\" | \"dir\"; }");
|
||||
|
||||
struct rtx_xtn_t
|
||||
{
|
||||
qse_awk_rio_fun_t old_pipe_handler;
|
||||
};
|
||||
|
||||
static qse_ssize_t new_pipe_handler (
|
||||
qse_awk_rtx_t* rtx, qse_awk_rio_cmd_t cmd, qse_awk_rio_arg_t* riod,
|
||||
qse_char_t* data, qse_size_t size)
|
||||
{
|
||||
struct rtx_xtn_t* xtn;
|
||||
xtn = qse_awk_rtx_getxtnstd (rtx);
|
||||
|
||||
if (cmd == QSE_AWK_RIO_OPEN)
|
||||
qse_fprintf (QSE_STDERR, QSE_T("LOG: Executing [%s] for piping\n"), riod->name);
|
||||
|
||||
return xtn->old_pipe_handler (rtx, cmd, riod, data, size);
|
||||
}
|
||||
|
||||
static void extend_pipe_handler (qse_awk_rtx_t* rtx)
|
||||
{
|
||||
/* this function simply demonstrates how to extend
|
||||
* runtime I/O handlers provided by qse_awk_rtx_openstd() */
|
||||
|
||||
struct rtx_xtn_t* xtn;
|
||||
qse_awk_rio_t rio;
|
||||
|
||||
xtn = qse_awk_rtx_getxtnstd (rtx);
|
||||
|
||||
/* get the previous handler functions */
|
||||
qse_awk_rtx_getrio (rtx, &rio);
|
||||
|
||||
/* remember the old pipe handler function */
|
||||
xtn->old_pipe_handler = rio.pipe;
|
||||
|
||||
/* change the pipe handler to a new one */
|
||||
rio.pipe = new_pipe_handler;
|
||||
|
||||
/* changes the handlers with a new set */
|
||||
qse_awk_rtx_setrio (rtx, &rio);
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
qse_awk_t* awk = QSE_NULL;
|
||||
qse_awk_rtx_t* rtx = QSE_NULL;
|
||||
qse_awk_val_t* retv;
|
||||
qse_awk_parsestd_t psin;
|
||||
int ret = -1;
|
||||
|
||||
awk = qse_awk_openstd (0);
|
||||
if (awk == QSE_NULL)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot open awk\n"));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
//qse_awk_setoption (awk, qse_awk_getoption(awk) | QSE_AWK_RWPIPE);
|
||||
|
||||
psin.type = QSE_AWK_PARSESTD_STR;
|
||||
psin.u.str.ptr = src;
|
||||
psin.u.str.len = qse_strlen(src);
|
||||
|
||||
if (qse_awk_parsestd (awk, &psin, QSE_NULL) <= -1)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"),
|
||||
qse_awk_geterrmsg(awk));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
rtx = qse_awk_rtx_openstd (
|
||||
awk,
|
||||
QSE_SIZEOF(struct rtx_xtn_t),
|
||||
QSE_T("awk11"),
|
||||
QSE_NULL, /* stdin */
|
||||
QSE_NULL, /* stdout */
|
||||
QSE_NULL /* default cmgr */
|
||||
);
|
||||
if (rtx == QSE_NULL)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"),
|
||||
qse_awk_geterrmsg(awk));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
extend_pipe_handler (rtx);
|
||||
|
||||
retv = qse_awk_rtx_loop (rtx);
|
||||
if (retv == QSE_NULL)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"),
|
||||
qse_awk_rtx_geterrmsg(rtx));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
qse_awk_rtx_refdownval (rtx, retv);
|
||||
ret = 0;
|
||||
|
||||
oops:
|
||||
if (rtx != QSE_NULL) qse_awk_rtx_close (rtx);
|
||||
if (awk != QSE_NULL) qse_awk_close (awk);
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user