From 6421da99f4616fa22d983e032fe6137127b82100 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 19 Aug 2012 14:20:19 +0000 Subject: [PATCH] added 'abort' & QSE_AWK_ABORT to awk. added a new sed command 'C' that resembles the cut utility dropped the cut utility. added qse_str_nrcat()/qse_mbs_nrcat()/qse_wcs_nrcat() --- qse/cmd/Makefile.am | 2 +- qse/cmd/Makefile.in | 2 +- qse/cmd/awk/awk.c | 15 +- qse/cmd/cut/Makefile.am | 16 - qse/cmd/cut/Makefile.in | 558 ------------------------------- qse/cmd/cut/cut.c | 332 ------------------- qse/configure | 6 +- qse/configure.ac | 4 - qse/doc/page/awk.doc | 46 ++- qse/doc/page/sed.doc | 22 ++ qse/include/qse/Makefile.am | 2 +- qse/include/qse/Makefile.in | 2 +- qse/include/qse/awk/awk.h | 3 + qse/include/qse/cmn/str.h | 14 + qse/include/qse/cut/Cut.hpp | 228 ------------- qse/include/qse/cut/Makefile.am | 7 - qse/include/qse/cut/Makefile.in | 490 --------------------------- qse/include/qse/cut/StdCut.hpp | 100 ------ qse/include/qse/cut/cut.h | 276 ---------------- qse/include/qse/cut/std.h | 94 ------ qse/include/qse/sed/sed.h | 38 +++ qse/regress/sed/regress.out | 7 + qse/regress/sed/regress.out.xma | 7 + qse/regress/sed/regress.sh.in | 1 + qse/regress/sed/s009.dat | 5 + qse/regress/sed/s009.sed | 1 + qse/samples/Makefile.am | 2 +- qse/samples/Makefile.in | 2 +- qse/samples/cut/Makefile.am | 29 -- qse/samples/cut/Makefile.in | 567 -------------------------------- qse/samples/cut/cut01.c | 103 ------ 31 files changed, 159 insertions(+), 2822 deletions(-) delete mode 100644 qse/cmd/cut/Makefile.am delete mode 100644 qse/cmd/cut/Makefile.in delete mode 100644 qse/cmd/cut/cut.c delete mode 100644 qse/include/qse/cut/Cut.hpp delete mode 100644 qse/include/qse/cut/Makefile.am delete mode 100644 qse/include/qse/cut/Makefile.in delete mode 100644 qse/include/qse/cut/StdCut.hpp delete mode 100644 qse/include/qse/cut/cut.h delete mode 100644 qse/include/qse/cut/std.h create mode 100644 qse/regress/sed/s009.dat create mode 100644 qse/regress/sed/s009.sed delete mode 100644 qse/samples/cut/Makefile.am delete mode 100644 qse/samples/cut/Makefile.in delete mode 100644 qse/samples/cut/cut01.c diff --git a/qse/cmd/Makefile.am b/qse/cmd/Makefile.am index fc102a6c..7a44aa2e 100644 --- a/qse/cmd/Makefile.am +++ b/qse/cmd/Makefile.am @@ -1,2 +1,2 @@ -SUBDIRS = awk cut sed stx +SUBDIRS = awk sed stx DIST_SUBDIRS = $(SUBDIRS) diff --git a/qse/cmd/Makefile.in b/qse/cmd/Makefile.in index c52371e0..42c42ada 100644 --- a/qse/cmd/Makefile.in +++ b/qse/cmd/Makefile.in @@ -238,7 +238,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = awk cut sed stx +SUBDIRS = awk sed stx DIST_SUBDIRS = $(SUBDIRS) all: all-recursive diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index 6a4ab057..afb739e0 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -420,8 +420,9 @@ struct opttab_t { QSE_T("rexbound"), QSE_AWK_REXBOUND, QSE_T("enable {n,m} in a regular expression") }, { QSE_T("ncmponstr"), QSE_AWK_NCMPONSTR, QSE_T("perform numeric comparsion on numeric strings") }, { QSE_T("strictnaming"), QSE_AWK_STRICTNAMING, QSE_T("enable the strict naming rule") }, - { QSE_T("include"), QSE_AWK_INCLUDE, QSE_T("enable 'include'") }, + { QSE_T("include"), QSE_AWK_INCLUDE, QSE_T("enable '@include'") }, { QSE_T("tolerant"), QSE_AWK_TOLERANT, QSE_T("make more I/O fault-tolerant") }, + { QSE_T("abort"), QSE_AWK_ABORT, QSE_T("enable 'abort'") }, { QSE_NULL, 0, QSE_NULL } }; @@ -481,6 +482,7 @@ static int comparg (int argc, qse_char_t* argv[], struct arg_t* arg) { QSE_T(":strictnaming"), QSE_T('\0') }, { QSE_T(":include"), QSE_T('\0') }, { QSE_T(":tolerant"), QSE_T('\0') }, + { QSE_T(":abort"), QSE_T('\0') }, { QSE_T(":call"), QSE_T('c') }, { QSE_T(":file"), QSE_T('f') }, @@ -1031,12 +1033,15 @@ static int awk_main (int argc, qse_char_t* argv[]) retv = (arg.call == QSE_NULL)? qse_awk_rtx_loop (rtx): qse_awk_rtx_call (rtx, arg.call, QSE_NULL, 0); - if (retv != QSE_NULL) + if (retv) { - qse_awk_rtx_refdownval (rtx, retv); - ret = 0; + qse_long_t tmp; - dprint_return (rtx, retv); + qse_awk_rtx_refdownval (rtx, retv); + if (app_debug) dprint_return (rtx, retv); + + ret = 0; + if (qse_awk_rtx_valtolong (rtx, retv, &tmp) >= 0) ret = tmp; } unset_intr_run (); diff --git a/qse/cmd/cut/Makefile.am b/qse/cmd/cut/Makefile.am deleted file mode 100644 index 7ebe3d48..00000000 --- a/qse/cmd/cut/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -AUTOMAKE_OPTIONS = nostdinc - -AM_CPPFLAGS = \ - -I$(top_builddir)/include \ - -I$(top_srcdir)/include \ - -I$(includedir) - -bin_PROGRAMS = qsecut - -qsecut_SOURCES = cut.c -qsecut_LDFLAGS = -L../../lib/cut -L../../lib/cmn -L$(libdir) -qsecut_LDADD = -lqsecut -lqsecmn - -if WIN32 -qsecut_LDADD += $(UNICOWS_LIBS) -endif diff --git a/qse/cmd/cut/Makefile.in b/qse/cmd/cut/Makefile.in deleted file mode 100644 index 0f1f64bc..00000000 --- a/qse/cmd/cut/Makefile.in +++ /dev/null @@ -1,558 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = qsecut$(EXEEXT) -@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) -subdir = cmd/cut -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/lx_find_mpi.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/qse/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am_qsecut_OBJECTS = cut.$(OBJEXT) -qsecut_OBJECTS = $(am_qsecut_OBJECTS) -am__DEPENDENCIES_1 = -@WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -qsecut_DEPENDENCIES = $(am__DEPENDENCIES_2) -qsecut_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(qsecut_LDFLAGS) \ - $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -depcomp = $(SHELL) $(top_srcdir)/ac/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(qsecut_SOURCES) -DIST_SOURCES = $(qsecut_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_MODE = @BUILD_MODE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHAR_MODE = @CHAR_MODE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_CXX = @HAVE_CXX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MPICC = @MPICC@ -MPI_CFLAGS = @MPI_CFLAGS@ -MPI_CLDFLAGS = @MPI_CLDFLAGS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -QSE_PROJECT_AUTHOR = @QSE_PROJECT_AUTHOR@ -QSE_PROJECT_URL = @QSE_PROJECT_URL@ -QSE_SIZEOF_CHAR = @QSE_SIZEOF_CHAR@ -QSE_SIZEOF_DOUBLE = @QSE_SIZEOF_DOUBLE@ -QSE_SIZEOF_FLOAT = @QSE_SIZEOF_FLOAT@ -QSE_SIZEOF_INT = @QSE_SIZEOF_INT@ -QSE_SIZEOF_LONG = @QSE_SIZEOF_LONG@ -QSE_SIZEOF_LONG_DOUBLE = @QSE_SIZEOF_LONG_DOUBLE@ -QSE_SIZEOF_LONG_LONG = @QSE_SIZEOF_LONG_LONG@ -QSE_SIZEOF_SHORT = @QSE_SIZEOF_SHORT@ -QSE_SIZEOF_VOID_P = @QSE_SIZEOF_VOID_P@ -QSE_SIZEOF_WCHAR_T = @QSE_SIZEOF_WCHAR_T@ -RANLIB = @RANLIB@ -RM = @RM@ -RMDIR = @RMDIR@ -SED = @SED@ -SENDFILE_LIBS = @SENDFILE_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SOCKET_LIBS = @SOCKET_LIBS@ -STRIP = @STRIP@ -TRUE = @TRUE@ -UNICOWS_LIBS = @UNICOWS_LIBS@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = nostdinc -AM_CPPFLAGS = \ - -I$(top_builddir)/include \ - -I$(top_srcdir)/include \ - -I$(includedir) - -qsecut_SOURCES = cut.c -qsecut_LDFLAGS = -L../../lib/cut -L../../lib/cmn -L$(libdir) -qsecut_LDADD = -lqsecut -lqsecmn $(am__append_1) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cmd/cut/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign cmd/cut/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -qsecut$(EXEEXT): $(qsecut_OBJECTS) $(qsecut_DEPENDENCIES) - @rm -f qsecut$(EXEEXT) - $(qsecut_LINK) $(qsecut_OBJECTS) $(qsecut_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cut.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/qse/cmd/cut/cut.c b/qse/cmd/cut/cut.c deleted file mode 100644 index 0b90c747..00000000 --- a/qse/cmd/cut/cut.c +++ /dev/null @@ -1,332 +0,0 @@ -/** - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#if defined(_WIN32) -# include -#endif - -static qse_char_t* g_selector = QSE_NULL; - -static int g_infile_start = 0; -static int g_infile_end = 0; -static const qse_char_t* g_infile = QSE_NULL; -static const qse_char_t* g_outfile = QSE_NULL; -static int g_option = 0; - -static void print_usage (QSE_FILE* out, int argc, qse_char_t* argv[]) -{ - const qse_char_t* b = qse_basename (argv[0]); - - qse_fprintf (out, QSE_T("USAGE: %s -c selectors [options] [file]\n"), b); - qse_fprintf (out, QSE_T(" %s -f selectors [options] [file]\n"), b); - - qse_fprintf (out, QSE_T("mandatory options as follows:\n")); - qse_fprintf (out, QSE_T(" -c selectors select characters\n")); - qse_fprintf (out, QSE_T(" -f selectors select fields\n")); - qse_fprintf (out, QSE_T("options as follows:\n")); - qse_fprintf (out, QSE_T(" -h show this message\n")); - qse_fprintf (out, QSE_T(" -d delimiter specify a field delimiter(require -f)\n")); - qse_fprintf (out, QSE_T(" -D delimiter specify a field delimiter for output(require -f)\n")); - qse_fprintf (out, QSE_T(" -s do not show undelimited lines(require -f)\n")); - qse_fprintf (out, QSE_T(" -w treat any whitespaces as a field delimiter(require -f)\n")); - qse_fprintf (out, QSE_T(" -F fold adjacent field delimiters(require -f)\n")); - qse_fprintf (out, QSE_T(" -t trim off leading and trailing whitespaces\n")); - qse_fprintf (out, QSE_T(" -n normalize whitespaces\n")); - qse_fprintf (out, QSE_T(" -o file specify the output file\n")); -} - -static int handle_args (int argc, qse_char_t* argv[]) -{ - static qse_opt_t opt = - { - QSE_T("hc:f:d:D:swFtno:"), - QSE_NULL - }; - qse_cint_t c; - qse_cint_t din = QSE_CHAR_EOF; - qse_cint_t dout = QSE_CHAR_EOF; - - while ((c = qse_getopt (argc, argv, &opt)) != QSE_CHAR_EOF) - { - switch (c) - { - default: - print_usage (QSE_STDERR, argc, argv); - return -1; - - case QSE_T('?'): - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: bad option - %c\n"), - opt.opt - ); - print_usage (QSE_STDERR, argc, argv); - return -1; - - case QSE_T(':'): - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: bad parameter for %c\n"), - opt.opt - ); - print_usage (QSE_STDERR, argc, argv); - return -1; - - case QSE_T('h'): - print_usage (QSE_STDOUT, argc, argv); - return 0; - - case QSE_T('c'): - case QSE_T('f'): - { - /* - * 1 character for c or f. - * 4 characters to hold Dxx, in case - * a delimiter is specified - * 1 character for the terminating '\0'; - */ - qse_char_t x[6] = QSE_T(" "); - - if (g_selector != QSE_NULL) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: multiple selectors specified\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - x[4] = c; - g_selector = qse_strdup2 (x, opt.arg, QSE_MMGR_GETDFL()); - if (g_selector == QSE_NULL) - { - qse_fprintf (QSE_STDERR, QSE_T("ERROR: insufficient memory\n")); - return -1; - } - break; - } - - case QSE_T('d'): - if (qse_strlen(opt.arg) > 1) - { - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - din = opt.arg[0]; - break; - - case QSE_T('D'): - if (qse_strlen(opt.arg) > 1) - { - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - dout = opt.arg[0]; - break; - - case QSE_T('s'): - g_option |= QSE_CUT_DELIMONLY; - break; - - case QSE_T('w'): - g_option |= QSE_CUT_WHITESPACE; - break; - - case QSE_T('F'): - g_option |= QSE_CUT_FOLDDELIMS; - break; - - case QSE_T('t'): - g_option |= QSE_CUT_TRIMSPACE; - break; - - case QSE_T('n'): - g_option |= QSE_CUT_NORMSPACE; - break; - - case QSE_T('o'): - if (g_outfile != QSE_NULL) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: -o specified more than once\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - g_outfile = opt.arg; - break; - } - } - - - g_infile_start = opt.ind; - g_infile_end = argc; - - if (g_selector == QSE_NULL) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: neither -c nor -f specified\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - if (din == QSE_CHAR_EOF) din = QSE_T('\t'); - if (dout == QSE_CHAR_EOF) dout = din; - - if (din != QSE_CHAR_EOF) - { - QSE_ASSERT (dout != QSE_CHAR_EOF); - g_selector[0] = QSE_T('D'), - g_selector[1] = din; - g_selector[2] = dout; - g_selector[3] = QSE_T(','); - } - - if (g_selector[4] == QSE_T('c') && - (din != QSE_CHAR_EOF || dout != QSE_CHAR_EOF || - (g_option & QSE_CUT_WHITESPACE) || (g_option & QSE_CUT_FOLDDELIMS))) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: -d, -D, -w, or -F specified with -c\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - if (din != QSE_CHAR_EOF && (g_option & QSE_CUT_WHITESPACE)) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: both -d and -w specified\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - if (g_selector[4] == QSE_T('c') && - (g_option & QSE_CUT_DELIMONLY)) - { - qse_fprintf (QSE_STDERR, - QSE_T("ERROR: -s specified with -c\n")); - print_usage (QSE_STDERR, argc, argv); - return -1; - } - - return 1; -} - -int cut_main (int argc, qse_char_t* argv[]) -{ - qse_cut_t* cut = QSE_NULL; - int ret = -1; - - ret = handle_args (argc, argv); - if (ret <= 0) goto oops; - - ret = -1; - - cut = qse_cut_openstd (0); - if (cut == QSE_NULL) - { - qse_fprintf (QSE_STDERR, QSE_T("cannot open cut\n")); - goto oops; - } - - qse_cut_setoption (cut, g_option); - - if (qse_cut_compstd (cut, g_selector) <= -1) - { - qse_fprintf (QSE_STDERR, - QSE_T("cannot compile - %s\n"), - qse_cut_geterrmsg(cut) - ); - goto oops; - } - - if (g_infile_start < g_infile_end) - { - do - { - g_infile = argv[g_infile_start]; - if (g_infile && g_infile[0] == QSE_T('-') && g_infile[1] == QSE_T('\0')) g_infile = QSE_NULL; - if (qse_cut_execstd (cut, g_infile, g_outfile) <= -1) - { - qse_fprintf (QSE_STDERR, - QSE_T("cannot execute - %s\n"), - qse_cut_geterrmsg(cut) - ); - goto oops; - } - - /*qse_cut_clear (cut);*/ - } - while (++g_infile_start < g_infile_end); - } - else - { - if (qse_cut_execstd (cut, QSE_NULL, g_outfile) <= -1) - { - qse_fprintf (QSE_STDERR, - QSE_T("cannot execute - %s\n"), - qse_cut_geterrmsg(cut) - ); - goto oops; - } - } - - ret = 0; - -oops: - if (cut != QSE_NULL) qse_cut_close (cut); - if (g_selector != QSE_NULL) QSE_MMGR_FREE (QSE_MMGR_GETDFL(), g_selector); - return ret; -} - -int qse_main (int argc, char* argv[]) -{ -#if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); - if (codepage == CP_UTF8) - { - /*SetConsoleOUtputCP (CP_UTF8);*/ - qse_setdflcmgr (qse_utf8cmgr); - } - else - { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); - qse_setdflcmgr (qse_slmbcmgr); - } -#else - setlocale (LC_ALL, ""); - qse_setdflcmgr (qse_slmbcmgr); -#endif - - return qse_runmain (argc, argv, cut_main); -} diff --git a/qse/configure b/qse/configure index ec7330d4..904c7fa4 100755 --- a/qse/configure +++ b/qse/configure @@ -18968,7 +18968,7 @@ QSE_PROJECT_AUTHOR="${PACKAGE_BUGREPORT}" QSE_PROJECT_URL="${PACKAGE_URL}" -ac_config_files="$ac_config_files Makefile README include/Makefile include/qse/Makefile include/qse/cmn/Makefile include/qse/awk/Makefile include/qse/cut/Makefile include/qse/sed/Makefile include/qse/stx/Makefile include/qse/net/Makefile lib/Makefile lib/cmn/Makefile lib/awk/Makefile lib/cut/Makefile lib/sed/Makefile lib/stx/Makefile lib/net/Makefile cmd/Makefile cmd/awk/Makefile cmd/cut/Makefile cmd/sed/Makefile cmd/stx/Makefile samples/Makefile samples/cmn/Makefile samples/awk/Makefile samples/cut/Makefile samples/sed/Makefile samples/net/Makefile regress/Makefile regress/awk/Makefile regress/awk/regress.sh regress/sed/Makefile regress/sed/regress.sh doc/Makefile doc/page/Makefile doc/image/Makefile doc/Doxyfile tools/Makefile" +ac_config_files="$ac_config_files Makefile README include/Makefile include/qse/Makefile include/qse/cmn/Makefile include/qse/awk/Makefile include/qse/sed/Makefile include/qse/stx/Makefile include/qse/net/Makefile lib/Makefile lib/cmn/Makefile lib/awk/Makefile lib/sed/Makefile lib/stx/Makefile lib/net/Makefile cmd/Makefile cmd/awk/Makefile cmd/sed/Makefile cmd/stx/Makefile samples/Makefile samples/cmn/Makefile samples/awk/Makefile samples/sed/Makefile samples/net/Makefile regress/Makefile regress/awk/Makefile regress/awk/regress.sh regress/sed/Makefile regress/sed/regress.sh doc/Makefile doc/page/Makefile doc/image/Makefile doc/Doxyfile tools/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20101,26 +20101,22 @@ do "include/qse/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/Makefile" ;; "include/qse/cmn/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/cmn/Makefile" ;; "include/qse/awk/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/awk/Makefile" ;; - "include/qse/cut/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/cut/Makefile" ;; "include/qse/sed/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/sed/Makefile" ;; "include/qse/stx/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/stx/Makefile" ;; "include/qse/net/Makefile") CONFIG_FILES="$CONFIG_FILES include/qse/net/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/cmn/Makefile") CONFIG_FILES="$CONFIG_FILES lib/cmn/Makefile" ;; "lib/awk/Makefile") CONFIG_FILES="$CONFIG_FILES lib/awk/Makefile" ;; - "lib/cut/Makefile") CONFIG_FILES="$CONFIG_FILES lib/cut/Makefile" ;; "lib/sed/Makefile") CONFIG_FILES="$CONFIG_FILES lib/sed/Makefile" ;; "lib/stx/Makefile") CONFIG_FILES="$CONFIG_FILES lib/stx/Makefile" ;; "lib/net/Makefile") CONFIG_FILES="$CONFIG_FILES lib/net/Makefile" ;; "cmd/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/Makefile" ;; "cmd/awk/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/awk/Makefile" ;; - "cmd/cut/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/cut/Makefile" ;; "cmd/sed/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/sed/Makefile" ;; "cmd/stx/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/stx/Makefile" ;; "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; "samples/cmn/Makefile") CONFIG_FILES="$CONFIG_FILES samples/cmn/Makefile" ;; "samples/awk/Makefile") CONFIG_FILES="$CONFIG_FILES samples/awk/Makefile" ;; - "samples/cut/Makefile") CONFIG_FILES="$CONFIG_FILES samples/cut/Makefile" ;; "samples/sed/Makefile") CONFIG_FILES="$CONFIG_FILES samples/sed/Makefile" ;; "samples/net/Makefile") CONFIG_FILES="$CONFIG_FILES samples/net/Makefile" ;; "regress/Makefile") CONFIG_FILES="$CONFIG_FILES regress/Makefile" ;; diff --git a/qse/configure.ac b/qse/configure.ac index 00a14ee5..15b1eb2c 100644 --- a/qse/configure.ac +++ b/qse/configure.ac @@ -354,26 +354,22 @@ AC_CONFIG_FILES([ include/qse/Makefile include/qse/cmn/Makefile include/qse/awk/Makefile - include/qse/cut/Makefile include/qse/sed/Makefile include/qse/stx/Makefile include/qse/net/Makefile lib/Makefile lib/cmn/Makefile lib/awk/Makefile - lib/cut/Makefile lib/sed/Makefile lib/stx/Makefile lib/net/Makefile cmd/Makefile cmd/awk/Makefile - cmd/cut/Makefile cmd/sed/Makefile cmd/stx/Makefile samples/Makefile samples/cmn/Makefile samples/awk/Makefile - samples/cut/Makefile samples/sed/Makefile samples/net/Makefile regress/Makefile diff --git a/qse/doc/page/awk.doc b/qse/doc/page/awk.doc index 2143ce45..f896bd4f 100644 --- a/qse/doc/page/awk.doc +++ b/qse/doc/page/awk.doc @@ -10,6 +10,8 @@ - @ref awk_ext_exprgroup "GROUPED EXPRESSION" - @ref awk_ext_rwpipe "TWO-WAY PIPE" - @ref awk_ext_return "RETURN" + - @ref awk_ext_reset "RESET" + - @ref awk_ext_abort "ABORT" - @ref awk_ext_comment "COMMENT" - @ref awk_ext_fnc "EXTENDED FUNCTIONS" - @ref awk_ext_fs "EXTENDED FS" @@ -187,7 +189,9 @@ Where options are: --rexbound on/off enable {n,m} in a regular expression --ncmponstr on/off perform numeric comparsion on numeric strings --strictnaming on/off enable the strict naming rule - --include on/off enable 'include' + --include on/off enable '@include' + --tolerant on/off make more I/O fault-tolerant + --abort on/off enable 'abort' @endcode @section awk_lang AWK LANGUAGE @@ -222,6 +226,7 @@ A pattern-action block, and a user-defined function can have the following eleme print #QSE_AWK_RIO nextofile #QSE_AWK_NEXTOFILE reset #QSE_AWK_RESET +abort #QSE_AWK_ABORT @@ -234,6 +239,7 @@ AWK has the following statement constructs. - continue - return - exit +- abort - next - nextfile - nextofile @@ -471,7 +477,13 @@ function RunApp(app) { @endcode @subsection awk_ext_return RETURN -The return statement is valid in pattern-action blocks as well as in functions. The execution of a calling block is aborted once the return statement is executed. +The return statement is valid in pattern-action blocks as well as in functions. +The execution of a calling block is aborted once the return statement is executed. + +@code +$ qseawk 'BEGIN { return 20; }' ; echo $? +20 +@endcode If #QSE_AWK_MAPTOVAR is on, you can return an arrayed value from a function. @code @@ -491,6 +503,36 @@ BEGIN { } @endcode +@subsection awk_ext_reset RESET +The reset statement resets an array variable back to the initial state. +After that, the array variable can also be used as a scalar variable again. +You must have #QSE_AWK_RESET on to be able to be able to use this +statement. + +@code +BEGIN { + a[1] = 20; + reset a; + a = 20; # this is legal + print a; +} +@endcode + +@subsection awk_ext_abort ABORT +The abort statment is similar to the exit statement except that +it skips executing the END block. You must have #QSE_AWK_ABORT on to be +able to use this statement. + +@code +BEGIN { + print "--- BEGIN ---"; + abort 10; +} +END { + print "--- END ---"; # this must not be printed +} +@endcode + @subsection awk_ext_comment COMMENT You can use the C-style comment as well as the pound comment. diff --git a/qse/doc/page/sed.doc b/qse/doc/page/sed.doc index fe488339..ceacb557 100644 --- a/qse/doc/page/sed.doc +++ b/qse/doc/page/sed.doc @@ -258,6 +258,28 @@ be empty; You can combine the following options into @b opts: Replaces all occurrences of characters in @b src with characters in @b dst. @b src and @b dst must contain equal number of characters. +- c/selector/opts +Selects characters or fields from the pattern space as specified by the +@b selector and update the pattern space with the selected text. A selector +is a comma-separated list of selector atoms. A selector atom is one of +the followings: +
    +
  • @b d specifies the input field delimiter with the next character. e.g) d: +
  • @b D sepcifies the output field delimiter with the next character. e.g) D; +
  • @b c specifies a position or a range of characters to select. e.g) c23-25 +
  • @b f specifies a position or a range of fields to select. e.g) f1,f4-3 +
