diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index 9303b68e..e5c144fc 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c 273 2009-08-28 11:58:05Z hyunghwan.chung $ + * $Id: awk.c 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -22,7 +22,7 @@ #include #include #include - +#include #include #include @@ -346,9 +346,10 @@ struct opttab_t static void print_usage (QSE_FILE* out, const qse_char_t* argv0) { int j; + const qse_char_t* b = qse_basename (argv0); - qse_fprintf (out, QSE_T("USAGE: %s [options] -f sourcefile [ -- ] [datafile]*\n"), argv0); - qse_fprintf (out, QSE_T(" %s [options] [ -- ] sourcestring [datafile]*\n"), argv0); + qse_fprintf (out, QSE_T("USAGE: %s [options] -f sourcefile [ -- ] [datafile]*\n"), b); + qse_fprintf (out, QSE_T(" %s [options] [ -- ] sourcestring [datafile]*\n"), b); qse_fprintf (out, QSE_T("Where options are:\n")); qse_fprintf (out, QSE_T(" -h/--help print this message\n")); qse_fprintf (out, QSE_T(" -d show extra information\n")); diff --git a/qse/cmd/sed/sed.c b/qse/cmd/sed/sed.c index 988665dd..e544cf1d 100644 --- a/qse/cmd/sed/sed.c +++ b/qse/cmd/sed/sed.c @@ -17,13 +17,16 @@ */ #include -#include -#include #include #include #include +#include +#include +#include +#include -static const qse_char_t* g_script = QSE_NULL; +static const qse_char_t* g_script_file = QSE_NULL; +static qse_char_t* g_script = QSE_NULL; static const qse_char_t* g_infile = QSE_NULL; static int g_option = 0; @@ -114,21 +117,26 @@ static qse_ssize_t out ( static void print_usage (QSE_FILE* out, int argc, qse_char_t* argv[]) { - qse_fprintf (out, QSE_T("%s [options] script [file]\n"), argv[0]); + const qse_char_t* b = qse_basename (argv[0]); + + qse_fprintf (out, QSE_T("USAGE: %s [options] script [file]\n"), b); + qse_fprintf (out, QSE_T(" %s [options] -f script-file [file]\n"), b); + qse_fprintf (out, QSE_T("options as follows:\n")); - qse_fprintf (out, QSE_T(" -h show this message\n")); - qse_fprintf (out, QSE_T(" -n disable auto-print\n")); - qse_fprintf (out, QSE_T(" -a perform strict address check\n")); - qse_fprintf (out, QSE_T(" -r allows {n,m} in a regular expression\n")); - qse_fprintf (out, QSE_T(" -s allows text on the same line as c, a, i\n")); - qse_fprintf (out, QSE_T(" -l ensures a newline at text end")); + qse_fprintf (out, QSE_T(" -h show this message\n")); + qse_fprintf (out, QSE_T(" -n disable auto-print\n")); + qse_fprintf (out, QSE_T(" -a perform strict address check\n")); + qse_fprintf (out, QSE_T(" -r allow {n,m} in a regular expression\n")); + qse_fprintf (out, QSE_T(" -s allow text on the same line as c, a, i\n")); + qse_fprintf (out, QSE_T(" -l ensure a newline at text end\n")); + qse_fprintf (out, QSE_T(" -f file specifie a s script file\n")); } static int handle_args (int argc, qse_char_t* argv[]) { static qse_opt_t opt = { - QSE_T("hnarsl"), + QSE_T("hnarslf:"), QSE_NULL }; qse_cint_t c; @@ -180,14 +188,20 @@ static int handle_args (int argc, qse_char_t* argv[]) case QSE_T('l'): g_option |= QSE_SED_ENSURENL; break; + + case QSE_T('f'): + g_script_file = opt.arg; + break; } } - if (opt.ind < argc) g_script = argv[opt.ind++]; + if (opt.ind < argc && g_script_file == QSE_NULL) + g_script = argv[opt.ind++]; if (opt.ind < argc) g_infile = argv[opt.ind++]; - if (g_script == QSE_NULL || opt.ind < argc) + if ((g_script_file == QSE_NULL && g_script == QSE_NULL) || + opt.ind < argc) { print_usage (QSE_STDERR, argc, argv); return -1; @@ -217,6 +231,14 @@ int sed_main (int argc, qse_char_t* argv[]) qse_sed_setoption (sed, g_option); + if (g_script_file != QSE_NULL) + { + QSE_ASSERT (g_script == QSE_NULL); + qse_fprintf (QSE_STDERR, QSE_T("-f file not implemented yet\n")); + goto oops; + /* TODO: load script from a file */ + } + if (qse_sed_comp (sed, g_script, qse_strlen(g_script)) == -1) { const qse_sed_loc_t* errloc = qse_sed_geterrloc(sed); @@ -265,6 +287,7 @@ int sed_main (int argc, qse_char_t* argv[]) oops: if (sed != QSE_NULL) qse_sed_close (sed); + if (g_script_file != QSE_NULL && g_script != QSE_NULL) free (g_script); return ret; } diff --git a/qse/include/qse/cmn/misc.h b/qse/include/qse/cmn/misc.h new file mode 100644 index 00000000..de01c952 --- /dev/null +++ b/qse/include/qse/cmn/misc.h @@ -0,0 +1,18 @@ +#ifndef _QSE_CMN_MISC_H_ +#define _QSE_CMN_MISC_H_ + +#include +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +const qse_char_t* qse_basename (const qse_char_t* path); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/awk/Makefile.am b/qse/lib/awk/Makefile.am index 42385949..433290d2 100644 --- a/qse/lib/awk/Makefile.am +++ b/qse/lib/awk/Makefile.am @@ -9,8 +9,8 @@ libqseawk_la_LDFLAGS = -L../cmn -version-info 1:0:0 -no-undefined libqseawk_la_LIBADD = -lqsecmn $(LIBM) if ENABLE_CXX -lib_LTLIBRARIES += libqseawk++.la -libqseawk___la_SOURCES = Awk.cpp StdAwk.cpp -libqseawk___la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined -libqseawk___la_LIBADD = -lqseawk -lqsecmn $(LIBM) +lib_LTLIBRARIES += libqseawkxx.la +libqseawkxx_la_SOURCES = Awk.cpp StdAwk.cpp +libqseawkxx_la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined +libqseawkxx_la_LIBADD = -lqseawk -lqsecmn $(LIBM) endif diff --git a/qse/lib/awk/Makefile.in b/qse/lib/awk/Makefile.in index 6508e539..d9b324ec 100644 --- a/qse/lib/awk/Makefile.in +++ b/qse/lib/awk/Makefile.in @@ -32,7 +32,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@ENABLE_CXX_TRUE@am__append_1 = libqseawk++.la +@ENABLE_CXX_TRUE@am__append_1 = libqseawkxx.la subdir = lib/awk DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -56,14 +56,6 @@ am__installdirs = "$(DESTDIR)$(libdir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = -@ENABLE_CXX_TRUE@libqseawk___la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__libqseawk___la_SOURCES_DIST = Awk.cpp StdAwk.cpp -@ENABLE_CXX_TRUE@am_libqseawk___la_OBJECTS = Awk.lo StdAwk.lo -libqseawk___la_OBJECTS = $(am_libqseawk___la_OBJECTS) -libqseawk___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libqseawk___la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_CXX_TRUE@am_libqseawk___la_rpath = -rpath $(libdir) libqseawk_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_libqseawk_la_OBJECTS = awk.lo err.lo tree.lo parse.lo run.lo rec.lo \ val.lo fnc.lo misc.lo rio.lo std.lo @@ -71,6 +63,14 @@ libqseawk_la_OBJECTS = $(am_libqseawk_la_OBJECTS) libqseawk_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqseawk_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_CXX_TRUE@libqseawkxx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__libqseawkxx_la_SOURCES_DIST = Awk.cpp StdAwk.cpp +@ENABLE_CXX_TRUE@am_libqseawkxx_la_OBJECTS = Awk.lo StdAwk.lo +libqseawkxx_la_OBJECTS = $(am_libqseawkxx_la_OBJECTS) +libqseawkxx_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libqseawkxx_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_CXX_TRUE@am_libqseawkxx_la_rpath = -rpath $(libdir) DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/au/depcomp am__depfiles_maybe = depfiles @@ -92,9 +92,9 @@ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libqseawk___la_SOURCES) $(libqseawk_la_SOURCES) -DIST_SOURCES = $(am__libqseawk___la_SOURCES_DIST) \ - $(libqseawk_la_SOURCES) +SOURCES = $(libqseawk_la_SOURCES) $(libqseawkxx_la_SOURCES) +DIST_SOURCES = $(libqseawk_la_SOURCES) \ + $(am__libqseawkxx_la_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -240,9 +240,9 @@ lib_LTLIBRARIES = libqseawk.la $(am__append_1) libqseawk_la_SOURCES = awk.c err.c tree.c parse.c run.c rec.c val.c fnc.c misc.c rio.c std.c awk.h err.h rio.h val.h fnc.h misc.h parse.h run.h tree.h libqseawk_la_LDFLAGS = -L../cmn -version-info 1:0:0 -no-undefined libqseawk_la_LIBADD = -lqsecmn $(LIBM) -@ENABLE_CXX_TRUE@libqseawk___la_SOURCES = Awk.cpp StdAwk.cpp -@ENABLE_CXX_TRUE@libqseawk___la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined -@ENABLE_CXX_TRUE@libqseawk___la_LIBADD = -lqseawk -lqsecmn $(LIBM) +@ENABLE_CXX_TRUE@libqseawkxx_la_SOURCES = Awk.cpp StdAwk.cpp +@ENABLE_CXX_TRUE@libqseawkxx_la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined +@ENABLE_CXX_TRUE@libqseawkxx_la_LIBADD = -lqseawk -lqsecmn $(LIBM) all: all-am .SUFFIXES: @@ -303,10 +303,10 @@ clean-libLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libqseawk++.la: $(libqseawk___la_OBJECTS) $(libqseawk___la_DEPENDENCIES) - $(libqseawk___la_LINK) $(am_libqseawk___la_rpath) $(libqseawk___la_OBJECTS) $(libqseawk___la_LIBADD) $(LIBS) libqseawk.la: $(libqseawk_la_OBJECTS) $(libqseawk_la_DEPENDENCIES) $(libqseawk_la_LINK) -rpath $(libdir) $(libqseawk_la_OBJECTS) $(libqseawk_la_LIBADD) $(LIBS) +libqseawkxx.la: $(libqseawkxx_la_OBJECTS) $(libqseawkxx_la_DEPENDENCIES) + $(libqseawkxx_la_LINK) $(am_libqseawkxx_la_rpath) $(libqseawkxx_la_OBJECTS) $(libqseawkxx_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) diff --git a/qse/lib/awk/StdAwk.cpp b/qse/lib/awk/StdAwk.cpp index ac651679..b6b8a66b 100644 --- a/qse/lib/awk/StdAwk.cpp +++ b/qse/lib/awk/StdAwk.cpp @@ -1,5 +1,5 @@ /* - * $Id: StdAwk.cpp 272 2009-08-28 09:48:02Z hyunghwan.chung $ + * $Id: StdAwk.cpp 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "awk.h" @@ -823,7 +824,7 @@ int StdAwk::SourceFile::open (Data& io) return -1; } - base = qse_awk_basename ((awk_t*)io, name); + base = qse_basename (name); if (base != name) { dir.ptr = name; diff --git a/qse/lib/awk/misc.c b/qse/lib/awk/misc.c index 2d4379d1..105d475a 100644 --- a/qse/lib/awk/misc.c +++ b/qse/lib/awk/misc.c @@ -1,5 +1,5 @@ /* - * $Id: misc.c 250 2009-08-10 03:29:59Z hyunghwan.chung $ + * $Id: misc.c 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -999,17 +999,3 @@ void qse_awk_rtx_free (qse_awk_rtx_t* rtx, void* ptr) qse_awk_free (rtx->awk, ptr); } -const qse_char_t* qse_awk_basename (qse_awk_t* awk, const qse_char_t* path) -{ - const qse_char_t* p, * last = QSE_NULL; - - for (p = path; *p != QSE_T('\0'); p++) - { - if (*p == QSE_T('/')) last = p; -#ifdef _WIN32 - else if (*p == QSE_T('\\')) last = p; -#endif - } - - return (last == QSE_NULL)? path: (last + 1); -} diff --git a/qse/lib/awk/misc.h b/qse/lib/awk/misc.h index 960a2035..2de15ddf 100644 --- a/qse/lib/awk/misc.h +++ b/qse/lib/awk/misc.h @@ -1,5 +1,5 @@ /* - * $Id: misc.h 250 2009-08-10 03:29:59Z hyunghwan.chung $ + * $Id: misc.h 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -67,11 +67,6 @@ int qse_awk_matchrex ( qse_cstr_t* match, qse_awk_errnum_t* errnum ); -const qse_char_t* qse_awk_basename ( - qse_awk_t* awk, - const qse_char_t* path -); - #ifdef __cplusplus } #endif diff --git a/qse/lib/awk/std.c b/qse/lib/awk/std.c index 55c59c3c..709b8e8b 100644 --- a/qse/lib/awk/std.c +++ b/qse/lib/awk/std.c @@ -1,5 +1,5 @@ /* - * $Id: std.c 273 2009-08-28 11:58:05Z hyunghwan.chung $ + * $Id: std.c 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -22,6 +22,7 @@ #include #include #include +#include #include /* TODO: remove dependency on qse_vsprintf */ #include @@ -191,7 +192,7 @@ static qse_ssize_t sf_in_open ( return -1; } - base = qse_awk_basename (awk, xtn->s.in.u.file); + base = qse_basename (xtn->s.in.u.file); if (base != xtn->s.in.u.file) { xtn->s.in.dir.ptr = xtn->s.in.u.file; diff --git a/qse/lib/cmn/misc.c b/qse/lib/cmn/misc.c index c75a2009..e2b9f252 100644 --- a/qse/lib/cmn/misc.c +++ b/qse/lib/cmn/misc.c @@ -1,5 +1,5 @@ /* - * $Id: misc.c 76 2009-02-22 14:18:06Z hyunghwan.chung $ + * $Id: misc.c 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -16,8 +16,19 @@ limitations under the License. */ -#if defined(__BORLANDC__) -#pragma hdrstop -#define Library -#endif +#include +const qse_char_t* qse_basename (const qse_char_t* path) +{ + const qse_char_t* p, * last = QSE_NULL; + + for (p = path; *p != QSE_T('\0'); p++) + { + if (*p == QSE_T('/')) last = p; + #ifdef _WIN32 + else if (*p == QSE_T('\\')) last = p; + #endif + } + + return (last == QSE_NULL)? path: (last + 1); +} diff --git a/qse/lib/sed/Makefile.am b/qse/lib/sed/Makefile.am index 100df085..1692ec70 100644 --- a/qse/lib/sed/Makefile.am +++ b/qse/lib/sed/Makefile.am @@ -7,9 +7,9 @@ libqsesed_la_LDFLAGS = -version-info 1:0:0 -no-undefined -L../cmn libqsesed_la_LIBADD = -lqsecmn if ENABLE_CXX -lib_LTLIBRARIES += libqsesed++.la -libqsesed___la_SOURCES = Sed.cpp StdSed.cpp -libqsesed___la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined -libqsesed___la_LIBADD = -lqsesed -lqsecmn +lib_LTLIBRARIES += libqsesedxx.la +libqsesedxx_la_SOURCES = Sed.cpp StdSed.cpp +libqsesedxx_la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined +libqsesedxx_la_LIBADD = -lqsesed -lqsecmn endif diff --git a/qse/lib/sed/Makefile.in b/qse/lib/sed/Makefile.in index c6c7bb23..84259baa 100644 --- a/qse/lib/sed/Makefile.in +++ b/qse/lib/sed/Makefile.in @@ -32,7 +32,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@ENABLE_CXX_TRUE@am__append_1 = libqsesed++.la +@ENABLE_CXX_TRUE@am__append_1 = libqsesedxx.la subdir = lib/sed DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -55,20 +55,20 @@ am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) -libqsesed___la_DEPENDENCIES = -am__libqsesed___la_SOURCES_DIST = Sed.cpp StdSed.cpp -@ENABLE_CXX_TRUE@am_libqsesed___la_OBJECTS = Sed.lo StdSed.lo -libqsesed___la_OBJECTS = $(am_libqsesed___la_OBJECTS) -libqsesed___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libqsesed___la_LDFLAGS) $(LDFLAGS) -o $@ -@ENABLE_CXX_TRUE@am_libqsesed___la_rpath = -rpath $(libdir) libqsesed_la_DEPENDENCIES = am_libqsesed_la_OBJECTS = sed.lo err.lo libqsesed_la_OBJECTS = $(am_libqsesed_la_OBJECTS) libqsesed_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libqsesed_la_LDFLAGS) $(LDFLAGS) -o $@ +libqsesedxx_la_DEPENDENCIES = +am__libqsesedxx_la_SOURCES_DIST = Sed.cpp StdSed.cpp +@ENABLE_CXX_TRUE@am_libqsesedxx_la_OBJECTS = Sed.lo StdSed.lo +libqsesedxx_la_OBJECTS = $(am_libqsesedxx_la_OBJECTS) +libqsesedxx_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libqsesedxx_la_LDFLAGS) $(LDFLAGS) -o $@ +@ENABLE_CXX_TRUE@am_libqsesedxx_la_rpath = -rpath $(libdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/qse depcomp = $(SHELL) $(top_srcdir)/ac/au/depcomp am__depfiles_maybe = depfiles @@ -90,9 +90,9 @@ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = $(libqsesed___la_SOURCES) $(libqsesed_la_SOURCES) -DIST_SOURCES = $(am__libqsesed___la_SOURCES_DIST) \ - $(libqsesed_la_SOURCES) +SOURCES = $(libqsesed_la_SOURCES) $(libqsesedxx_la_SOURCES) +DIST_SOURCES = $(libqsesed_la_SOURCES) \ + $(am__libqsesedxx_la_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -237,9 +237,9 @@ lib_LTLIBRARIES = libqsesed.la $(am__append_1) libqsesed_la_SOURCES = sed.c err.c sed.h libqsesed_la_LDFLAGS = -version-info 1:0:0 -no-undefined -L../cmn libqsesed_la_LIBADD = -lqsecmn -@ENABLE_CXX_TRUE@libqsesed___la_SOURCES = Sed.cpp StdSed.cpp -@ENABLE_CXX_TRUE@libqsesed___la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined -@ENABLE_CXX_TRUE@libqsesed___la_LIBADD = -lqsesed -lqsecmn +@ENABLE_CXX_TRUE@libqsesedxx_la_SOURCES = Sed.cpp StdSed.cpp +@ENABLE_CXX_TRUE@libqsesedxx_la_LDFLAGS = -L. -L../cmn -version-info 1:0:0 -no-undefined +@ENABLE_CXX_TRUE@libqsesedxx_la_LIBADD = -lqsesed -lqsecmn all: all-am .SUFFIXES: @@ -300,10 +300,10 @@ clean-libLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libqsesed++.la: $(libqsesed___la_OBJECTS) $(libqsesed___la_DEPENDENCIES) - $(libqsesed___la_LINK) $(am_libqsesed___la_rpath) $(libqsesed___la_OBJECTS) $(libqsesed___la_LIBADD) $(LIBS) libqsesed.la: $(libqsesed_la_OBJECTS) $(libqsesed_la_DEPENDENCIES) $(libqsesed_la_LINK) -rpath $(libdir) $(libqsesed_la_OBJECTS) $(libqsesed_la_LIBADD) $(LIBS) +libqsesedxx.la: $(libqsesedxx_la_OBJECTS) $(libqsesedxx_la_DEPENDENCIES) + $(libqsesedxx_la_LINK) $(am_libqsesedxx_la_rpath) $(libqsesedxx_la_OBJECTS) $(libqsesedxx_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) diff --git a/qse/lib/sed/sed.c b/qse/lib/sed/sed.c index 00776dcc..1d798b40 100644 --- a/qse/lib/sed/sed.c +++ b/qse/lib/sed/sed.c @@ -1,5 +1,5 @@ /* - * $Id: sed.c 277 2009-09-02 12:55:55Z hyunghwan.chung $ + * $Id: sed.c 278 2009-09-04 13:08:19Z hyunghwan.chung $ * Copyright 2006-2009 Chung, Hyung-Hwan. @@ -2365,13 +2365,16 @@ static qse_sed_cmd_t* exec_cmd (qse_sed_t* sed, qse_sed_cmd_t* cmd) break; case QSE_SED_CMD_NEXT: - /* output the current pattern space */ - n = write_str ( - sed, - QSE_STR_PTR(&sed->e.in.line), - QSE_STR_LEN(&sed->e.in.line) - ); - if (n <= -1) return QSE_NULL; + if (!(sed->option & QSE_SED_QUIET)) + { + /* output the current pattern space */ + n = write_str ( + sed, + QSE_STR_PTR(&sed->e.in.line), + QSE_STR_LEN(&sed->e.in.line) + ); + if (n <= -1) return QSE_NULL; + } /* read the next line and fill the pattern space */ n = read_line (sed, 0); diff --git a/qse/regress/awk/lang-036.awk b/qse/regress/awk/lang-036.awk new file mode 100644 index 00000000..7abcd263 --- /dev/null +++ b/qse/regress/awk/lang-036.awk @@ -0,0 +1,8 @@ +{ + if ($0 ~ /^-+$/) { + getline x; printf " %s\n", x; nobar=0; + } + else { + if (nobar) printf "\n"; printf "%s", $0; nobar=1; + } +} diff --git a/qse/regress/awk/lang-036.dat b/qse/regress/awk/lang-036.dat new file mode 100644 index 00000000..5b0be8f2 --- /dev/null +++ b/qse/regress/awk/lang-036.dat @@ -0,0 +1,23 @@ +ab...c +------ +AAA + +de...f +gh...i +------ +AAA1 + +jk...l +mn...o +pq...r +------ +AAA2 + + + +kbs +------ +ddd +dif +------ +cccc diff --git a/qse/regress/awk/lang-037.awk b/qse/regress/awk/lang-037.awk new file mode 100644 index 00000000..3985295f --- /dev/null +++ b/qse/regress/awk/lang-037.awk @@ -0,0 +1,9 @@ +BEGIN { + RS="\n-+\n"; + first = 1; +} +{ + if (!first) printf " "; + printf "%s", $0; + first = 0; +} diff --git a/qse/regress/awk/lang-037.dat b/qse/regress/awk/lang-037.dat new file mode 100644 index 00000000..5b0be8f2 --- /dev/null +++ b/qse/regress/awk/lang-037.dat @@ -0,0 +1,23 @@ +ab...c +------ +AAA + +de...f +gh...i +------ +AAA1 + +jk...l +mn...o +pq...r +------ +AAA2 + + + +kbs +------ +ddd +dif +------ +cccc diff --git a/qse/regress/awk/regress.out b/qse/regress/awk/regress.out index 12283de8..49b34906 100644 --- a/qse/regress/awk/regress.out +++ b/qse/regress/awk/regress.out @@ -1931,6 +1931,66 @@ lease 10.218.255.151 { uid "\001\000\033[\234\220\000"; } -------------------------------------------------------------------------------- +../../cmd/awk/qseawk --newline=on -o- -f lang-036.awk lang-036.dat &1 +-------------------------------------------------------------------------------- +{ + if (($0 ~ /^-+$/)) + { + (getline x); + printf " %s\n",x; + nobar = 0; + } + else + { + if (nobar) + printf "\n"; + printf "%s",$0; + nobar = 1; + } +} + +ab...c AAA + +de...f +gh...i AAA1 + +jk...l +mn...o +pq...r AAA2 + + + +kbs ddd +dif cccc +-------------------------------------------------------------------------------- +../../cmd/awk/qseawk --newline=on -o- -f lang-037.awk lang-037.dat &1 +-------------------------------------------------------------------------------- +BEGIN { + RS = "\n-+\n"; + first = 1; +} + +{ + if ((!(first))) + printf " "; + printf "%s",$0; + first = 0; +} + +ab...c AAA + +de...f +gh...i AAA1 + +jk...l +mn...o +pq...r AAA2 + + + +kbs ddd +dif cccc +-------------------------------------------------------------------------------- ../../cmd/awk/qseawk -f quicksort.awk quicksort.dat &1 -------------------------------------------------------------------------------- 0.0000000000 diff --git a/qse/regress/awk/regress.sh b/qse/regress/awk/regress.sh index c027cb0a..6fed91be 100755 --- a/qse/regress/awk/regress.sh +++ b/qse/regress/awk/regress.sh @@ -138,6 +138,8 @@ PROGS=" lang-033.awk///--newline=on -o- lang-034.awk///--newline=on --rwpipe=on -o- lang-035.awk/lang-035.dat2//--newline=on -o- -vdatafile=lang-035.dat1 -vgroupname=lang-035 + lang-036.awk/lang-036.dat//--newline=on -o- + lang-037.awk/lang-037.dat//--newline=on -o- quicksort.awk/quicksort.dat// quicksort2.awk/quicksort2.dat// diff --git a/qse/regress/sed/001.dat b/qse/regress/sed/001.dat new file mode 100644 index 00000000..5b0be8f2 --- /dev/null +++ b/qse/regress/sed/001.dat @@ -0,0 +1,23 @@ +ab...c +------ +AAA + +de...f +gh...i +------ +AAA1 + +jk...l +mn...o +pq...r +------ +AAA2 + + + +kbs +------ +ddd +dif +------ +cccc diff --git a/qse/regress/sed/001.sed b/qse/regress/sed/001.sed new file mode 100644 index 00000000..3bf378f4 --- /dev/null +++ b/qse/regress/sed/001.sed @@ -0,0 +1,14 @@ +# require -n +h +:again n +/^-+$/ { + g + N + s/\n/ / + p + b skip +} +x +p +b again +:skip diff --git a/qse/samples/awk/Makefile.am b/qse/samples/awk/Makefile.am index ab783b70..01ccd111 100644 --- a/qse/samples/awk/Makefile.am +++ b/qse/samples/awk/Makefile.am @@ -18,8 +18,8 @@ awk06_SOURCES = awk06.cpp awk07_SOURCES = awk07.cpp awk08_SOURCES = awk08.cpp -awk05_LDADD = -lqseawk++ $(LDADD) -awk06_LDADD = -lqseawk++ $(LDADD) -awk07_LDADD = -lqseawk++ $(LDADD) -awk08_LDADD = -lqseawk++ $(LDADD) +awk05_LDADD = -lqseawkxx $(LDADD) +awk06_LDADD = -lqseawkxx $(LDADD) +awk07_LDADD = -lqseawkxx $(LDADD) +awk08_LDADD = -lqseawkxx $(LDADD) endif diff --git a/qse/samples/awk/Makefile.in b/qse/samples/awk/Makefile.in index a2bf09c7..ad96302a 100644 --- a/qse/samples/awk/Makefile.in +++ b/qse/samples/awk/Makefile.in @@ -264,10 +264,10 @@ awk04_SOURCES = awk04.c @ENABLE_CXX_TRUE@awk06_SOURCES = awk06.cpp @ENABLE_CXX_TRUE@awk07_SOURCES = awk07.cpp @ENABLE_CXX_TRUE@awk08_SOURCES = awk08.cpp -@ENABLE_CXX_TRUE@awk05_LDADD = -lqseawk++ $(LDADD) -@ENABLE_CXX_TRUE@awk06_LDADD = -lqseawk++ $(LDADD) -@ENABLE_CXX_TRUE@awk07_LDADD = -lqseawk++ $(LDADD) -@ENABLE_CXX_TRUE@awk08_LDADD = -lqseawk++ $(LDADD) +@ENABLE_CXX_TRUE@awk05_LDADD = -lqseawkxx $(LDADD) +@ENABLE_CXX_TRUE@awk06_LDADD = -lqseawkxx $(LDADD) +@ENABLE_CXX_TRUE@awk07_LDADD = -lqseawkxx $(LDADD) +@ENABLE_CXX_TRUE@awk08_LDADD = -lqseawkxx $(LDADD) all: all-am .SUFFIXES: diff --git a/qse/samples/sed/Makefile.am b/qse/samples/sed/Makefile.am index 4b157de0..2bdb2c27 100644 --- a/qse/samples/sed/Makefile.am +++ b/qse/samples/sed/Makefile.am @@ -9,8 +9,8 @@ if ENABLE_CXX bin_PROGRAMS += sed02 sed03 sed02_SOURCES = sed02.cpp -sed02_LDADD = -lqsesed++ $(LDADD) +sed02_LDADD = -lqsesedxx $(LDADD) sed03_SOURCES = sed03.cpp -sed03_LDADD = -lqsesed++ $(LDADD) +sed03_LDADD = -lqsesedxx $(LDADD) endif diff --git a/qse/samples/sed/Makefile.in b/qse/samples/sed/Makefile.in index baf2850d..f21c112d 100644 --- a/qse/samples/sed/Makefile.in +++ b/qse/samples/sed/Makefile.in @@ -217,9 +217,9 @@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = -I$(top_srcdir)/include LDADD = -lqsesed -lqsecmn $(LIBM) @ENABLE_CXX_TRUE@sed02_SOURCES = sed02.cpp -@ENABLE_CXX_TRUE@sed02_LDADD = -lqsesed++ $(LDADD) +@ENABLE_CXX_TRUE@sed02_LDADD = -lqsesedxx $(LDADD) @ENABLE_CXX_TRUE@sed03_SOURCES = sed03.cpp -@ENABLE_CXX_TRUE@sed03_LDADD = -lqsesed++ $(LDADD) +@ENABLE_CXX_TRUE@sed03_LDADD = -lqsesedxx $(LDADD) all: all-am .SUFFIXES: