importing sed files
This commit is contained in:
		| @ -52,6 +52,7 @@ pkginclude_HEADERS = \ | ||||
| 	hawk-pack1.h \ | ||||
| 	hawk-skad.h \ | ||||
| 	hawk-utl.h \ | ||||
| 	hawk-sed.h \ | ||||
| 	hawk-std.h \ | ||||
| 	hawk-tre.h \ | ||||
| 	hawk-unpack.h \ | ||||
| @ -97,6 +98,8 @@ libhawk_la_SOURCES = \ | ||||
| 	rio.c \ | ||||
| 	run-prv.h \ | ||||
| 	run.c \ | ||||
| 	sed-prv.h \ | ||||
| 	sed.c \ | ||||
| 	skad-prv.h \ | ||||
| 	skad.c \ | ||||
| 	tre-prv.h \ | ||||
|  | ||||
| @ -230,21 +230,22 @@ libhawk_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ | ||||
| am__libhawk_la_SOURCES_DIST = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \ | ||||
| 	hawk-dir.h hawk-ecs.h hawk-fmt.h hawk-gem.h hawk-htb.h \ | ||||
| 	hawk-map.h hawk-rbt.h hawk-pack1.h hawk-skad.h hawk-utl.h \ | ||||
| 	hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h Hawk.hpp \ | ||||
| 	HawkStd.hpp arr.c chr.c dir.c ecs-imp.h ecs.c err-prv.h err.c \ | ||||
| 	err-sys.c fmt-imp.h fmt.c fnc-prv.h fnc.c htb.c gem.c \ | ||||
| 	gem-nwif.c gem-nwif2.c hawk-prv.h hawk.c idmap-imp.h mb8.c \ | ||||
| 	misc-imp.h misc-prv.h misc.c parse-prv.h parse.c rbt.c rec.c \ | ||||
| 	rio-prv.h rio.c run-prv.h run.c skad-prv.h skad.c tre-prv.h \ | ||||
| 	tre-ast.c tre-ast.h tre-compile.c tre-compile.h tre-match-bt.c \ | ||||
| 	tre-match-pa.c tre-match-ut.h tre-mem.c tre-mem.h tre-parse.c \ | ||||
| 	tre-parse.h tre-stack.h tre-stack.c tre.c tree-prv.h tree.c \ | ||||
| 	uch-prop.h uch-case.h utf16.c utf8.c utl-ass.c utl-sort.c \ | ||||
| 	utl-str.c utl-sys.c utl.c val-prv.h val.c xma.c hawk-cli.h \ | ||||
| 	hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h \ | ||||
| 	cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h tio.c \ | ||||
| 	std-prv.h std.c Hawk.cpp HawkStd.cpp mod-hawk.c mod-hawk.h \ | ||||
| 	mod-math.c mod-math.h mod-str.c mod-str.h mod-sys.c mod-sys.h | ||||
| 	hawk-sed.h hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h \ | ||||
| 	Hawk.hpp HawkStd.hpp arr.c chr.c dir.c ecs-imp.h ecs.c \ | ||||
| 	err-prv.h err.c err-sys.c fmt-imp.h fmt.c fnc-prv.h fnc.c \ | ||||
| 	htb.c gem.c gem-nwif.c gem-nwif2.c hawk-prv.h hawk.c \ | ||||
| 	idmap-imp.h mb8.c misc-imp.h misc-prv.h misc.c parse-prv.h \ | ||||
| 	parse.c rbt.c rec.c rio-prv.h rio.c run-prv.h run.c sed-prv.h \ | ||||
| 	sed.c skad-prv.h skad.c tre-prv.h tre-ast.c tre-ast.h \ | ||||
| 	tre-compile.c tre-compile.h tre-match-bt.c tre-match-pa.c \ | ||||
| 	tre-match-ut.h tre-mem.c tre-mem.h tre-parse.c tre-parse.h \ | ||||
| 	tre-stack.h tre-stack.c tre.c tree-prv.h tree.c uch-prop.h \ | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-sort.c utl-str.c \ | ||||
| 	utl-sys.c utl.c val-prv.h val.c xma.c hawk-cli.h hawk-fio.h \ | ||||
| 	hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h cli-imp.h cli.c \ | ||||
| 	fio.c mtx.c pio.c sio.c syscall.h tio.c std-prv.h std.c \ | ||||
| 	Hawk.cpp HawkStd.cpp mod-hawk.c mod-hawk.h mod-math.c \ | ||||
| 	mod-math.h mod-str.c mod-str.h mod-sys.c mod-sys.h | ||||
| am__objects_1 = | ||||
| am__objects_2 = $(am__objects_1) | ||||
| @ENABLE_CXX_TRUE@am__objects_3 = libhawk_la-Hawk.lo \ | ||||
| @ -260,12 +261,13 @@ am_libhawk_la_OBJECTS = $(am__objects_2) libhawk_la-arr.lo \ | ||||
| 	libhawk_la-gem-nwif.lo libhawk_la-gem-nwif2.lo \ | ||||
| 	libhawk_la-hawk.lo libhawk_la-mb8.lo libhawk_la-misc.lo \ | ||||
| 	libhawk_la-parse.lo libhawk_la-rbt.lo libhawk_la-rec.lo \ | ||||
| 	libhawk_la-rio.lo libhawk_la-run.lo libhawk_la-skad.lo \ | ||||
| 	libhawk_la-tre-ast.lo libhawk_la-tre-compile.lo \ | ||||
| 	libhawk_la-tre-match-bt.lo libhawk_la-tre-match-pa.lo \ | ||||
| 	libhawk_la-tre-mem.lo libhawk_la-tre-parse.lo \ | ||||
| 	libhawk_la-tre-stack.lo libhawk_la-tre.lo libhawk_la-tree.lo \ | ||||
| 	libhawk_la-utf16.lo libhawk_la-utf8.lo libhawk_la-utl-ass.lo \ | ||||
| 	libhawk_la-rio.lo libhawk_la-run.lo libhawk_la-sed.lo \ | ||||
| 	libhawk_la-skad.lo libhawk_la-tre-ast.lo \ | ||||
| 	libhawk_la-tre-compile.lo libhawk_la-tre-match-bt.lo \ | ||||
| 	libhawk_la-tre-match-pa.lo libhawk_la-tre-mem.lo \ | ||||
| 	libhawk_la-tre-parse.lo libhawk_la-tre-stack.lo \ | ||||
| 	libhawk_la-tre.lo libhawk_la-tree.lo libhawk_la-utf16.lo \ | ||||
| 	libhawk_la-utf8.lo libhawk_la-utl-ass.lo \ | ||||
| 	libhawk_la-utl-sort.lo libhawk_la-utl-str.lo \ | ||||
| 	libhawk_la-utl-sys.lo libhawk_la-utl.lo libhawk_la-val.lo \ | ||||
| 	libhawk_la-xma.lo libhawk_la-cli.lo libhawk_la-fio.lo \ | ||||
| @ -310,9 +312,9 @@ am__depfiles_remade = ./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-parse.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-pio.Plo ./$(DEPDIR)/libhawk_la-rbt.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-rec.Plo ./$(DEPDIR)/libhawk_la-rio.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-run.Plo ./$(DEPDIR)/libhawk_la-sio.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-skad.Plo ./$(DEPDIR)/libhawk_la-std.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-tio.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-run.Plo ./$(DEPDIR)/libhawk_la-sed.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-sio.Plo ./$(DEPDIR)/libhawk_la-skad.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-std.Plo ./$(DEPDIR)/libhawk_la-tio.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-tre-ast.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-tre-compile.Plo \ | ||||
| 	./$(DEPDIR)/libhawk_la-tre-match-bt.Plo \ | ||||
| @ -385,8 +387,8 @@ am__can_run_installinfo = \ | ||||
| am__pkginclude_HEADERS_DIST = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \ | ||||
| 	hawk-dir.h hawk-ecs.h hawk-fmt.h hawk-gem.h hawk-htb.h \ | ||||
| 	hawk-map.h hawk-rbt.h hawk-pack1.h hawk-skad.h hawk-utl.h \ | ||||
| 	hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h Hawk.hpp \ | ||||
| 	HawkStd.hpp | ||||
| 	hawk-sed.h hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h \ | ||||
| 	Hawk.hpp HawkStd.hpp | ||||
| HEADERS = $(pkginclude_HEADERS) | ||||
| am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ | ||||
| 	hawk-cfg.h.in | ||||
| @ -596,22 +598,23 @@ CXXFLAGS_ALL_COMMON = | ||||
| pkginclude_HEADERS = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \ | ||||
| 	hawk-dir.h hawk-ecs.h hawk-fmt.h hawk-gem.h hawk-htb.h \ | ||||
| 	hawk-map.h hawk-rbt.h hawk-pack1.h hawk-skad.h hawk-utl.h \ | ||||
| 	hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h $(am__append_7) | ||||
| 	hawk-sed.h hawk-std.h hawk-tre.h hawk-unpack.h hawk-xma.h \ | ||||
| 	$(am__append_7) | ||||
| pkglib_LTLIBRARIES = libhawk.la $(am__append_14) | ||||
| libhawk_la_SOURCES = $(pkginclude_HEADERS) arr.c chr.c dir.c ecs-imp.h \ | ||||
| 	ecs.c err-prv.h err.c err-sys.c fmt-imp.h fmt.c fnc-prv.h \ | ||||
| 	fnc.c htb.c gem.c gem-nwif.c gem-nwif2.c hawk-prv.h hawk.c \ | ||||
| 	idmap-imp.h mb8.c misc-imp.h misc-prv.h misc.c parse-prv.h \ | ||||
| 	parse.c rbt.c rec.c rio-prv.h rio.c run-prv.h run.c skad-prv.h \ | ||||
| 	skad.c tre-prv.h tre-ast.c tre-ast.h tre-compile.c \ | ||||
| 	tre-compile.h tre-match-bt.c tre-match-pa.c tre-match-ut.h \ | ||||
| 	tre-mem.c tre-mem.h tre-parse.c tre-parse.h tre-stack.h \ | ||||
| 	tre-stack.c tre.c tree-prv.h tree.c uch-prop.h uch-case.h \ | ||||
| 	utf16.c utf8.c utl-ass.c utl-sort.c utl-str.c utl-sys.c utl.c \ | ||||
| 	val-prv.h val.c xma.c hawk-cli.h hawk-fio.h hawk-mtx.h \ | ||||
| 	hawk-pio.h hawk-sio.h hawk-tio.h cli-imp.h cli.c fio.c mtx.c \ | ||||
| 	pio.c sio.c syscall.h tio.c std-prv.h std.c $(am__append_8) \ | ||||
| 	$(am__append_9) | ||||
| 	parse.c rbt.c rec.c rio-prv.h rio.c run-prv.h run.c sed-prv.h \ | ||||
| 	sed.c skad-prv.h skad.c tre-prv.h tre-ast.c tre-ast.h \ | ||||
| 	tre-compile.c tre-compile.h tre-match-bt.c tre-match-pa.c \ | ||||
| 	tre-match-ut.h tre-mem.c tre-mem.h tre-parse.c tre-parse.h \ | ||||
| 	tre-stack.h tre-stack.c tre.c tree-prv.h tree.c uch-prop.h \ | ||||
| 	uch-case.h utf16.c utf8.c utl-ass.c utl-sort.c utl-str.c \ | ||||
| 	utl-sys.c utl.c val-prv.h val.c xma.c hawk-cli.h hawk-fio.h \ | ||||
| 	hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h cli-imp.h cli.c \ | ||||
| 	fio.c mtx.c pio.c sio.c syscall.h tio.c std-prv.h std.c \ | ||||
| 	$(am__append_8) $(am__append_9) | ||||
| libhawk_la_CPPFLAGS = $(CPPFLAGS_ALL_COMMON) $(CPPFLAGS_PFMOD) \ | ||||
| 	$(am__append_3) | ||||
| libhawk_la_CFLAGS = $(CFLAGS_ALL_COMMON) | ||||
| @ -800,6 +803,7 @@ distclean-compile: | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-rec.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-rio.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-run.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-sed.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-sio.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-skad.Plo@am__quote@ # am--include-marker | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-std.Plo@am__quote@ # am--include-marker | ||||
| @ -1024,6 +1028,13 @@ libhawk_la-run.lo: run.c | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -c -o libhawk_la-run.lo `test -f 'run.c' || echo '$(srcdir)/'`run.c | ||||
|  | ||||
| libhawk_la-sed.lo: sed.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -MT libhawk_la-sed.lo -MD -MP -MF $(DEPDIR)/libhawk_la-sed.Tpo -c -o libhawk_la-sed.lo `test -f 'sed.c' || echo '$(srcdir)/'`sed.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-sed.Tpo $(DEPDIR)/libhawk_la-sed.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sed.c' object='libhawk_la-sed.lo' libtool=yes @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -c -o libhawk_la-sed.lo `test -f 'sed.c' || echo '$(srcdir)/'`sed.c | ||||
|  | ||||
| libhawk_la-skad.lo: skad.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(libhawk_la_CFLAGS) $(CFLAGS) -MT libhawk_la-skad.lo -MD -MP -MF $(DEPDIR)/libhawk_la-skad.Tpo -c -o libhawk_la-skad.lo `test -f 'skad.c' || echo '$(srcdir)/'`skad.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-skad.Tpo $(DEPDIR)/libhawk_la-skad.Plo | ||||
| @ -1458,6 +1469,7 @@ distclean: distclean-am | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-rec.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-rio.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-run.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-sed.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-sio.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-skad.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-std.Plo | ||||
| @ -1560,6 +1572,7 @@ maintainer-clean: maintainer-clean-am | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-rec.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-rio.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-run.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-sed.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-sio.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-skad.Plo | ||||
| 	-rm -f ./$(DEPDIR)/libhawk_la-std.Plo | ||||
|  | ||||
| @ -911,7 +911,7 @@ enum hawk_errnum_t | ||||
| 	HAWK_ETMOUT,  /**< timed out */ | ||||
| 	HAWK_ESTATE,  /**< in bad state */ | ||||
|  | ||||
| 	/* mostly parse errors */ | ||||
| 	/* mostly hawk parse errors */ | ||||
| 	HAWK_EOPEN,   /**< cannot open */ | ||||
| 	HAWK_EREAD,   /**< cannot read */ | ||||
| 	HAWK_EWRITE,  /**< cannot write */ | ||||
| @ -981,7 +981,7 @@ enum hawk_errnum_t | ||||
| 	HAWK_EXKWNR,    /**< word after @ not recognized */ | ||||
| 	HAWK_EXKWEM,    /**< @ not followed by a valid word  */ | ||||
|  | ||||
| 	/* run time error */ | ||||
| 	/* hawk run time error */ | ||||
| 	HAWK_ESTACK,        /**< stack error */ | ||||
| 	HAWK_EDIVBY0,       /**< divide by zero */ | ||||
| 	HAWK_EOPERAND,      /**< invalid operand */ | ||||
| @ -1037,9 +1037,40 @@ enum hawk_errnum_t | ||||
| 	HAWK_EREXBADBR,     /**< invalid content inside braces */ | ||||
| 	HAWK_EREXRANGE,     /**< invalid use of range operator */ | ||||
| 	HAWK_EREXBADRPT,    /**< invalid use of repetition operator */ | ||||
| 	 | ||||
|  | ||||
| 	/* sed error */ | ||||
| 	HAWK_SED_ECMDNR,  /**< command '${0}' not recognized */ | ||||
| 	HAWK_SED_ECMDMS,  /**< command code missing */ | ||||
| 	HAWK_SED_ECMDIC,  /**< command '${0}' incomplete */ | ||||
| 	HAWK_SED_EREXIC,  /**< regular expression '${0}' incomplete */ | ||||
| 	HAWK_SED_EREXBL,  /**< failed to compile regular expression '${0}' */ | ||||
| 	HAWK_SED_EREXMA,  /**< failed to match regular expression */ | ||||
| 	HAWK_SED_EA1PHB,  /**< address 1 prohibited for '${0}' */ | ||||
| 	HAWK_SED_EA1MOI,  /**< address 1 missing or invalid */ | ||||
| 	HAWK_SED_EA2PHB,  /**< address 2 prohibited */ | ||||
| 	HAWK_SED_EA2MOI,  /**< address 2 missing or invalid */ | ||||
| 	HAWK_SED_ENEWLN,  /**< newline expected */ | ||||
| 	HAWK_SED_EBSEXP,  /**< backslash expected */ | ||||
| 	HAWK_SED_EBSDEL,  /**< backslash used as delimiter */ | ||||
| 	HAWK_SED_EGBABS,  /**< garbage after backslash */ | ||||
| 	HAWK_SED_ESCEXP,  /**< semicolon expected */ | ||||
| 	HAWK_SED_ELABEM,  /**< empty label name */ | ||||
| 	HAWK_SED_ELABDU,  /**< duplicate label name '${0}' */ | ||||
| 	HAWK_SED_ELABNF,  /**< label '${0}' not found */ | ||||
| 	HAWK_SED_EFILEM,  /**< empty file name */ | ||||
| 	HAWK_SED_EFILIL,  /**< illegal file name */ | ||||
| 	HAWK_SED_ETSNSL,  /**< strings in translation set not the same length*/ | ||||
| 	HAWK_SED_EGRNBA,  /**< group brackets not balanced */ | ||||
| 	HAWK_SED_EGRNTD,  /**< group nesting too deep */ | ||||
| 	HAWK_SED_EOCSDU,  /**< multiple occurrence specifiers */ | ||||
| 	HAWK_SED_EOCSZE,  /**< occurrence specifier zero */ | ||||
| 	HAWK_SED_EOCSTL,  /**< occurrence specifier too large */ | ||||
| 	HAWK_SED_ENPREX,  /**< no previous regular expression */ | ||||
| 	HAWK_SED_ECSLNV,  /**< cut selector not valid */ | ||||
| 	HAWK_SED_EIOFIL,  /**< io error with file '${0}' */ | ||||
|  | ||||
| 	/* the number of error numbers, internal use only */ | ||||
| 	HAWK_NUMERRNUM  | ||||
| 	HAWK_NUMERRNUMS | ||||
| }; | ||||
| typedef enum hawk_errnum_t hawk_errnum_t; | ||||
|  | ||||
|  | ||||
| @ -39,7 +39,7 @@ | ||||
| #	define HAWK_MAP_STYLE_INLINE_COPIERS             HAWK_HTB_STYLE_INLINE_COPIERS | ||||
| #	define HAWK_MAP_STYLE_INLINE_KEY_COPIER          HAWK_HTB_STYLE_INLINE_KEY_COPIER | ||||
| #	define HAWK_MAP_STYLE_INLINE_VALUE_COPIER        HAWK_HTB_STYLE_INLINE_VALUE_COPIER | ||||
| #	define hawk_getmapstyle(kind)                    hawk_gethtbstyle(kind) | ||||
| #	define hawk_get_map_style(kind)                  hawk_get_htb_style(kind) | ||||
| #	define hawk_map_open(mmgr,ext,capa,factor,ks,vs) hawk_htb_open(mmgr,ext,capa,factor,ks,vs) | ||||
| #	define hawk_map_close(map)                       hawk_htb_close(map) | ||||
| #	define hawk_map_init(map,mmgr,capa,factor,ks,vs) hawk_htb_init(map,mmgr,capa,factor,ks,vs) | ||||
| @ -102,7 +102,7 @@ | ||||
| #	define HAWK_MAP_STYLE_INLINE_COPIERS             HAWK_RBT_STYLE_INLINE_COPIERS | ||||
| #	define HAWK_MAP_STYLE_INLINE_KEY_COPIER          HAWK_RBT_STYLE_INLINE_KEY_COPIER | ||||
| #	define HAWK_MAP_STYLE_INLINE_VALUE_COPIER        HAWK_RBT_STYLE_INLINE_VALUE_COPIER | ||||
| #	define hawk_getmapstyle(kind)                    hawk_getrbtstyle(kind) | ||||
| #	define hawk_get_map_style(kind)                  hawk_get_rbt_style(kind) | ||||
| #	define hawk_map_open(mmgr,ext,capa,factor,ks,vs) hawk_rbt_open(mmgr,ext,ks,vs) | ||||
| #	define hawk_map_close(map)                       hawk_rbt_close(map) | ||||
| #	define hawk_map_init(map,mmgr,capa,factor,ks,vs) hawk_rbt_init(map,mmgr,ks,vs) | ||||
|  | ||||
| @ -312,10 +312,10 @@ HAWK_EXPORT const hawk_rbt_style_t* hawk_get_rbt_style ( | ||||
|  * \return hawk_rbt_t pointer on success, HAWK_NULL on failure. | ||||
|  */ | ||||
| HAWK_EXPORT hawk_rbt_t* hawk_rbt_open ( | ||||
| 	hawk_gem_t*  gem, | ||||
| 	hawk_oow_t   xtnsize, /**< extension size in bytes */ | ||||
| 	int          kscale,  /**< key scale */ | ||||
| 	int          vscale   /**< value scale */ | ||||
| 	hawk_gem_t* gem, | ||||
| 	hawk_oow_t  xtnsize, /**< extension size in bytes */ | ||||
| 	int         kscale,  /**< key scale */ | ||||
| 	int         vscale   /**< value scale */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
| @ -329,10 +329,10 @@ HAWK_EXPORT void hawk_rbt_close ( | ||||
|  * The hawk_rbt_init() function initializes a red-black tree | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_rbt_init ( | ||||
| 	hawk_rbt_t*  rbt,    /**< red-black tree */ | ||||
| 	hawk_gem_t*  gem, | ||||
| 	int          kscale, /**< key scale */ | ||||
| 	int          vscale  /**< value scale */ | ||||
| 	hawk_rbt_t* rbt,    /**< red-black tree */ | ||||
| 	hawk_gem_t* gem, | ||||
| 	int         kscale, /**< key scale */ | ||||
| 	int         vscale  /**< value scale */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  | ||||
							
								
								
									
										661
									
								
								hawk/lib/hawk-sed.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										661
									
								
								hawk/lib/hawk-sed.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,661 @@ | ||||
| /* | ||||
|  * $Id$ | ||||
|  * | ||||
|     Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved. | ||||
|  | ||||
|     Redistribution and use in source and binary forms, with or without | ||||
|     modification, are permitted provided that the following conditions | ||||
|     are met: | ||||
|     1. Redistributions of source code must retain the above copyright | ||||
|        notice, this list of conditions and the following disclaimer. | ||||
|     2. Redistributions in binary form must reproduce the above copyright | ||||
|        notice, this list of conditions and the following disclaimer in the | ||||
|        documentation and/or other materials provided with the distribution. | ||||
|  | ||||
|     THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR | ||||
|     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||||
|     OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
|     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||||
|     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||||
|     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
|     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
|     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
|     THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _HAWK_SED_H_ | ||||
| #define _HAWK_SED_H_ | ||||
|  | ||||
| #include <hawk-cmn.h> | ||||
| #include <hawk-gem.h> | ||||
|  | ||||
| /** @file | ||||
|  * This file defines data types and functions to use for creating a custom | ||||
|  * stream editor commonly available on many platforms. A stream editor is  | ||||
|  * a non-interactive text editing tool that reads text from an input stream,  | ||||
|  * stores it to pattern space, manipulates the pattern space by applying a set | ||||
|  * of editing commands, and writes the pattern space to an output stream.  | ||||
|  * Typically, the input and output streams are a console or a file. | ||||
|  * | ||||
|  * @code | ||||
|  * sed = hawk_sed_open (); | ||||
|  * hawk_sed_comp (sed); | ||||
|  * hawk_sed_exec (sed); | ||||
|  * hawk_sed_close (sed); | ||||
|  * @endcode | ||||
|  */ | ||||
|  | ||||
| /** @struct hawk_sed_t | ||||
|  * The hawk_sed_t type defines a stream editor. The structural details are  | ||||
|  * hidden as it is a relatively complex data type and fragile to external | ||||
|  * changes. To use a stream editor, you typically can: | ||||
|  * | ||||
|  * - create a stream editor object with hawk_sed_open(). | ||||
|  * - compile stream editor commands with hawk_sed_comp(). | ||||
|  * - execute them over input and output streams with hawk_sed_exec(). | ||||
|  * - destroy it with hawk_sed_close() when done. | ||||
|  * | ||||
|  * The input and output streams needed by hawk_sed_exec() are implemented in | ||||
|  * the form of callback functions. You should implement two functions  | ||||
|  * conforming to the ::hawk_sed_io_impl_t type. | ||||
|  */ | ||||
| typedef struct hawk_sed_t hawk_sed_t; | ||||
|  | ||||
| #define HAWK_SED_HDR \ | ||||
| 	hawk_oow_t _instsize; \ | ||||
| 	hawk_gem_t _gem | ||||
|  | ||||
| typedef struct hawk_sed_alt_t hawk_sed_alt_t; | ||||
| struct hawk_sed_alt_t | ||||
| { | ||||
| 	/* ensure that hawk_sed_alt_t matches the beginning part of hawk_sed_t */ | ||||
| 	HAWK_SED_HDR; | ||||
| }; | ||||
|  | ||||
| typedef struct hawk_sed_adr_t hawk_sed_adr_t;  | ||||
| typedef struct hawk_sed_cmd_t hawk_sed_cmd_t; | ||||
|  | ||||
| struct hawk_sed_adr_t | ||||
| { | ||||
| 	enum | ||||
| 	{ | ||||
| 		HAWK_SED_ADR_NONE,     /* no address */ | ||||
| 		HAWK_SED_ADR_DOL,      /* $ - last line */ | ||||
| 		HAWK_SED_ADR_LINE,     /* specified line */ | ||||
| 		HAWK_SED_ADR_REX,      /* lines matching regular expression */ | ||||
| 		HAWK_SED_ADR_STEP,     /* line steps - only in the second address */ | ||||
| 		HAWK_SED_ADR_RELLINE,  /* relative line - only in second address */ | ||||
| 		HAWK_SED_ADR_RELLINEM  /* relative line in the multiples - only in second address */ | ||||
| 	} type; | ||||
|  | ||||
| 	union  | ||||
| 	{ | ||||
| 		hawk_oow_t lno; | ||||
| 		void*      rex; | ||||
| 	} u; | ||||
| }; | ||||
|  | ||||
| typedef struct hawk_sed_cut_sel_t hawk_sed_cut_sel_t; | ||||
|  | ||||
| struct hawk_sed_cut_sel_t | ||||
| { | ||||
| 	hawk_oow_t len; | ||||
|  | ||||
| 	struct | ||||
| 	{ | ||||
| 		enum | ||||
| 		{ | ||||
| 			HAWK_SED_CUT_SEL_CHAR = HAWK_T('c'), | ||||
| 			HAWK_SED_CUT_SEL_FIELD = HAWK_T('f') | ||||
| 		} id; | ||||
| 		hawk_oow_t start; | ||||
| 		hawk_oow_t end; | ||||
| 	} range[128]; | ||||
|  | ||||
| 	hawk_sed_cut_sel_t* next; | ||||
| }; | ||||
|  | ||||
| #define HAWK_SED_CMD_NOOP            HAWK_T('\0') | ||||
| #define HAWK_SED_CMD_QUIT            HAWK_T('q') | ||||
| #define HAWK_SED_CMD_QUIT_QUIET      HAWK_T('Q') | ||||
| #define HAWK_SED_CMD_APPEND          HAWK_T('a') | ||||
| #define HAWK_SED_CMD_INSERT          HAWK_T('i') | ||||
| #define HAWK_SED_CMD_CHANGE          HAWK_T('c') | ||||
| #define HAWK_SED_CMD_DELETE          HAWK_T('d') | ||||
| #define HAWK_SED_CMD_DELETE_FIRSTLN  HAWK_T('D') | ||||
| #define HAWK_SED_CMD_PRINT_LNNUM     HAWK_T('=') | ||||
| #define HAWK_SED_CMD_PRINT           HAWK_T('p') | ||||
| #define HAWK_SED_CMD_PRINT_FIRSTLN   HAWK_T('P') | ||||
| #define HAWK_SED_CMD_PRINT_CLEARLY   HAWK_T('l') | ||||
| #define HAWK_SED_CMD_HOLD            HAWK_T('h') | ||||
| #define HAWK_SED_CMD_HOLD_APPEND     HAWK_T('H') | ||||
| #define HAWK_SED_CMD_RELEASE         HAWK_T('g') | ||||
| #define HAWK_SED_CMD_RELEASE_APPEND  HAWK_T('G') | ||||
| #define HAWK_SED_CMD_EXCHANGE        HAWK_T('x')  | ||||
| #define HAWK_SED_CMD_NEXT            HAWK_T('n') | ||||
| #define HAWK_SED_CMD_NEXT_APPEND     HAWK_T('N') | ||||
| #define HAWK_SED_CMD_READ_FILE       HAWK_T('r') | ||||
| #define HAWK_SED_CMD_READ_FILELN     HAWK_T('R') | ||||
| #define HAWK_SED_CMD_WRITE_FILE      HAWK_T('w') | ||||
| #define HAWK_SED_CMD_WRITE_FILELN    HAWK_T('W') | ||||
| #define HAWK_SED_CMD_BRANCH          HAWK_T('b')  | ||||
| #define HAWK_SED_CMD_BRANCH_COND     HAWK_T('t') | ||||
| #define HAWK_SED_CMD_SUBSTITUTE      HAWK_T('s') | ||||
| #define HAWK_SED_CMD_TRANSLATE       HAWK_T('y') | ||||
| #define HAWK_SED_CMD_CLEAR_PATTERN   HAWK_T('z') | ||||
| #define HAWK_SED_CMD_CUT             HAWK_T('C') | ||||
|  | ||||
| struct hawk_sed_cmd_t | ||||
| { | ||||
| 	hawk_ooch_t type; | ||||
|  | ||||
| 	const hawk_ooch_t* lid; | ||||
| 	hawk_loc_t     loc; | ||||
|  | ||||
| 	int negated; | ||||
|  | ||||
| 	hawk_sed_adr_t a1; /* optional start address */ | ||||
| 	hawk_sed_adr_t a2; /* optional end address */ | ||||
|  | ||||
| 	union | ||||
| 	{ | ||||
| 		/* text for the a, i, c commands */ | ||||
| 		hawk_oocs_t text;   | ||||
|  | ||||
| 		/* file name for r, w, R, W */ | ||||
| 		hawk_oocs_t file; | ||||
|  | ||||
| 		/* data for the s command */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			void* rex; /* regular expression */ | ||||
| 			hawk_oocs_t rpl;  /* replacement */ | ||||
|  | ||||
| 			/* flags */ | ||||
| 			hawk_oocs_t file; /* file name for w */ | ||||
| 			unsigned short occ; | ||||
| 			unsigned short g: 1; /* global */ | ||||
| 			unsigned short p: 1; /* print */ | ||||
| 			unsigned short i: 1; /* case insensitive */ | ||||
| 			unsigned short k: 1; /* kill unmatched portion */ | ||||
| 		} subst; | ||||
|  | ||||
| 		/* translation set for the y command */ | ||||
| 		hawk_oocs_t transet; | ||||
|  | ||||
| 		/* branch target for b and t */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_oocs_t label; | ||||
| 			hawk_sed_cmd_t* target; | ||||
| 		} branch; | ||||
|  | ||||
| 		/* cut command information */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_sed_cut_sel_t* fb;/**< points to the first block */ | ||||
| 			hawk_sed_cut_sel_t* lb; /**< points to the last block */ | ||||
|  | ||||
| 			hawk_ooch_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 */ | ||||
|  | ||||
| 			hawk_oow_t         count; | ||||
| 			hawk_oow_t         fcount; | ||||
| 			hawk_oow_t         ccount; | ||||
| 		} cut; | ||||
| 	} u;	 | ||||
|  | ||||
| 	struct | ||||
| 	{ | ||||
| 		int a1_matched; | ||||
| 		hawk_oow_t a1_match_line; | ||||
|  | ||||
| 		int c_ready; | ||||
|  | ||||
| 		/* points to the next command for fast traversal and  | ||||
| 		 * fast random jumps */ | ||||
| 		hawk_sed_cmd_t* next;  | ||||
| 	} state; | ||||
| }; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_opt_t type defines various option types. | ||||
|  */ | ||||
| enum hawk_sed_opt_t | ||||
| { | ||||
| 	HAWK_SED_TRAIT,      /**< trait */ | ||||
| 	HAWK_SED_TRACER,     /**< tracer hook */ | ||||
| 	HAWK_SED_LFORMATTER, /**< formatter for the 'l' command */ | ||||
|  | ||||
| 	HAWK_SED_DEPTH_REX_BUILD, | ||||
| 	HAWK_SED_DEPTH_REX_MATCH | ||||
| }; | ||||
| typedef enum hawk_sed_opt_t hawk_sed_opt_t; | ||||
|  | ||||
| /**  | ||||
|  * The hawk_sed_trait_t type defines various trait codes for a stream editor. | ||||
|  * Options can be OR'ed with each other and be passed to a stream editor with | ||||
|  * the hawk_sed_setopt() function. | ||||
|  */ | ||||
| enum hawk_sed_trait_t | ||||
| { | ||||
| 	HAWK_SED_STRIPLS      = (1 << 0), /**< strip leading spaces from text */ | ||||
| 	HAWK_SED_KEEPTBS      = (1 << 1), /**< keep an trailing backslash */ | ||||
| 	HAWK_SED_ENSURENL     = (1 << 2), /**< ensure NL at the text end */ | ||||
| 	HAWK_SED_QUIET        = (1 << 3), /**< do not print pattern space */ | ||||
| 	HAWK_SED_STRICT       = (1 << 4), /**< do strict address and label check */ | ||||
| 	HAWK_SED_EXTENDEDADR  = (1 << 5), /**< allow start~step , addr1,+line, addr1,~line */ | ||||
| 	HAWK_SED_SAMELINE     = (1 << 7), /**< allow text on the same line as c, a, i */ | ||||
| 	HAWK_SED_EXTENDEDREX  = (1 << 8), /**< use extended regex */ | ||||
| 	HAWK_SED_NONSTDEXTREX = (1 << 9)  /**< enable non-standard extensions to regex */ | ||||
| }; | ||||
| typedef enum hawk_sed_trait_t hawk_sed_trait_t; | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_io_cmd_t type defines I/O command codes. The code indicates  | ||||
|  * the action to take in an I/O handler. | ||||
|  */ | ||||
| enum hawk_sed_io_cmd_t | ||||
| { | ||||
| 	HAWK_SED_IO_OPEN  = 0, | ||||
| 	HAWK_SED_IO_CLOSE = 1, | ||||
| 	HAWK_SED_IO_READ  = 2, | ||||
| 	HAWK_SED_IO_WRITE = 3 | ||||
| }; | ||||
| typedef enum hawk_sed_io_cmd_t hawk_sed_io_cmd_t; | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_io_arg_t type defines a data structure required by  | ||||
|  * an I/O handler. | ||||
|  */ | ||||
| struct hawk_sed_io_arg_t | ||||
| { | ||||
| 	void*             handle; /**< I/O handle */ | ||||
| 	const hawk_ooch_t* path;   /**< file path. HAWK_NULL for a console */ | ||||
| }; | ||||
| typedef struct hawk_sed_io_arg_t hawk_sed_io_arg_t; | ||||
|  | ||||
| /**  | ||||
|  * The hawk_sed_io_impl_t type defines an I/O handler. I/O handlers are called by | ||||
|  * hawk_sed_exec(). | ||||
|  */ | ||||
| typedef hawk_ooi_t (*hawk_sed_io_impl_t) ( | ||||
| 	hawk_sed_t*        sed, | ||||
| 	hawk_sed_io_cmd_t  cmd, | ||||
| 	hawk_sed_io_arg_t* arg, | ||||
| 	hawk_ooch_t*       data, | ||||
| 	hawk_oow_t        count | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_lformatter_t type defines a text formatter for the 'l' command. | ||||
|  */ | ||||
| typedef int (*hawk_sed_lformatter_t) ( | ||||
| 	hawk_sed_t*        sed, | ||||
| 	const hawk_ooch_t* str, | ||||
| 	hawk_oow_t        len, | ||||
| 	int (*cwriter) (hawk_sed_t*, hawk_ooch_t) | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_ecb_close_t type defines the callback function | ||||
|  * called when an sed object is closed. | ||||
|  */ | ||||
| typedef void (*hawk_sed_ecb_close_t) ( | ||||
| 	hawk_sed_t* sed  /**< sed */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_ecb_t type defines an event callback set. | ||||
|  * You can register a callback function set with | ||||
|  * hawk_sed_pushecb().  The callback functions in the registered | ||||
|  * set are called in the reverse order of registration. | ||||
|  */ | ||||
| typedef struct hawk_sed_ecb_t hawk_sed_ecb_t; | ||||
| struct hawk_sed_ecb_t | ||||
| { | ||||
| 	/** | ||||
| 	 * called by hawk_sed_close(). | ||||
| 	 */ | ||||
| 	hawk_sed_ecb_close_t close; | ||||
|  | ||||
| 	/* internal use only. don't touch this field */ | ||||
| 	hawk_sed_ecb_t* next; | ||||
| }; | ||||
|  | ||||
| enum hawk_sed_tracer_op_t | ||||
| { | ||||
| 	HAWK_SED_TRACER_READ, | ||||
| 	HAWK_SED_TRACER_WRITE, | ||||
| 	HAWK_SED_TRACER_MATCH, | ||||
| 	HAWK_SED_TRACER_EXEC | ||||
| }; | ||||
| typedef enum hawk_sed_tracer_op_t hawk_sed_tracer_op_t; | ||||
|  | ||||
| typedef void (*hawk_sed_tracer_t) ( | ||||
| 	hawk_sed_t*           sed, | ||||
| 	hawk_sed_tracer_op_t  op, | ||||
| 	const hawk_sed_cmd_t* cmd | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_space_t type defines the types of | ||||
|  * sed bufferspaces.  | ||||
|  */ | ||||
| enum hawk_sed_space_t | ||||
| { | ||||
| 	HAWK_SED_SPACE_HOLD,   /**< hold space */ | ||||
| 	HAWK_SED_SPACE_PATTERN /**< pattern space */ | ||||
| }; | ||||
| typedef enum hawk_sed_space_t hawk_sed_space_t; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_open() function creates a stream editor object. A memory | ||||
|  * manager provided is used to allocate and destory the object and any dynamic | ||||
|  * data through out its lifetime. An extension area is allocated if an | ||||
|  * extension size greater than 0 is specified. You can access it with the | ||||
|  * hawk_sed_getxtn() function and use it to store arbitrary data associated | ||||
|  * with the object.  When done, you should destroy the object with the  | ||||
|  * hawk_sed_close() function to avoid any resource leaks including memory.  | ||||
|  * @return pointer to a stream editor on success, HAWK_NULL on failure | ||||
|  */ | ||||
| HAWK_EXPORT hawk_sed_t* hawk_sed_open ( | ||||
| 	hawk_mmgr_t*   mmgr,    /**< memory manager */ | ||||
| 	hawk_oow_t     xtnsize, /**< extension size in bytes */ | ||||
| 	hawk_errnum_t* errnum | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_close() function destroys a stream editor. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_close ( | ||||
| 	hawk_sed_t* sed /**< stream editor */ | ||||
| ); | ||||
|  | ||||
|  | ||||
|  | ||||
| #if defined(HAWK_HAVE_INLINE) | ||||
| /** | ||||
|  * The hawk_sed_getxtn() function returns the pointer to the extension area | ||||
|  * placed behind the actual sed object. | ||||
|  */ | ||||
| static HAWK_INLINE void* hawk_sed_getxtn (hawk_sed_t* sed) { return (void*)((hawk_uint8_t*)sed + ((hawk_sed_alt_t*)sed)->_instsize); } | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_getgem() function gets the pointer to the gem structure of the  | ||||
|  * sed object.  | ||||
|  */ | ||||
| static HAWK_INLINE hawk_gem_t* hawk_sed_getgem (hawk_sed_t* sed) { return &((hawk_sed_alt_t*)sed)->_gem; } | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_getmmgr() function gets the memory manager used in | ||||
|  * hawk_sed_open(). | ||||
|  */ | ||||
| static HAWK_INLINE hawk_mmgr_t* hawk_sed_getmmgr (hawk_sed_t* sed) { return ((hawk_sed_alt_t*)sed)->_gem.mmgr; } | ||||
| #else | ||||
| #define hawk_sed_getxtn(sed) ((void*)((hawk_uint8_t*)sed + ((hawk_sed_alt_t*)sed)->_instsize)) | ||||
| #define hawk_sed_getgem(sed) (&((hawk_sed_alt_t*)(sed))->_gem) | ||||
| #define hawk_sed_getmmgr(sed) (((hawk_sed_alt_t*)(sed))->_gem.mmgr) | ||||
| #endif /* HAWK_HAVE_INLINE */ | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_getopt() function gets the value of an option | ||||
|  * specified by \a id into the buffer pointed to by \a value. | ||||
|  * | ||||
|  * The \a value field is dependent on \a id: | ||||
|  *  - #HAWK_SED_TRAIT - int*, 0 or bitwised-ORed of #hawk_sed_trait_t values | ||||
|  *  - #HAWK_SED_TRACER - hawk_sed_tracer_t* | ||||
|  *  - #HAWK_SED_LFORMATTER - hawk_sed_lformatter_t* | ||||
|  * | ||||
|  * \return 0 on success, -1 on failure | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_sed_getopt ( | ||||
| 	hawk_sed_t*    sed, | ||||
| 	hawk_sed_opt_t id, | ||||
| 	void*         value | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_setopt() function sets the value of an option  | ||||
|  * specified by \a id to the value pointed to by \a value. | ||||
|  * | ||||
|  * The \a value field is dependent on \a id: | ||||
|  *  - #HAWK_SED_TRAIT - const int*, 0 or bitwised-ORed of #hawk_sed_trait_t values | ||||
|  *  - #HAWK_SED_TRACER - hawk_sed_tracer_t | ||||
|  *  - #HAWK_SED_LFORMATTER - hawk_sed_lformatter_t | ||||
|  * | ||||
|  * \return 0 on success, -1 on failure | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_sed_setopt ( | ||||
| 	hawk_sed_t*    sed, | ||||
| 	hawk_sed_opt_t id, | ||||
| 	const void*   value | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_geterrnum() function returns the number of the last error  | ||||
|  * occurred. | ||||
|  * \return error number | ||||
|  */ | ||||
|  | ||||
| #if defined(HAWK_HAVE_INLINE) | ||||
| static HAWK_INLINE hawk_errnum_t hawk_sed_geterrnum (hawk_sed_t* sed) { return ((hawk_sed_alt_t*)sed)->_gem.errnum; } | ||||
| #else | ||||
| #	define hawk_sed_geterrnum(sed) (((hawk_sed_alt_t*)(sed))->_gem.errnum) | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_geterrloc() function gets the location where the last error  | ||||
|  * has occurred. | ||||
|  * @return error location | ||||
|  */ | ||||
| HAWK_EXPORT const hawk_loc_t* hawk_sed_geterrloc ( | ||||
| 	hawk_sed_t* sed /**< stream editor */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_geterrmsg() function gets a string describing the last error. | ||||
|  * @return error message pointer | ||||
|  */ | ||||
| HAWK_EXPORT const hawk_ooch_t* hawk_sed_geterrmsg ( | ||||
| 	hawk_sed_t* sed /**< stream editor */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_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. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_geterror ( | ||||
| 	hawk_sed_t*         sed,    /**< stream editor */ | ||||
| 	hawk_errnum_t*      errnum, /**< error number */ | ||||
| 	const hawk_ooch_t** errmsg, /**< error message */ | ||||
| 	hawk_loc_t*         errloc  /**< error location */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_seterrnum() function sets the error information omitting  | ||||
|  * error location. You must pass a non-NULL for \a errarg if the specified | ||||
|  * error number \a errnum requires one or more arguments to format an | ||||
|  * error message. | ||||
|  */ | ||||
| #if defined(HAWK_HAVE_INLINE) | ||||
| static HAWK_INLINE void hawk_sed_seterrnum (hawk_sed_t* sed, const hawk_loc_t* errloc, hawk_errnum_t errnum) { hawk_gem_seterrnum (hawk_sed_getgem(sed), errloc, errnum); } | ||||
| #else | ||||
| #define hawk_sed_seterrnum(sed, errloc, errnum) hawk_sed_gem_seterrnum(hawk_sed_getgem(sed), errloc, errnum) | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_seterrmsg() function sets error information with a customized  | ||||
|  * message for a given error number. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_seterrmsg ( | ||||
| 	hawk_sed_t*        sed,      /**< stream editor */ | ||||
| 	hawk_errnum_t      errnum,   /**< error number */ | ||||
| 	const hawk_ooch_t* errmsg,   /**< error message */ | ||||
| 	const hawk_loc_t*  errloc /**< error location */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_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. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_seterror ( | ||||
| 	hawk_sed_t*        sed,    /**< stream editor */ | ||||
| 	hawk_errnum_t      errnum, /**< error number */ | ||||
| 	const hawk_oocs_t* errarg, /**< array of arguments for formatting an error message */ | ||||
| 	const hawk_loc_t*  errloc  /**< error location */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_popecb() function pops an sed event callback set | ||||
|  * and returns the pointer to it. If no callback set can be popped, | ||||
|  * it returns #HAWK_NULL. | ||||
|  */ | ||||
| HAWK_EXPORT hawk_sed_ecb_t* hawk_sed_popecb ( | ||||
| 	hawk_sed_t* sed /**< sed */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_pushecb() function register a runtime callback set. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_pushecb ( | ||||
| 	hawk_sed_t*     sed, /**< sed */ | ||||
| 	hawk_sed_ecb_t* ecb  /**< callback set */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_comp() function compiles editing commands into an internal form. | ||||
|  * @return 0 on success, -1 on error  | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_sed_comp ( | ||||
| 	hawk_sed_t*        sed, /**< stream editor */ | ||||
| 	hawk_sed_io_impl_t  inf  /**< script stream reader */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_exec() function executes the compiled commands. | ||||
|  * @return 0 on success, -1 on error | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_sed_exec ( | ||||
| 	hawk_sed_t*        sed,  /**< stream editor */ | ||||
| 	hawk_sed_io_impl_t  inf,  /**< stream reader */ | ||||
| 	hawk_sed_io_impl_t  outf  /**< stream writer */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_halt() function breaks running loop in hawk_sed_exec(). | ||||
|  * It doesn't affect blocking calls in stream handlers. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_halt ( | ||||
| 	hawk_sed_t* sed   /**< stream editor */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_ishalt() functions tests if hawk_sed_halt() is called. | ||||
|  */ | ||||
| HAWK_EXPORT int hawk_sed_ishalt ( | ||||
| 	hawk_sed_t* sed   /**< stream editor */ | ||||
| ); | ||||
| 	 | ||||
| /** | ||||
|  * The hawk_sed_getcompid() function returns the latest | ||||
|  * identifier successfully set with hawk_sed_setcompid().  | ||||
|  */ | ||||
| HAWK_EXPORT const hawk_ooch_t* hawk_sed_getcompid ( | ||||
| 	hawk_sed_t* sed | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_setcompid() functions duplicates a string | ||||
|  * pointed to by @a id and stores it internally to identify | ||||
|  * the script currently being compiled. The lid field of the  | ||||
|  * current command being compiled in the script is set to the  | ||||
|  * lastest identifer successfully set with this function. | ||||
|  * If this function fails, the location set in the command | ||||
|  * may be wrong. | ||||
|  */ | ||||
| HAWK_EXPORT const hawk_ooch_t* hawk_sed_setcompid ( | ||||
| 	hawk_sed_t*        sed, | ||||
| 	const hawk_ooch_t* id | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_getlinnum() function gets the current input line number. | ||||
|  * @return current input line number | ||||
|  */ | ||||
| HAWK_EXPORT hawk_oow_t hawk_sed_getlinenum ( | ||||
| 	hawk_sed_t* sed /**< stream editor */ | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_setlinenum() function changes the current input line number. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_setlinenum ( | ||||
| 	hawk_sed_t* sed,   /**< stream editor */ | ||||
| 	hawk_oow_t num    /**< a line number */ | ||||
| ); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_allocmem() function allocates a chunk of memory using | ||||
|  * the memory manager of \a sed. | ||||
|  */ | ||||
| HAWK_EXPORT void* hawk_sed_allocmem ( | ||||
| 	hawk_sed_t* sed, | ||||
| 	hawk_oow_t size | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_allocmem() function allocates a chunk of memory using | ||||
|  * the memory manager of \a sed and clears it to zeros. | ||||
|  */ | ||||
| HAWK_EXPORT void* hawk_sed_callocmem ( | ||||
| 	hawk_sed_t* sed, | ||||
| 	hawk_oow_t size | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_allocmem() function reallocates a chunk of memory using | ||||
|  * the memory manager of \a sed. | ||||
|  */ | ||||
| HAWK_EXPORT void* hawk_sed_reallocmem ( | ||||
| 	hawk_sed_t* sed, | ||||
| 	void*      ptr, | ||||
| 	hawk_oow_t size | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_allocmem() function frees a chunk of memory using | ||||
|  * the memory manager of \a sed. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_freemem ( | ||||
| 	hawk_sed_t* sed, | ||||
| 	void*      ptr | ||||
| ); | ||||
|  | ||||
| /** | ||||
|  * The hawk_sed_getspace() function gets the pointer and the length | ||||
|  * to a buffer space specfied by \a space. | ||||
|  */ | ||||
| HAWK_EXPORT void hawk_sed_getspace ( | ||||
| 	hawk_sed_t*      sed, | ||||
| 	hawk_sed_space_t space, | ||||
| 	hawk_oocs_t*     str | ||||
| ); | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
| @ -27,7 +27,7 @@ | ||||
| #ifndef _HAWK_UTL_H_ | ||||
| #define _HAWK_UTL_H_ | ||||
|  | ||||
| #include "hawk-cmn.h" | ||||
| #include <hawk-cmn.h> | ||||
| #include <stdarg.h> | ||||
|  | ||||
| #define HAWK_EPOCH_YEAR  (1970) | ||||
|  | ||||
| @ -82,7 +82,7 @@ hawk_t* hawk_open (hawk_mmgr_t* mmgr, hawk_oow_t xtnsize, hawk_cmgr_t* cmgr, con | ||||
| 	hawk_t* hawk; | ||||
|  | ||||
| 	hawk = (hawk_t*)HAWK_MMGR_ALLOC(mmgr, HAWK_SIZEOF(hawk_t) + xtnsize); | ||||
| 	if (hawk) | ||||
| 	if (HAWK_LIKELY(hawk)) | ||||
| 	{ | ||||
| 		int xret; | ||||
|  | ||||
|  | ||||
| @ -78,8 +78,8 @@ | ||||
|  * \sa hawk_rtx_t hawk_open hawk_close | ||||
|  */ | ||||
| #define HAWK_HDR \ | ||||
| 	hawk_oow_t  _instsize; \ | ||||
| 	hawk_gem_t  _gem; | ||||
| 	hawk_oow_t _instsize; \ | ||||
| 	hawk_gem_t _gem; | ||||
|  | ||||
| typedef struct hawk_alt_t hawk_alt_t; | ||||
| struct hawk_alt_t | ||||
|  | ||||
							
								
								
									
										237
									
								
								hawk/lib/sed-prv.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								hawk/lib/sed-prv.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,237 @@ | ||||
| /* | ||||
|  * $Id$ | ||||
|  * | ||||
|     Copyright (c) 2006-2020 Chung, Hyung-Hwan. All rights reserved. | ||||
|  | ||||
|     Redistribution and use in source and binary forms, with or without | ||||
|     modification, are permitted provided that the following conditions | ||||
|     are met: | ||||
|     1. Redistributions of source code must retain the above copyright | ||||
|        notice, this list of conditions and the following disclaimer. | ||||
|     2. Redistributions in binary form must reproduce the above copyright | ||||
|        notice, this list of conditions and the following disclaimer in the | ||||
|        documentation and/or other materials provided with the distribution. | ||||
|  | ||||
|     THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR | ||||
|     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||||
|     OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
|     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||||
|     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||||
|     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
|     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
|     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
|     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
|     THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| #ifndef _HAWK_SED_PRV_H_ | ||||
| #define _HAWK_SED_PRV_H_ | ||||
|  | ||||
| #include <hawk-sed.h> | ||||
| #include <hawk-ecs.h> | ||||
|  | ||||
| #define HAWK_MAP_IS_RBT | ||||
| #include <hawk-map.h> | ||||
|  | ||||
| /* structure to maintain data to append | ||||
|  * at the end of each cycle, triggered by r, R, and a */ | ||||
| typedef struct hawk_sed_app_t hawk_sed_app_t; | ||||
| struct hawk_sed_app_t | ||||
| { | ||||
| 	hawk_sed_cmd_t* cmd; | ||||
| 	hawk_sed_app_t* next; | ||||
| }; | ||||
|  | ||||
| typedef struct hawk_sed_cmd_blk_t hawk_sed_cmd_blk_t; | ||||
| struct hawk_sed_cmd_blk_t | ||||
| { | ||||
| 	hawk_oow_t         len;	 | ||||
| 	hawk_sed_cmd_t      buf[256]; | ||||
| 	hawk_sed_cmd_blk_t* next; | ||||
| }; | ||||
|  | ||||
| /* structure to maintain list of compiliation | ||||
|  * identifiers */ | ||||
| typedef struct hawk_sed_cid_t hawk_sed_cid_t; | ||||
| struct hawk_sed_cid_t | ||||
| { | ||||
| 	hawk_sed_cid_t* next;		 | ||||
| }; | ||||
|  | ||||
| /* special structure to represent an unknown cid | ||||
|  * used once the action of setting a new cid fails */ | ||||
| typedef struct hawk_sed_unknown_cid_t hawk_sed_unknown_cid_t; | ||||
| struct hawk_sed_unknown_cid_t | ||||
| { | ||||
| 	hawk_sed_cid_t* next; | ||||
| 	hawk_ooch_t buf[1]; | ||||
| }; | ||||
|  | ||||
| /**  | ||||
|  * The hawk_sed_t type defines a stream editor  | ||||
|  */ | ||||
| struct hawk_sed_t | ||||
| { | ||||
| 	HAWK_SED_HDR; | ||||
|  | ||||
| 	struct  | ||||
| 	{ | ||||
| 		int                   trait;	 | ||||
| 		hawk_sed_tracer_t     tracer; | ||||
| 		hawk_sed_lformatter_t lformatter; | ||||
|  | ||||
| 		struct | ||||
| 		{ | ||||
| 			struct | ||||
| 			{ | ||||
| 				hawk_oow_t build; | ||||
| 				hawk_oow_t match;  | ||||
| 			} rex; | ||||
| 		} depth; /* useful only for rex.h */ | ||||
| 	} opt; | ||||
|  | ||||
| 	hawk_sed_ecb_t* ecb; | ||||
|  | ||||
| 	/** source text pointers */ | ||||
| 	struct | ||||
| 	{ | ||||
| 		hawk_sed_io_impl_t fun; /**< input stream handler */ | ||||
| 		hawk_sed_io_arg_t  arg; | ||||
| 		hawk_ooch_t        buf[1024]; | ||||
| 		int                eof; | ||||
|  | ||||
| 		hawk_sed_cid_t*         cid; | ||||
| 		hawk_sed_unknown_cid_t  unknown_cid; | ||||
|  | ||||
| 		hawk_loc_t         loc; /**< location */ | ||||
| 		hawk_ooci_t        cc;  /**< last character read */ | ||||
| 		const hawk_ooch_t* ptr; /**< beginning of the source text */ | ||||
| 		const hawk_ooch_t* end; /**< end of the source text */ | ||||
| 		const hawk_ooch_t* cur; /**< current source text pointer */ | ||||
| 	} src; | ||||
|  | ||||
| 	/** temporary data for compiling */ | ||||
| 	struct | ||||
| 	{ | ||||
| 		hawk_ooecs_t rex; /**< regular expression buffer */ | ||||
| 		hawk_ooecs_t lab; /**< label name buffer */ | ||||
|  | ||||
| 		/** data structure to compile command groups */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			/** current level of command group nesting */ | ||||
| 			int level; | ||||
| 			/** keeps track of the begining of nested groups */ | ||||
| 			hawk_sed_cmd_t* cmd[128]; | ||||
| 		} grp; | ||||
|  | ||||
| 		/** a table storing labels seen */ | ||||
| 		hawk_map_t labs;  | ||||
| 	} tmp; | ||||
|  | ||||
| 	/** compiled commands */ | ||||
| 	struct | ||||
| 	{ | ||||
| 		hawk_sed_cmd_blk_t  fb; /**< the first block is static */ | ||||
| 		hawk_sed_cmd_blk_t* lb; /**< points to the last block */ | ||||
|  | ||||
| 		hawk_sed_cmd_t      quit;  | ||||
| 		hawk_sed_cmd_t      quit_quiet;  | ||||
| 		hawk_sed_cmd_t      again; | ||||
| 		hawk_sed_cmd_t      over; | ||||
| 	} cmd; | ||||
|  | ||||
| 	/** data for execution */ | ||||
| 	struct | ||||
| 	{ | ||||
| 		/** data needed for output streams and files */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_sed_io_impl_t fun; /**< an output handler */ | ||||
| 			hawk_sed_io_arg_t arg; /**< output handling data */ | ||||
|  | ||||
| 			hawk_ooch_t buf[2048]; | ||||
| 			hawk_oow_t len; | ||||
| 			int        eof; | ||||
|  | ||||
| 			/*****************************************************/ | ||||
| 			/* the following two fields are very tightly-coupled. | ||||
| 			 * don't make any partial changes */ | ||||
| 			hawk_map_t  files; | ||||
| 			hawk_sed_t* files_ext; | ||||
| 			/*****************************************************/ | ||||
| 		} out; | ||||
|  | ||||
| 		/** data needed for input streams */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_sed_io_impl_t fun; /**< input handler */ | ||||
| 			hawk_sed_io_arg_t arg; /**< input handling data */ | ||||
|  | ||||
| 			hawk_ooch_t xbuf[1]; /**< read-ahead buffer */ | ||||
| 			int xbuf_len; /**< data length in the buffer */ | ||||
|  | ||||
| 			hawk_ooch_t buf[2048]; /**< input buffer */ | ||||
| 			hawk_oow_t len; /**< data length in the buffer */ | ||||
| 			hawk_oow_t pos; /**< current position in the buffer */ | ||||
| 			int        eof; /**< EOF indicator */ | ||||
|  | ||||
| 			hawk_ooecs_t line; /**< pattern space */ | ||||
| 			hawk_oow_t num; /**< current line number */ | ||||
| 		} in; | ||||
|  | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_oow_t count; /* number of append entries in a static buffer. */ | ||||
| 			hawk_sed_app_t s[16]; /* handle up to 16 appends in a static buffer */ | ||||
| 			struct | ||||
| 			{ | ||||
| 				hawk_sed_app_t* head; | ||||
| 				hawk_sed_app_t* tail; | ||||
| 			} d; | ||||
| 		} append; | ||||
|  | ||||
| 		/** text buffers */ | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_ooecs_t hold; /* hold space */ | ||||
| 			hawk_ooecs_t scratch; | ||||
| 		} txt; | ||||
|  | ||||
| 		struct | ||||
| 		{ | ||||
| 			hawk_oow_t  nflds; /**< the number of fields */ | ||||
| 			hawk_oow_t  cflds; /**< capacity of flds field */ | ||||
| 			hawk_oocs_t  sflds[128]; /**< static field buffer */ | ||||
| 			hawk_oocs_t* flds; | ||||
| 			int delimited; | ||||
| 		} cutf; | ||||
|  | ||||
| 		/** indicates if a successful substitution has been made  | ||||
| 		 *  since the last read on the input stream. */ | ||||
| 		int subst_done; | ||||
| 		void* last_rex; | ||||
|  | ||||
| 		/** halt requested */ | ||||
| 		int haltreq; | ||||
| 	} e; | ||||
| }; | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| int hawk_sed_init ( | ||||
| 	hawk_sed_t* sed,  | ||||
| 	hawk_mmgr_t* mmgr | ||||
| ); | ||||
|  | ||||
| void hawk_sed_fini ( | ||||
| 	hawk_sed_t* sed | ||||
| ); | ||||
|  | ||||
| #if defined(__cplusplus) | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
							
								
								
									
										3960
									
								
								hawk/lib/sed.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3960
									
								
								hawk/lib/sed.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user