+@b opts may be empty; You can combine the following options into @b opts: +
    +
  • @b f folds consecutive delimiters into one. +
  • @b w uses white spaces for a field delimiter regardless of the input + delimiter specified in the selector. +
  • @b d deletes the pattern space if the line is not delimited by + the input field delimiter +
+ +In principle, this can replace the @b cut utility. + Let's see actual examples: - G;G;G Triple spaces input lines. If #QSE_SED_QUIET is on, G;G;G;p. diff --git a/qse/include/qse/Makefile.am b/qse/include/qse/Makefile.am index 6909e9c8..ba825ace 100644 --- a/qse/include/qse/Makefile.am +++ b/qse/include/qse/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = cmn awk cut sed net stx +SUBDIRS = cmn awk sed net stx pkgincludedir = $(includedir)/qse diff --git a/qse/include/qse/Makefile.in b/qse/include/qse/Makefile.in index 08d1763e..a58ae3c4 100644 --- a/qse/include/qse/Makefile.in +++ b/qse/include/qse/Makefile.in @@ -267,7 +267,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = cmn awk cut sed net stx +SUBDIRS = cmn awk sed net stx pkginclude_HEADERS = conf_msw.h conf_os2.h conf_dos.h conf_vms.h \ types.h macros.h pack1.h unpack.h $(am__append_1) all: config.h diff --git a/qse/include/qse/awk/awk.h b/qse/include/qse/awk/awk.h index 712e7381..92a45e66 100644 --- a/qse/include/qse/awk/awk.h +++ b/qse/include/qse/awk/awk.h @@ -848,6 +848,9 @@ enum qse_awk_option_t */ QSE_AWK_TOLERANT = (1 << 17), + /** enables @b abort */ + QSE_AWK_ABORT = (1 << 18), + /** * makes #qse_awk_t to behave compatibly with classical AWK * implementations diff --git a/qse/include/qse/cmn/str.h b/qse/include/qse/cmn/str.h index ddff4933..f300efe4 100644 --- a/qse/include/qse/cmn/str.h +++ b/qse/include/qse/cmn/str.h @@ -2415,6 +2415,12 @@ qse_size_t qse_mbs_ncat ( qse_size_t len ); +qse_size_t qse_mbs_nrcat ( + qse_mbs_t* str, + const qse_mchar_t* s, + qse_size_t len +); + qse_size_t qse_mbs_ccat ( qse_mbs_t* str, qse_mchar_t c @@ -2589,6 +2595,12 @@ qse_size_t qse_wcs_ncat ( qse_size_t len ); +qse_size_t qse_wcs_nrcat ( + qse_wcs_t* str, + const qse_wchar_t* s, + qse_size_t len +); + qse_size_t qse_wcs_ccat ( qse_wcs_t* str, qse_wchar_t c @@ -2635,6 +2647,7 @@ qse_size_t qse_wcs_pac ( # define qse_str_ncpy(str,s,len) qse_mbs_ncpy(str,s,len) # define qse_str_cat(str,s) qse_mbs_cat(str,s) # define qse_str_ncat(str,s,len) qse_mbs_ncat(str,s,len) +# define qse_str_nrcat(str,s,len) qse_mbs_nrcat(str,s,len) # define qse_str_ccat(str,c) qse_mbs_ccat(str,c) # define qse_str_nccat(str,c,len) qse_mbs_nccat(str,c,len) # define qse_str_del(str,index,size) qse_mbs_del(str,index,size) @@ -2661,6 +2674,7 @@ qse_size_t qse_wcs_pac ( # define qse_str_ncpy(str,s,len) qse_wcs_ncpy(str,s,len) # define qse_str_cat(str,s) qse_wcs_cat(str,s) # define qse_str_ncat(str,s,len) qse_wcs_ncat(str,s,len) +# define qse_str_nrcat(str,s,len) qse_wcs_nrcat(str,s,len) # define qse_str_ccat(str,c) qse_wcs_ccat(str,c) # define qse_str_nccat(str,c,len) qse_wcs_nccat(str,c,len) # define qse_str_del(str,index,size) qse_wcs_del(str,index,size) diff --git a/qse/include/qse/cut/Cut.hpp b/qse/include/qse/cut/Cut.hpp deleted file mode 100644 index 4d311f13..00000000 --- a/qse/include/qse/cut/Cut.hpp +++ /dev/null @@ -1,228 +0,0 @@ -/* - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#ifndef _QSE_CUT_CUT_HPP_ -#define _QSE_CUT_CUT_HPP_ - -#include -#include - -/** @file - * Stream Editor - */ - -///////////////////////////////// -QSE_BEGIN_NAMESPACE(QSE) -///////////////////////////////// - -/** - * The Cut class implements a stream editor by wrapping around #qse_cut_t. - */ -class Cut: public Mmged -{ -public: - /// The cut_t type redefines a stream editor type - typedef qse_cut_t cut_t; - /// The errnum_t type redefines an error number type - typedef qse_cut_errnum_t errnum_t; - /// The errstr_t type redefines an error formattering string getter type - typedef qse_cut_errstr_t errstr_t; - /// The io_cmd_t type redefines an IO command type - typedef qse_cut_io_cmd_t io_cmd_t; - /// The io_arg_t type redefines an IO data type - typedef qse_cut_io_arg_t io_arg_t; - /// The option_t type redefines an option type - typedef qse_cut_option_t option_t; - - /// - /// The Stream class is a base class for I/O operation during - /// execution. - /// - class Stream: public Types - { - public: - /// The Mode type defines I/O operation mode. - enum Mode - { - READ, ///< open for read - WRITE ///< open for write - }; - - class Data - { - public: - friend class Cut; - - protected: - Data (Cut* cut, Mode mode, io_arg_t* arg): - cut (cut), mode (mode), arg (arg) {} - - public: - Mode getMode() const { return mode; } - void* getHandle () const { return arg->handle; } - void setHandle (void* handle) { arg->handle = handle; } - operator Cut* () const { return cut; } - operator cut_t* () const { return cut->cut; } - - protected: - Cut* cut; - Mode mode; - io_arg_t* arg; - }; - - Stream () {} - virtual ~Stream () {} - - virtual int open (Data& io) = 0; - virtual int close (Data& io) = 0; - virtual ssize_t read (Data& io, char_t* buf, size_t len) = 0; - virtual ssize_t write (Data& io, const char_t* buf, size_t len) = 0; - - private: - Stream (const Stream&); - Stream& operator= (const Stream&); - }; - - /// - /// The Cut() function creates an uninitialized stream editor. - /// - Cut (Mmgr* mmgr): Mmged (mmgr), cut (QSE_NULL), dflerrstr (QSE_NULL) - { - } - - /// - /// The ~Cut() function destroys a stream editor. - /// @note The close() function is not called by this destructor. - /// To avoid resource leaks, You should call close() before - /// a stream editor is destroyed if it has been initialized - /// with open(). - /// - virtual ~Cut () {} - - /// - /// The open() function initializes a stream editor and makes it - /// ready for subsequent use. - /// @return 0 on success, -1 on failure. - /// - int open (); - - /// - /// The close() function finalizes a stream editor. - /// - void close (); - - /// - /// The compile() function compiles a null-terminated string pointed - /// to by @a sptr. - /// @return 0 on success, -1 on failure - /// - int compile ( - const char_t* sptr ///< a pointer to a null-terminated string - ); - - /// - /// The compile() function compiles a string pointed to by @a sptr - /// and of the length @a slen. - /// @return 0 on success, -1 on failure - /// - int compile ( - const char_t* sptr, ///< a pointer to a string - size_t slen ///< the number of characters in the string - ); - - /// - /// The execute() function executes compiled commands over the I/O - /// streams defined through I/O handlers - /// @return 0 on success, -1 on failure - /// - int execute (Stream& iostream); - - /// - /// The getOption() function gets the current options. - /// @return 0 or current options ORed of #option_t enumerators. - /// - int getOption () const; - - /// - /// The setOption() function sets options for a stream editor. - /// The option code @a opt is 0 or OR'ed of #option_t enumerators. - /// - void setOption ( - int opt ///< option code - ); - - /// - /// The getErrorMessage() function gets the description of the last - /// error occurred. It returns an empty string if the stream editor - /// has not been initialized with the open() function. - /// - const char_t* getErrorMessage() const; - - /// - /// The getErrorNumber() function gets the number of the last - /// error occurred. It returns QSE_CUT_ENOERR if the stream editor - /// has not been initialized with the open() function. - /// - errnum_t getErrorNumber () const; - - /// - /// The setError() function sets information on an error occurred. - /// - void setError ( - errnum_t num, ///< error number - const cstr_t* args = QSE_NULL ///< string array for formatting - /// an error message - ); - -protected: - /// - /// The getErrorString() function returns an error formatting string - /// for the error number @a num. A subclass wishing to customize - /// an error formatting string may override this function. - /// - virtual const char_t* getErrorString ( - errnum_t num ///< an error number - ) const; - -protected: - /// handle to a primitive cut object - cut_t* cut; - /// default error formatting string getter - errstr_t dflerrstr; - /// I/O stream to read data from and write output to. - Stream* iostream; - -private: - static ssize_t xin ( - cut_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* buf, size_t len); - static ssize_t xout ( - cut_t* s, io_cmd_t cmd, io_arg_t* arg, char_t* dat, size_t len); - static const char_t* xerrstr (cut_t* s, errnum_t num); - -private: - Cut (const Cut&); - Cut& operator= (const Cut&); -}; - -///////////////////////////////// -QSE_END_NAMESPACE(QSE) -///////////////////////////////// - -#endif diff --git a/qse/include/qse/cut/Makefile.am b/qse/include/qse/cut/Makefile.am deleted file mode 100644 index f309df63..00000000 --- a/qse/include/qse/cut/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -pkgincludedir= $(includedir)/qse/cut - -pkginclude_HEADERS = cut.h std.h - -if ENABLE_CXX -pkginclude_HEADERS += Cut.hpp StdCut.hpp -endif diff --git a/qse/include/qse/cut/Makefile.in b/qse/include/qse/cut/Makefile.in deleted file mode 100644 index fabda160..00000000 --- a/qse/include/qse/cut/Makefile.in +++ /dev/null @@ -1,490 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@ENABLE_CXX_TRUE@am__append_1 = Cut.hpp StdCut.hpp -subdir = include/qse/cut -DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/lx_find_mpi.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/qse/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__pkginclude_HEADERS_DIST = cut.h std.h Cut.hpp StdCut.hpp -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(pkgincludedir)" -HEADERS = $(pkginclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/qse/cut -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_MODE = @BUILD_MODE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHAR_MODE = @CHAR_MODE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_CXX = @HAVE_CXX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MPICC = @MPICC@ -MPI_CFLAGS = @MPI_CFLAGS@ -MPI_CLDFLAGS = @MPI_CLDFLAGS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -QSE_PROJECT_AUTHOR = @QSE_PROJECT_AUTHOR@ -QSE_PROJECT_URL = @QSE_PROJECT_URL@ -QSE_SIZEOF_CHAR = @QSE_SIZEOF_CHAR@ -QSE_SIZEOF_DOUBLE = @QSE_SIZEOF_DOUBLE@ -QSE_SIZEOF_FLOAT = @QSE_SIZEOF_FLOAT@ -QSE_SIZEOF_INT = @QSE_SIZEOF_INT@ -QSE_SIZEOF_LONG = @QSE_SIZEOF_LONG@ -QSE_SIZEOF_LONG_DOUBLE = @QSE_SIZEOF_LONG_DOUBLE@ -QSE_SIZEOF_LONG_LONG = @QSE_SIZEOF_LONG_LONG@ -QSE_SIZEOF_SHORT = @QSE_SIZEOF_SHORT@ -QSE_SIZEOF_VOID_P = @QSE_SIZEOF_VOID_P@ -QSE_SIZEOF_WCHAR_T = @QSE_SIZEOF_WCHAR_T@ -RANLIB = @RANLIB@ -RM = @RM@ -RMDIR = @RMDIR@ -SED = @SED@ -SENDFILE_LIBS = @SENDFILE_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SOCKET_LIBS = @SOCKET_LIBS@ -STRIP = @STRIP@ -TRUE = @TRUE@ -UNICOWS_LIBS = @UNICOWS_LIBS@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -pkginclude_HEADERS = cut.h std.h $(am__append_1) -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/cut/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/qse/cut/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-pkgincludeHEADERS: $(pkginclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" - @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ - done - -uninstall-pkgincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgincludedir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(pkgincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-pkgincludeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-pkgincludeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-pkgincludeHEADERS install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-pkgincludeHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/qse/include/qse/cut/StdCut.hpp b/qse/include/qse/cut/StdCut.hpp deleted file mode 100644 index 6a6d476f..00000000 --- a/qse/include/qse/cut/StdCut.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#ifndef _QSE_CUT_STDCUT_HPP_ -#define _QSE_CUT_STDCUT_HPP_ - -#include -#include -#include - -/** @file - * Standard Text Cutter - */ - -///////////////////////////////// -QSE_BEGIN_NAMESPACE(QSE) -///////////////////////////////// - -/** - * The StdCut class inherits the Cut class, implements a standard - * I/O stream class, and sets the default memory manager. - * - */ -class StdCut: public Cut -{ -public: - StdCut (Mmgr* mmgr = &StdMmgr::DFL): Cut (mmgr) {} - - class FileStream: public Stream - { - public: - FileStream (const char_t* infile = QSE_NULL, - const char_t* outfile = QSE_NULL): - infile(infile), outfile(outfile) - { - } - - int open (Data& io); - int close (Data& io); - ssize_t read (Data& io, char_t* buf, size_t len); - ssize_t write (Data& io, const char_t* buf, size_t len); - - protected: - const char_t* infile; - const char_t* outfile; - }; - - class StringStream: public Stream - { - public: - StringStream (const char_t* in); - StringStream (const char_t* in, size_t len); - ~StringStream (); - - int open (Data& io); - int close (Data& io); - ssize_t read (Data& io, char_t* buf, size_t len); - ssize_t write (Data& io, const char_t* buf, size_t len); - - const char_t* getInput (size_t* len = QSE_NULL) const; - const char_t* getOutput (size_t* len = QSE_NULL) const; - - protected: - struct - { - const char_t* ptr; - const char_t* end; - const char_t* cur; - } in; - - struct - { - bool inited; - qse_str_t buf; - } out; - }; -}; - -///////////////////////////////// -QSE_END_NAMESPACE(QSE) -///////////////////////////////// - -#endif diff --git a/qse/include/qse/cut/cut.h b/qse/include/qse/cut/cut.h deleted file mode 100644 index a6f5ab3f..00000000 --- a/qse/include/qse/cut/cut.h +++ /dev/null @@ -1,276 +0,0 @@ -/* - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#ifndef _QSE_CUT_CUT_H_ -#define _QSE_CUT_CUT_H_ - -#include -#include -#include - -/** @file - * This file defines a text cutter utility. - * - * @todo QSE_CUT_ORDEREDSEL - A selector 5,3,1 is ordered to 1,3,5 - */ - -/** - * @example cut.c - * This example implements a simple cut utility. - */ - -/** @struct qse_cut_t - * The qse_cut_t type defines a text cutter. The details are hidden as it is - * a large complex structure vulnerable to unintended changes. - */ -typedef struct qse_cut_t qse_cut_t; - -/** - * the qse_cut_errnum_t type defines error numbers. - */ -enum qse_cut_errnum_t -{ - QSE_CUT_ENOERR, /**< no error */ - QSE_CUT_ENOMEM, /**< insufficient memory */ - QSE_CUT_EINVAL, /**< invalid parameter or data */ - QSE_CUT_ESELNV, /**< selector not valid */ - QSE_CUT_EIOFIL, /**< io error with file '${0}'*/ - QSE_CUT_EIOUSR /**< error returned by user io handler */ -}; -typedef enum qse_cut_errnum_t qse_cut_errnum_t; - -/** - * The qse_cut_errstr_t type defines a error string getter. It should return - * an error formatting string for an error number requested. A new string - * should contain the same number of positional parameters (${X}) as in the - * default error formatting string. You can set a new getter into a stream - * editor with the qse_cut_seterrstr() function to customize an error string. - */ -typedef const qse_char_t* (*qse_cut_errstr_t) ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errnum_t num /**< an error number */ -); - -/** - * The qse_cut_option_t type defines various option codes for a text cutter. - * Options can be OR'ed with each other and be passed to a text cutter with - * the qse_cut_setoption() function. - */ -enum qse_cut_option_t -{ - /** show delimited line only. if not set, undelimited lines are - * shown in its entirety */ - QSE_CUT_DELIMONLY = (1 << 0), - - /** treat any whitespaces as an input delimiter */ - QSE_CUT_WHITESPACE = (1 << 2), - - /** fold adjacent delimiters */ - QSE_CUT_FOLDDELIMS = (1 << 3), - - /** trim leading and trailing whitespaces off the input line */ - QSE_CUT_TRIMSPACE = (1 << 4), - - /** normalize whitespaces in the input line */ - QSE_CUT_NORMSPACE = (1 << 5) -}; -typedef enum qse_cut_option_t qse_cut_option_t; - -/** - * The qse_cut_io_cmd_t type defines I/O command codes. The code indicates - * the action to take in an I/O handler. - */ -enum qse_cut_io_cmd_t -{ - QSE_CUT_IO_OPEN = 0, - QSE_CUT_IO_CLOSE = 1, - QSE_CUT_IO_READ = 2, - QSE_CUT_IO_WRITE = 3 -}; -typedef enum qse_cut_io_cmd_t qse_cut_io_cmd_t; - -/** - * The qse_cut_io_arg_t type defines a data structure required by - * an I/O handler. - */ -struct qse_cut_io_arg_t -{ - void* handle; /**< I/O handle */ -}; -typedef struct qse_cut_io_arg_t qse_cut_io_arg_t; - -/** - * The qse_cut_io_fun_t type defines an I/O handler. qse_cut_exec() calls - * I/O handlers to read from and write to a text stream. - */ -typedef qse_ssize_t (*qse_cut_io_fun_t) ( - qse_cut_t* cut, - qse_cut_io_cmd_t cmd, - qse_cut_io_arg_t* arg, - qse_char_t* data, - qse_size_t count -); - -#ifdef __cplusplus -extern "C" { -#endif - -QSE_DEFINE_COMMON_FUNCTIONS (cut) - -/** - * The qse_cut_open() function creates a text cutter. - * @return A pointer to a text cutter on success, #QSE_NULL on failure - */ -qse_cut_t* qse_cut_open ( - qse_mmgr_t* mmgr, /**< memory manager */ - qse_size_t xtnsize /**< extension size in bytes */ -); - -/** - * The qse_cut_close() function destroys a text cutter. - */ -void qse_cut_close ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_getoption() function retrieves the current options set in - * a text cutter. - * @return 0 or a number OR'ed of #qse_cut_option_t values - */ -int qse_cut_getoption ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_setoption() function sets the option code. - */ -void qse_cut_setoption ( - qse_cut_t* cut, /**< text cutter */ - int opt /**< 0 or a number OR'ed of #qse_cut_option_t values */ -); - -/** - * The qse_cut_geterrstr() gets an error string getter. - */ -qse_cut_errstr_t qse_cut_geterrstr ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_seterrstr() sets an error string getter that is called to - * compose an error message when its retrieval is requested. - */ -void qse_cut_seterrstr ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errstr_t errstr /**< an error string getter */ -); - -/** - * The qse_cut_geterrnum() function gets the number of the last error. - * @return the number of the last error - */ -qse_cut_errnum_t qse_cut_geterrnum ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_geterrmsg() function gets a string describing the last error. - * @return a pointer to an error message - */ -const qse_char_t* qse_cut_geterrmsg ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_geterror() function gets an error number, an error location, - * and an error message. The information is set to the memory area pointed - * to by each parameter. - */ -void qse_cut_geterror ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errnum_t* errnum, /**< error number */ - const qse_char_t** errmsg /**< error message */ -); - -/** - * The qse_cut_seterrnum() function sets error information omitting error - * location. - */ -void qse_cut_seterrnum ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errnum_t errnum, /**< error number */ - const qse_cstr_t* errarg /**< argument for formatting error message */ -); - -/** - * The qse_cut_seterrmsg() function sets error information with a customized - * message for a given error number. - */ -void qse_cut_seterrmsg ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errnum_t errnum, /**< error number */ - const qse_char_t* errmsg /**< error message */ -); - -/** - * The qse_cut_seterror() function sets an error number, an error location, and - * an error message. An error string is composed of a formatting string - * and an array of formatting parameters. - */ -void qse_cut_seterror ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_errnum_t errnum, /**< error number */ - const qse_cstr_t* errarg /**< array of arguments for formatting - * an error message */ -); - -/** - * The qse_cut_clear() function clears memory buffers internally allocated. - */ -void qse_cut_clear ( - qse_cut_t* cut /**< text cutter */ -); - -/** - * The qse_cut_comp() function compiles a selector into an internal form. - * @return 0 on success, -1 on error - */ -int qse_cut_comp ( - qse_cut_t* cut, /**< text cutter */ - const qse_char_t* str, /**< selector pointer */ - qse_size_t len /**< selector length */ -); - -/** - * The qse_cut_exec() function executes the compiled commands. - * @return 0 on success, -1 on error - */ -int qse_cut_exec ( - qse_cut_t* cut, /**< text cutter */ - qse_cut_io_fun_t inf, /**< input text stream */ - qse_cut_io_fun_t outf /**< output text stream */ -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/qse/cut/std.h b/qse/include/qse/cut/std.h deleted file mode 100644 index a0408a52..00000000 --- a/qse/include/qse/cut/std.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#ifndef _QSE_CUT_STD_H_ -#define _QSE_CUT_STD_H_ - -#include - -/** @file - * This file provides easier-to-use versions of selected API functions - * by implementing default handlers for I/O and memory management. - * - * @example cut01.c - * This example shows how to write a simple text cutter using helper - * functions. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The qse_cut_openstd() function creates a text cutter with the default - * memory manager and initialized it for other qse_cut_xxxxstd functions. - * @return pointer to a text cutter on success, QSE_NULL on failure. - */ -qse_cut_t* qse_cut_openstd ( - qse_size_t xtnsize /**< extension size in bytes */ -); - -/** - * The qse_cut_openstdwithmmgr() function creates a text cutter with a - * user-defined memory manager. It is equivalent to qse_cut_openstd(), - * except that you can specify your own memory manager. - * @return pointer to a text cutter on success, QSE_NULL on failure. - */ -qse_cut_t* qse_cut_openstdwithmmgr ( - qse_mmgr_t* mmgr, /**< memory manager */ - qse_size_t xtnsize /**< extension size in bytes */ -); - -/** - * The qse_cut_getxtnstd() gets the pointer to extension space. - * Note that you must not call qse_cut_getxtn() for a text cutter - * created with qse_cut_openstd(). - */ -void* qse_cut_getxtnstd ( - qse_cut_t* cut -); - -/** - * The qse_cut_compstd() function compiles a null-terminated selector. - * Call qse_cut_comp() for a length delimited selector. - */ -int qse_cut_compstd ( - qse_cut_t* cut, - const qse_char_t* str -); - -/** - * The qse_cut_execstd() function executes the compiled script - * over an input file @a infile and an output file @a outfile. - * If @a infile is QSE_NULL, the standard console input is used. - * If @a outfile is QSE_NULL, the standard console output is used.. - */ -int qse_cut_execstd ( - qse_cut_t* cut, - const qse_char_t* infile, - const qse_char_t* outfile -); - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/qse/include/qse/sed/sed.h b/qse/include/qse/sed/sed.h index 05c713ba..c518ba28 100644 --- a/qse/include/qse/sed/sed.h +++ b/qse/include/qse/sed/sed.h @@ -98,6 +98,26 @@ struct qse_sed_adr_t } u; }; +typedef struct qse_sed_cut_sel_t qse_sed_cut_sel_t; + +struct qse_sed_cut_sel_t +{ + qse_size_t len; + + struct + { + enum + { + QSE_SED_CUT_SEL_CHAR = QSE_T('c'), + QSE_SED_CUT_SEL_FIELD = QSE_T('f') + } id; + qse_size_t start; + qse_size_t end; + } range[128]; + + qse_sed_cut_sel_t* next; +}; + #define QSE_SED_CMD_NOOP QSE_T('\0') #define QSE_SED_CMD_QUIT QSE_T('q') #define QSE_SED_CMD_QUIT_QUIET QSE_T('Q') @@ -126,6 +146,7 @@ struct qse_sed_adr_t #define QSE_SED_CMD_SUBSTITUTE QSE_T('s') #define QSE_SED_CMD_TRANSLATE QSE_T('y') #define QSE_SED_CMD_CLEAR_PATTERN QSE_T('z') +#define QSE_SED_CMD_CUT QSE_T('C') struct qse_sed_cmd_t { @@ -170,6 +191,22 @@ struct qse_sed_cmd_t qse_xstr_t label; qse_sed_cmd_t* target; } branch; + + /* cut command information */ + struct + { + qse_sed_cut_sel_t* fb;/**< points to the first block */ + qse_sed_cut_sel_t* lb; /**< points to the last block */ + + qse_char_t delim[2]; /**< input/output field delimiters */ + unsigned short w: 1; /* whitespace for input delimiters. ignore delim[0]. */ + unsigned short f: 1; /* fold delimiters */ + unsigned short d: 1; /* delete if not delimited */ + + qse_size_t count; + qse_size_t fcount; + qse_size_t ccount; + } cut; } u; struct @@ -222,6 +259,7 @@ enum qse_sed_errnum_t QSE_SED_EOCSZE, /**< occurrence specifier zero */ QSE_SED_EOCSTL, /**< occurrence specifier too large */ QSE_SED_ENPREX, /**< no previous regular expression */ + QSE_SED_ECSLNV, /**< cut selector not valid */ QSE_SED_EIOFIL, /**< io error with file '${0}'*/ QSE_SED_EIOUSR /**< error returned by user io handler */ }; diff --git a/qse/regress/sed/regress.out b/qse/regress/sed/regress.out index 4df34041..2f7e154f 100644 --- a/qse/regress/sed/regress.out +++ b/qse/regress/sed/regress.out @@ -121,3 +121,10 @@ echo -n "done${CRE}" if [ -n "$FROMINIT" ];then cp -af /image/* /ramdisk/cdrom/ fi +-------------------------------------------------------------------------------- +[CMD] qsesed -f s009.sed s009.dat &1 +-------------------------------------------------------------------------------- +0;root;/root;/bin/bash +1;daemon;/usr/sbin;/bin/sh +2;bin;/bin;/bin/sh +3;sys;/dev;/bin/sh diff --git a/qse/regress/sed/regress.out.xma b/qse/regress/sed/regress.out.xma index 554dc3e2..76af96b3 100644 --- a/qse/regress/sed/regress.out.xma +++ b/qse/regress/sed/regress.out.xma @@ -121,3 +121,10 @@ echo -n "done${CRE}" if [ -n "$FROMINIT" ];then cp -af /image/* /ramdisk/cdrom/ fi +-------------------------------------------------------------------------------- +[CMD] qsesed -m 500000 -f s009.sed s009.dat &1 +-------------------------------------------------------------------------------- +0;root;/root;/bin/bash +1;daemon;/usr/sbin;/bin/sh +2;bin;/bin;/bin/sh +3;sys;/dev;/bin/sh diff --git a/qse/regress/sed/regress.sh.in b/qse/regress/sed/regress.sh.in index 6c66b400..b4bbd5f7 100755 --- a/qse/regress/sed/regress.sh.in +++ b/qse/regress/sed/regress.sh.in @@ -64,6 +64,7 @@ PROGS=" s006.sed/s006.dat// s007.sed/s007.dat// s008.sed/s008.dat//-w + s009.sed/s009.dat// " [ -x "${QSESED}" ] || diff --git a/qse/regress/sed/s009.dat b/qse/regress/sed/s009.dat new file mode 100644 index 00000000..66c28545 --- /dev/null +++ b/qse/regress/sed/s009.dat @@ -0,0 +1,5 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +####################################### +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh diff --git a/qse/regress/sed/s009.sed b/qse/regress/sed/s009.sed new file mode 100644 index 00000000..773acb40 --- /dev/null +++ b/qse/regress/sed/s009.sed @@ -0,0 +1 @@ +C|d:,D;,f3,1,f6-7|d diff --git a/qse/samples/Makefile.am b/qse/samples/Makefile.am index 936d68ac..6b6e1ca8 100644 --- a/qse/samples/Makefile.am +++ b/qse/samples/Makefile.am @@ -1 +1 @@ -SUBDIRS = cmn awk cut sed net +SUBDIRS = cmn awk sed net diff --git a/qse/samples/Makefile.in b/qse/samples/Makefile.in index 841a71f6..6e3cb6d0 100644 --- a/qse/samples/Makefile.in +++ b/qse/samples/Makefile.in @@ -239,7 +239,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = cmn awk cut sed net +SUBDIRS = cmn awk sed net all: all-recursive .SUFFIXES: diff --git a/qse/samples/cut/Makefile.am b/qse/samples/cut/Makefile.am deleted file mode 100644 index d73ed3aa..00000000 --- a/qse/samples/cut/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -AUTOMAKE_OPTIONS = nostdinc - -AM_CPPFLAGS = \ - -I$(top_builddir)/include \ - -I$(top_srcdir)/include \ - -I$(includedir) - -LDFLAGS = -L../../lib/cmn -L../../lib/cut -LDADD = -lqsecut -lqsecmn $(LIBM) - -if WIN32 -LDADD += $(UNICOWS_LIBS) -endif - -bin_PROGRAMS = cut01 - -cut01_SOURCES = cut01.c -cut01_LDADD = $(LDADD) - -#if ENABLE_CXX -# -#CXXLIB = -lqsecutxx -lqsecmnxx -#bin_PROGRAMS += cut02 cut03 -# -#cut02_SOURCES = cut02.cpp -#cut02_LDADD = $(CXXLIB) $(LDADD) -# -# -#endif diff --git a/qse/samples/cut/Makefile.in b/qse/samples/cut/Makefile.in deleted file mode 100644 index 55821201..00000000 --- a/qse/samples/cut/Makefile.in +++ /dev/null @@ -1,567 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) -bin_PROGRAMS = cut01$(EXEEXT) -subdir = samples/cut -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_numval.m4 \ - $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/lx_find_mpi.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/qse/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am_cut01_OBJECTS = cut01.$(OBJEXT) -cut01_OBJECTS = $(am_cut01_OBJECTS) -am__DEPENDENCIES_1 = -@WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) -cut01_DEPENDENCIES = $(am__DEPENDENCIES_3) -DEFAULT_INCLUDES = -depcomp = $(SHELL) $(top_srcdir)/ac/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(cut01_SOURCES) -DIST_SOURCES = $(cut01_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BUILD_MODE = @BUILD_MODE@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHAR_MODE = @CHAR_MODE@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_CXX = @HAVE_CXX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = -L../../lib/cmn -L../../lib/cut -LIBM = @LIBM@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MPICC = @MPICC@ -MPI_CFLAGS = @MPI_CFLAGS@ -MPI_CLDFLAGS = @MPI_CLDFLAGS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -QSE_PROJECT_AUTHOR = @QSE_PROJECT_AUTHOR@ -QSE_PROJECT_URL = @QSE_PROJECT_URL@ -QSE_SIZEOF_CHAR = @QSE_SIZEOF_CHAR@ -QSE_SIZEOF_DOUBLE = @QSE_SIZEOF_DOUBLE@ -QSE_SIZEOF_FLOAT = @QSE_SIZEOF_FLOAT@ -QSE_SIZEOF_INT = @QSE_SIZEOF_INT@ -QSE_SIZEOF_LONG = @QSE_SIZEOF_LONG@ -QSE_SIZEOF_LONG_DOUBLE = @QSE_SIZEOF_LONG_DOUBLE@ -QSE_SIZEOF_LONG_LONG = @QSE_SIZEOF_LONG_LONG@ -QSE_SIZEOF_SHORT = @QSE_SIZEOF_SHORT@ -QSE_SIZEOF_VOID_P = @QSE_SIZEOF_VOID_P@ -QSE_SIZEOF_WCHAR_T = @QSE_SIZEOF_WCHAR_T@ -RANLIB = @RANLIB@ -RM = @RM@ -RMDIR = @RMDIR@ -SED = @SED@ -SENDFILE_LIBS = @SENDFILE_LIBS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SOCKET_LIBS = @SOCKET_LIBS@ -STRIP = @STRIP@ -TRUE = @TRUE@ -UNICOWS_LIBS = @UNICOWS_LIBS@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = nostdinc -AM_CPPFLAGS = \ - -I$(top_builddir)/include \ - -I$(top_srcdir)/include \ - -I$(includedir) - -LDADD = -lqsecut -lqsecmn $(LIBM) $(am__append_1) -cut01_SOURCES = cut01.c -cut01_LDADD = $(LDADD) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign samples/cut/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign samples/cut/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -cut01$(EXEEXT): $(cut01_OBJECTS) $(cut01_DEPENDENCIES) - @rm -f cut01$(EXEEXT) - $(LINK) $(cut01_OBJECTS) $(cut01_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cut01.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS - - -#if ENABLE_CXX -# -#CXXLIB = -lqsecutxx -lqsecmnxx -#bin_PROGRAMS += cut02 cut03 -# -#cut02_SOURCES = cut02.cpp -#cut02_LDADD = $(CXXLIB) $(LDADD) -# -# -#endif - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/qse/samples/cut/cut01.c b/qse/samples/cut/cut01.c deleted file mode 100644 index 1e2cbe74..00000000 --- a/qse/samples/cut/cut01.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * $Id$ - * - Copyright 2006-2012 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 . - */ - -#include -#include -#include -#include - -#include -#if defined(_WIN32) -# include -#endif - -void print_usage (QSE_FILE* s, const qse_char_t* argv0) -{ - qse_fprintf (s, QSE_T("USAGE: %s selector [input-file [output-file]]\n"), argv0); - qse_fprintf (s, QSE_T("Sample selectors:\n")); - qse_fprintf (s, QSE_T("f1-3,5,D:, - select 1st to 3rd fields and 5th field delimited by :\n")); - qse_fprintf (s, QSE_T(" delimit output with ,\n")); - qse_fprintf (s, QSE_T("c7,10 - select 7th and 10th characters\n")); -} - -int cut_main (int argc, qse_char_t* argv[]) -{ - qse_cut_t* cut = QSE_NULL; - qse_char_t* infile; - qse_char_t* outfile; - int ret = -1; - - if (argc < 2 || argc > 4) - { - print_usage (QSE_STDERR, argv[0]); - return -1; - } - - cut = qse_cut_openstd (0); - if (cut == QSE_NULL) - { - qse_fprintf (QSE_STDERR, QSE_T("ERROR: cannot open cut\n")); - goto oops; - } - - if (qse_cut_compstd (cut, argv[1]) <= -1) - { - qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"), qse_cut_geterrmsg(cut)); - goto oops; - } - - infile = (argc >= 3)? argv[2]: QSE_NULL; - outfile = (argc >= 4)? argv[3]: QSE_NULL; - - if (qse_cut_execstd (cut, infile, outfile) <= -1) - { - qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"), qse_cut_geterrmsg(cut)); - goto oops; - } - -oops: - if (cut != QSE_NULL) qse_cut_close (cut); - return ret; -} - - -int qse_main (int argc, qse_achar_t* argv[]) -{ -#if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); - if (codepage == CP_UTF8) - { - /*SetConsoleOUtputCP (CP_UTF8);*/ - qse_setdflcmgr (qse_utf8cmgr); - } - else - { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); - qse_setdflcmgr (qse_slmbcmgr); - } -#else - setlocale (LC_ALL, ""); - qse_setdflcmgr (qse_slmbcmgr); -#endif - return qse_runmain (argc, argv, cut_main); -} -