From 5d0598466447ae3783440893a77b9dbc4baaf923 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sat, 9 Jan 2021 16:53:35 +0000 Subject: [PATCH] changing code to improve the compiler --- lib/Makefile.am | 3 +- lib/Makefile.in | 50 +++++++++----- lib/cnode.c | 47 ++++++++++++- lib/hcl-prv.h | 28 ++++++++ lib/read.c | 180 ++++++++++++++++++++++++------------------------ mod/Makefile.am | 2 +- mod/Makefile.in | 2 +- 7 files changed, 196 insertions(+), 116 deletions(-) diff --git a/lib/Makefile.am b/lib/Makefile.am index 202484b..063c762 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -64,6 +64,7 @@ libhcl_la_SOURCES = \ hcl-utl.h \ hcl-prv.h \ bigint.c \ + cnode.c \ comp.c \ debug.c \ decode.c \ @@ -82,7 +83,7 @@ libhcl_la_SOURCES = \ prim.c \ print.c \ rbt.c \ - read.c \ + read2.c \ sym.c \ utf8.c \ utl.c \ diff --git a/lib/Makefile.in b/lib/Makefile.in index 2e6dc16..c09b7b8 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -150,14 +150,14 @@ am__DEPENDENCIES_1 = am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) libhcl_la_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__append_6) -am_libhcl_la_OBJECTS = libhcl_la-bigint.lo libhcl_la-comp.lo \ - libhcl_la-debug.lo libhcl_la-decode.lo libhcl_la-dic.lo \ - libhcl_la-err.lo libhcl_la-exec.lo libhcl_la-fmt.lo \ - libhcl_la-gc.lo libhcl_la-hcl.lo libhcl_la-heap.lo \ - libhcl_la-number.lo libhcl_la-obj.lo libhcl_la-opt.lo \ - libhcl_la-prim.lo libhcl_la-print.lo libhcl_la-rbt.lo \ - libhcl_la-read.lo libhcl_la-sym.lo libhcl_la-utf8.lo \ - libhcl_la-utl.lo libhcl_la-xma.lo +am_libhcl_la_OBJECTS = libhcl_la-bigint.lo libhcl_la-cnode.lo \ + libhcl_la-comp.lo libhcl_la-debug.lo libhcl_la-decode.lo \ + libhcl_la-dic.lo libhcl_la-err.lo libhcl_la-exec.lo \ + libhcl_la-fmt.lo libhcl_la-gc.lo libhcl_la-hcl.lo \ + libhcl_la-heap.lo libhcl_la-number.lo libhcl_la-obj.lo \ + libhcl_la-opt.lo libhcl_la-prim.lo libhcl_la-print.lo \ + libhcl_la-rbt.lo libhcl_la-read2.lo libhcl_la-sym.lo \ + libhcl_la-utf8.lo libhcl_la-utl.lo libhcl_la-xma.lo libhcl_la_OBJECTS = $(am_libhcl_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -196,7 +196,8 @@ DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libhcl_la-bigint.Plo \ - ./$(DEPDIR)/libhcl_la-comp.Plo ./$(DEPDIR)/libhcl_la-debug.Plo \ + ./$(DEPDIR)/libhcl_la-cnode.Plo ./$(DEPDIR)/libhcl_la-comp.Plo \ + ./$(DEPDIR)/libhcl_la-debug.Plo \ ./$(DEPDIR)/libhcl_la-decode.Plo ./$(DEPDIR)/libhcl_la-dic.Plo \ ./$(DEPDIR)/libhcl_la-err.Plo ./$(DEPDIR)/libhcl_la-exec.Plo \ ./$(DEPDIR)/libhcl_la-fmt.Plo ./$(DEPDIR)/libhcl_la-gc.Plo \ @@ -204,7 +205,7 @@ am__depfiles_remade = ./$(DEPDIR)/libhcl_la-bigint.Plo \ ./$(DEPDIR)/libhcl_la-number.Plo ./$(DEPDIR)/libhcl_la-obj.Plo \ ./$(DEPDIR)/libhcl_la-opt.Plo ./$(DEPDIR)/libhcl_la-prim.Plo \ ./$(DEPDIR)/libhcl_la-print.Plo ./$(DEPDIR)/libhcl_la-rbt.Plo \ - ./$(DEPDIR)/libhcl_la-read.Plo ./$(DEPDIR)/libhcl_la-sym.Plo \ + ./$(DEPDIR)/libhcl_la-read2.Plo ./$(DEPDIR)/libhcl_la-sym.Plo \ ./$(DEPDIR)/libhcl_la-utf8.Plo ./$(DEPDIR)/libhcl_la-utl.Plo \ ./$(DEPDIR)/libhcl_la-xma.Plo \ ./$(DEPDIR)/libhclx_la-cb-impl.Plo \ @@ -436,6 +437,7 @@ libhcl_la_SOURCES = \ hcl-utl.h \ hcl-prv.h \ bigint.c \ + cnode.c \ comp.c \ debug.c \ decode.c \ @@ -454,7 +456,7 @@ libhcl_la_SOURCES = \ prim.c \ print.c \ rbt.c \ - read.c \ + read2.c \ sym.c \ utf8.c \ utl.c \ @@ -572,6 +574,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-bigint.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-cnode.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-comp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-debug.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-decode.Plo@am__quote@ # am--include-marker @@ -588,7 +591,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-prim.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-print.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-rbt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-read.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-read2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-sym.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utf8.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utl.Plo@am__quote@ # am--include-marker @@ -637,6 +640,13 @@ libhcl_la-bigint.lo: bigint.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c +libhcl_la-cnode.lo: cnode.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-cnode.lo -MD -MP -MF $(DEPDIR)/libhcl_la-cnode.Tpo -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-cnode.Tpo $(DEPDIR)/libhcl_la-cnode.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cnode.c' object='libhcl_la-cnode.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c + libhcl_la-comp.lo: comp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-comp.lo -MD -MP -MF $(DEPDIR)/libhcl_la-comp.Tpo -c -o libhcl_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-comp.Tpo $(DEPDIR)/libhcl_la-comp.Plo @@ -749,12 +759,12 @@ libhcl_la-rbt.lo: rbt.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c -libhcl_la-read.lo: read.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-read.lo -MD -MP -MF $(DEPDIR)/libhcl_la-read.Tpo -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-read.Tpo $(DEPDIR)/libhcl_la-read.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read.c' object='libhcl_la-read.lo' libtool=yes @AMDEPBACKSLASH@ +libhcl_la-read2.lo: read2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-read2.lo -MD -MP -MF $(DEPDIR)/libhcl_la-read2.Tpo -c -o libhcl_la-read2.lo `test -f 'read2.c' || echo '$(srcdir)/'`read2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-read2.Tpo $(DEPDIR)/libhcl_la-read2.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read2.c' object='libhcl_la-read2.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-read2.lo `test -f 'read2.c' || echo '$(srcdir)/'`read2.c libhcl_la-sym.lo: sym.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-sym.lo -MD -MP -MF $(DEPDIR)/libhcl_la-sym.Tpo -c -o libhcl_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c @@ -982,6 +992,7 @@ clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ distclean: distclean-am -rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo + -rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo -rm -f ./$(DEPDIR)/libhcl_la-comp.Plo -rm -f ./$(DEPDIR)/libhcl_la-debug.Plo -rm -f ./$(DEPDIR)/libhcl_la-decode.Plo @@ -998,7 +1009,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libhcl_la-prim.Plo -rm -f ./$(DEPDIR)/libhcl_la-print.Plo -rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-read.Plo + -rm -f ./$(DEPDIR)/libhcl_la-read2.Plo -rm -f ./$(DEPDIR)/libhcl_la-sym.Plo -rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo -rm -f ./$(DEPDIR)/libhcl_la-utl.Plo @@ -1056,6 +1067,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo + -rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo -rm -f ./$(DEPDIR)/libhcl_la-comp.Plo -rm -f ./$(DEPDIR)/libhcl_la-debug.Plo -rm -f ./$(DEPDIR)/libhcl_la-decode.Plo @@ -1072,7 +1084,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libhcl_la-prim.Plo -rm -f ./$(DEPDIR)/libhcl_la-print.Plo -rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo - -rm -f ./$(DEPDIR)/libhcl_la-read.Plo + -rm -f ./$(DEPDIR)/libhcl_la-read2.Plo -rm -f ./$(DEPDIR)/libhcl_la-sym.Plo -rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo -rm -f ./$(DEPDIR)/libhcl_la-utl.Plo diff --git a/lib/cnode.c b/lib/cnode.c index eadfb80..581c5bf 100644 --- a/lib/cnode.c +++ b/lib/cnode.c @@ -24,6 +24,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "hcl-prv.h" + static hcl_cnode_t* make_cnode (hcl_t* hcl, hcl_cnode_type_t type, const hcl_ioloc_t* loc, hcl_oow_t extra_space) { hcl_cnode_t* cnode; @@ -59,20 +61,59 @@ hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl return c; } + + +hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len) +{ + hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_NUMLIT, loc, HCL_SIZEOF(*ptr) * (len + 1)); + if (HCL_UNLIKELY(!c)) return HCL_NULL; + + c->u.numlit.ptr = (hcl_ooch_t*)(c + 1); + c->u.numlit.len = len; + hcl_copy_oochars (c->u.numlit.ptr, ptr, len); + c->u.numlit.ptr[len] = '\0'; + return c; +} + +hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len) +{ + hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_RADNUMLIT, loc, HCL_SIZEOF(*ptr) * (len + 1)); + if (HCL_UNLIKELY(!c)) return HCL_NULL; + + c->u.radnumlit.ptr = (hcl_ooch_t*)(c + 1); + c->u.radnumlit.len = len; + hcl_copy_oochars (c->u.radnumlit.ptr, ptr, len); + c->u.radnumlit.ptr[len] = '\0'; + return c; +} + +hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len) +{ + hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_FPDECLIT, loc, HCL_SIZEOF(*ptr) * (len + 1)); + if (HCL_UNLIKELY(!c)) return HCL_NULL; + + c->u.fpdeclit.ptr = (hcl_ooch_t*)(c + 1); + c->u.fpdeclit.len = len; + hcl_copy_oochars (c->u.fpdeclit.ptr, ptr, len); + c->u.fpdeclit.ptr[len] = '\0'; + return c; +} + hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len) { hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_STRLIT, loc, HCL_SIZEOF(*ptr) * (len + 1)); if (HCL_UNLIKELY(!c)) return HCL_NULL; - c->u.strlit.ptr = (hawk_ooch_t*)(c + 1); + c->u.strlit.ptr = (hcl_ooch_t*)(c + 1); c->u.strlit.len = len; - hawk_copy_bchars (c->u.strlit.ptr, c->u.strlit.len, ptr, len); + hcl_copy_oochars (c->u.strlit.ptr, ptr, len); + c->u.strlit.ptr[len] = '\0'; return c; } hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, const hcl_ioloc_t* loc, hcl_ooi_t v) { - hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_ERRLIT, loc, HCL_SIZEOF(*ptr) * (len + 1)); + hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_ERRLIT, loc, 0); if (HCL_UNLIKELY(!c)) return HCL_NULL; c->u.errlit.v = v; diff --git a/lib/hcl-prv.h b/lib/hcl-prv.h index ce06fb6..96b0416 100644 --- a/lib/hcl-prv.h +++ b/lib/hcl-prv.h @@ -235,6 +235,21 @@ struct hcl_cnode_t hcl_oow_t len; } strlit; struct + { + hcl_ooch_t* ptr; + hcl_oow_t len; + } numlit; + struct + { + hcl_ooch_t* ptr; + hcl_oow_t len; + } radnumlit; + struct + { + hcl_ooch_t* ptr; + hcl_oow_t len; + } fpdeclit; + struct { hcl_ooi_t v; } errlit; @@ -1210,6 +1225,19 @@ int hcl_emitbyteinstruction ( hcl_oob_t bc ); +/* ========================================================================= */ +/* cnode.c */ +/* ========================================================================= */ +hcl_cnode_t* hcl_makecnodenil (hcl_t* hcl, const hcl_ioloc_t* loc); +hcl_cnode_t* hcl_makecnodetrue (hcl_t* hcl, const hcl_ioloc_t* loc); +hcl_cnode_t* hcl_makecnodefalse (hcl_t* hcl, const hcl_ioloc_t* loc); +hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t ch); +hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len); +hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len); +hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len); +hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len); +hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, const hcl_ioloc_t* loc, hcl_ooi_t v); + #if defined(__cplusplus) } #endif diff --git a/lib/read.c b/lib/read.c index e5bd6bb..6d09945 100644 --- a/lib/read.c +++ b/lib/read.c @@ -26,11 +26,9 @@ #include "hcl-prv.h" - static int begin_include (hcl_t* hcl); static int end_include (hcl_t* hcl); - #define BUFFER_ALIGN 128 #define BALIT_BUFFER_ALIGN 128 #define SALIT_BUFFER_ALIGN 128 @@ -45,7 +43,7 @@ static struct voca_t { hcl_oow_t len; hcl_ooch_t str[11]; -} vocas[] = +} vocas[] = { { 8, { '#','i','n','c','l','u','d','e' } }, { 11, { '#','\\','b','a','c','k','s','p','a','c','e' } }, @@ -122,13 +120,13 @@ static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, hcl_ooi_t* n { HCL_ASSERT (hcl, ptr < end); - if (*ptr != '#') + if (*ptr != '#') { hcl_seterrbfmt (hcl, HCL_EINVAL, "radixed number not starting with # - %*.js", str->len, str->ptr); return -1; } ptr++; /* skip '#' */ - + if (*ptr == 'x') base = 16; else if (*ptr == 'o') base = 8; else if (*ptr == 'b') base = 2; @@ -147,7 +145,7 @@ static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, hcl_ooi_t* n while (ptr < end && (v = CHAR_TO_NUM(*ptr, base)) < base) { value = value * base + v; - if (value < old_value) + if (value < old_value) { /* overflow must have occurred */ hcl_seterrbfmt (hcl, HCL_ERANGE, "number too big - %.*js", str->len, str->ptr); @@ -214,13 +212,13 @@ static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, int radixed) { HCL_ASSERT (hcl, ptr < end); - if (*ptr != '#') + if (*ptr != '#') { hcl_seterrbfmt(hcl, HCL_EINVAL, "radixed number not starting with # - %.*js", str->len, str->ptr); return HCL_NULL; } ptr++; /* skip '#' */ - + if (*ptr == 'x') base = 16; else if (*ptr == 'o') base = 8; else if (*ptr == 'b') base = 2; @@ -438,12 +436,12 @@ static int get_char (hcl_t* hcl) return 0; } - if (hcl->c->curinp->b.state == -1) + if (hcl->c->curinp->b.state == -1) { hcl->c->curinp->b.state = 0; return -1; } - else if (hcl->c->curinp->b.state == 1) + else if (hcl->c->curinp->b.state == 1) { hcl->c->curinp->b.state = 0; goto return_eof; @@ -463,7 +461,7 @@ static int get_char (hcl_t* hcl) hcl->c->lxc = hcl->c->curinp->lxc; /* indicate that EOF has been read. lxc.c is also set to EOF. */ - return 0; + return 0; } hcl->c->curinp->b.pos = 0; @@ -476,9 +474,9 @@ static int get_char (hcl_t* hcl) * to be read is still in the buffer (hcl->c->curinp->buf). * hcl->cu->curinp->colm has been incremented when the previous * character has been read. */ - if (hcl->c->curinp->line > 1 && hcl->c->curinp->colm == 2 && hcl->c->curinp->nl != hcl->c->curinp->lxc.c) + if (hcl->c->curinp->line > 1 && hcl->c->curinp->colm == 2 && hcl->c->curinp->nl != hcl->c->curinp->lxc.c) { - /* most likely, it's the second character in '\r\n' or '\n\r' + /* most likely, it's the second character in '\r\n' or '\n\r' * sequence. let's not update the line and column number. */ /*hcl->c->curinp->colm = 1;*/ } @@ -516,13 +514,13 @@ static int skip_comment (hcl_t* hcl) /* attempt to handle #! or ## */ - lc = hcl->c->lxc; /* save the last character */ + lc = hcl->c->lxc; /* save the last character */ GET_CHAR_TO (hcl, c); /* read a following character */ - if (c == '!' || c == '#') + if (c == '!' || c == '#') { single_line_comment: - do + do { GET_CHAR_TO (hcl, c); if (c == HCL_OOCI_EOF) @@ -534,7 +532,7 @@ static int skip_comment (hcl_t* hcl) GET_CHAR (hcl); /* keep the first meaningful character in lxc */ break; } - } + } while (1); return 1; /* single line comment led by ## or #! or ; */ @@ -574,9 +572,9 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int /* more octal digits */ c_acc = c_acc * 8 + c - '0'; digit_count++; - if (digit_count >= escaped) + if (digit_count >= escaped) { - /* should i limit the max to 0xFF/0377? + /* should i limit the max to 0xFF/0377? * if (c_acc > 0377) c_acc = 0377;*/ ADD_TOKEN_CHAR (hcl, c_acc); escaped = 0; @@ -595,7 +593,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int { c_acc = c_acc * 16 + c - '0'; digit_count++; - if (digit_count >= escaped) + if (digit_count >= escaped) { ADD_TOKEN_CHAR (hcl, c_acc); escaped = 0; @@ -606,7 +604,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int { c_acc = c_acc * 16 + c - 'A' + 10; digit_count++; - if (digit_count >= escaped) + if (digit_count >= escaped) { ADD_TOKEN_CHAR (hcl, c_acc); escaped = 0; @@ -617,7 +615,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int { c_acc = c_acc * 16 + c - 'a' + 10; digit_count++; - if (digit_count >= escaped) + if (digit_count >= escaped) { ADD_TOKEN_CHAR (hcl, c_acc); escaped = 0; @@ -630,7 +628,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int rc = (escaped == 2)? 'x': (escaped == 4)? 'u': 'U'; - if (digit_count == 0) + if (digit_count == 0) ADD_TOKEN_CHAR (hcl, rc); else ADD_TOKEN_CHAR (hcl, c_acc); @@ -660,7 +658,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int else if (c == 'r') c = '\r'; else if (c == 't') c = '\t'; else if (c == 'v') c = '\v'; - else if (c >= '0' && c <= '7' && !regex) + else if (c >= '0' && c <= '7' && !regex) { /* i don't support the octal notation for a regular expression. * it conflicts with the backreference notation between \1 and \7 inclusive. */ @@ -669,7 +667,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int c_acc = c - '0'; continue; } - else if (c == 'x') + else if (c == 'x') { escaped = 2; digit_count = 0; @@ -686,7 +684,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int } #endif #if (HCL_SIZEOF_OOCH_T >= 4) - else if (c == 'U') + else if (c == 'U') { escaped = 8; digit_count = 0; @@ -694,12 +692,12 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int continue; } #endif - else if (regex) + else if (regex) { /* if the following character doesn't compose a proper - * escape sequence, keep the escape character. - * an unhandled escape sequence can be handled - * outside this function since the escape character + * escape sequence, keep the escape character. + * an unhandled escape sequence can be handled + * outside this function since the escape character * is preserved.*/ ADD_TOKEN_CHAR (hcl, esc_char); } @@ -724,7 +722,7 @@ static int get_radix_number (hcl_t* hcl, hcl_ooci_t rc, int radix) if (CHAR_TO_NUM(c, radix) >= radix) { - hcl_setsynerrbfmt (hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), + hcl_setsynerrbfmt (hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "no digit after radix specifier in %.*js", hcl->c->tok.name.len, hcl->c->tok.name.ptr); return -1; } @@ -767,7 +765,7 @@ static int get_sharp_token (hcl_t* hcl) /* * #bBBBB binary - * #oOOOO octal + * #oOOOO octal * #xXXXX hexadecimal * #eDDD error * #pHHH smptr @@ -824,7 +822,7 @@ static int get_sharp_token (hcl_t* hcl) { ADD_TOKEN_CHAR (hcl, c); GET_CHAR_TO (hcl, c); - } + } while (!is_delimiter(c)); if (TOKEN_NAME_LEN(hcl) >= 4) @@ -855,7 +853,7 @@ static int get_sharp_token (hcl_t* hcl) c = c * 16 + CHAR_TO_NUM(hcl->c->tok.name.ptr[i], 16); /* don't care if it is for 'p' */ } - + } #if (HCL_SIZEOF_OOCH_T >= 2) else if (TOKEN_NAME_CHAR(hcl, 2) == 'u') @@ -948,7 +946,7 @@ static int get_sharp_token (hcl_t* hcl) break; default: - if (is_delimiter(c)) + if (is_delimiter(c)) { /* EOF, whitespace, etc */ hcl_setsynerrbfmt (hcl, HCL_SYNERR_HASHLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl), @@ -962,7 +960,7 @@ static int get_sharp_token (hcl_t* hcl) { ADD_TOKEN_CHAR (hcl, c); GET_CHAR_TO (hcl, c); - } + } while (!is_delimiter(c)); if (does_token_name_match (hcl, VOCA_INCLUDE)) @@ -986,7 +984,7 @@ static int get_sharp_token (hcl_t* hcl) static hcl_iotok_type_t classify_ident_token (hcl_t* hcl, const hcl_oocs_t* v) { hcl_oow_t i; - struct + struct { hcl_oow_t len; hcl_ooch_t name[10]; @@ -1014,13 +1012,13 @@ static int get_token (hcl_t* hcl) retry: GET_CHAR (hcl); - do + do { /* skip spaces */ while (is_spacechar(hcl->c->lxc.c)) GET_CHAR (hcl); /* the first character after the last space is in hcl->c->lxc */ if ((n = skip_comment(hcl)) <= -1) return -1; - } + } while (n >= 1); /* clear the token name, reset its location */ @@ -1075,7 +1073,7 @@ retry: SET_TOKEN_TYPE (hcl, HCL_IOTOK_RBRACE); break; - case '|': + case '|': ADD_TOKEN_CHAR (hcl, c); SET_TOKEN_TYPE (hcl, HCL_IOTOK_VBAR); break; @@ -1109,7 +1107,7 @@ retry: SET_TOKEN_TYPE (hcl, HCL_IOTOK_CHARLIT); break; - case '#': + case '#': if (get_sharp_token(hcl) <= -1) return -1; break; @@ -1117,7 +1115,7 @@ retry: case '-': oldc = c; GET_CHAR_TO (hcl, c); - if(is_digitchar(c)) + if(is_digitchar(c)) { unget_char (hcl, &hcl->c->lxc); c = oldc; @@ -1153,7 +1151,7 @@ retry: goto ident; } } - else + else { unget_char (hcl, &hcl->c->lxc); c = oldc; @@ -1211,7 +1209,7 @@ retry: hcl_iotok_type_t type; type = classify_ident_token(hcl, TOKEN_NAME(hcl)); - if (type != HCL_IOTOK_IDENT) + if (type != HCL_IOTOK_IDENT) { SET_TOKEN_TYPE (hcl, type); unget_char (hcl, &hcl->c->lxc); @@ -1240,7 +1238,7 @@ retry: seg.ptr = &TOKEN_NAME_CHAR(hcl,start); seg.len = TOKEN_NAME_LEN(hcl) - start; - if (classify_ident_token(hcl, &seg) != HCL_IOTOK_IDENT) + if (classify_ident_token(hcl, &seg) != HCL_IOTOK_IDENT) { hcl_setsynerr (hcl, HCL_SYNERR_MSEGIDENT, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); return -1; @@ -1334,7 +1332,7 @@ static int begin_include (hcl_t* hcl) /*arg->nl = '\0';*/ arg->includer = hcl->c->curinp; - if (hcl->c->reader(hcl, HCL_IO_OPEN, arg) <= -1) + if (hcl->c->reader(hcl, HCL_IO_OPEN, arg) <= -1) { hcl_setsynerrbfmt (hcl, HCL_SYNERR_INCLUDE, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "unable to include %js", io_name); goto oops; @@ -1354,13 +1352,13 @@ static int begin_include (hcl_t* hcl) hcl->c->curinp = arg; /* hcl->c->depth.incl++; */ - /* read in the first character in the included file. + /* read in the first character in the included file. * so the next call to get_token() sees the character read * from this file. */ - if (get_token(hcl) <= -1) + if (get_token(hcl) <= -1) { - end_include (hcl); - /* i don't jump to oops since i've called + end_include (hcl); + /* i don't jump to oops since i've called * end_include() which frees hcl->c->curinp/arg */ return -1; } @@ -1386,8 +1384,8 @@ static int end_include (hcl_t* hcl) /* if closing has failed, still destroy the * sio structure first as normal and return - * the failure below. this way, the caller - * does not call HCL_IO_CLOSE on + * the failure below. this way, the caller + * does not call HCL_IO_CLOSE on * hcl->c->curinp again. */ cur = hcl->c->curinp; @@ -1415,16 +1413,16 @@ static HCL_INLINE hcl_oop_t enter_list (hcl_t* hcl, int flagv) /* upon entering a list, it pushes a frame of 4 slots. * rsa[0] stores the first element in the list. * rsa[1] stores the last element in the list. - * both are updated in chain_to_list() as items are added. + * both are updated in chain_to_list() as items are added. * rsa[2] stores the flag value. - * rsa[3] stores the pointer to the previous top frame. + * rsa[3] stores the pointer to the previous top frame. * rsa[4] stores the number of elements in the list */ rsa = (hcl_oop_oop_t)hcl_makearray(hcl, 5, 0); if (!rsa) return HCL_NULL; rsa->slot[2] = HCL_SMOOI_TO_OOP(flagv); rsa->slot[3] = hcl->c->r.s; /* push */ - hcl->c->r.s = (hcl_oop_t)rsa; + hcl->c->r.s = (hcl_oop_t)rsa; rsa->slot[4] = HCL_SMOOI_TO_OOP(0); @@ -1500,8 +1498,8 @@ done: *oldflagv = fv; if (HCL_IS_NIL(hcl,hcl->c->r.s)) { - /* the stack is empty after popping. - * it is back to the top level. + /* the stack is empty after popping. + * it is back to the top level. * the top level can never be quoted. */ *flagv = 0; } @@ -1523,13 +1521,13 @@ done: case HCL_CONCODE_ARRAY: return (hcl_oop_t)hcl_makearray(hcl, 0, 0); case HCL_CONCODE_BYTEARRAY: - return (hcl_oop_t)hcl_makebytearray(hcl, HCL_NULL, 0); + return (hcl_oop_t)hcl_makebytearray(hcl, HCL_NULL, 0); case HCL_CONCODE_DIC: return (hcl_oop_t)hcl_makedic(hcl, 100); /* TODO: default dictionary size for empty definition? */ /* NOTE: empty xlist will get translated to #nil. * this is useful when used in the lambda expression to express an empty argument. also in defun. - * (lambda () ...) is equivalent to (lambda #nil ...) + * (lambda () ...) is equivalent to (lambda #nil ...) * (defun x() ...) */ } } @@ -1582,7 +1580,7 @@ static HCL_INLINE int can_comma_list (hcl_t* hcl) { if (count & 1) return 0; } - else if (LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_ARRAY && + else if (LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_ARRAY && LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_BYTEARRAY) { return 0; @@ -1650,11 +1648,11 @@ static hcl_oop_t chain_to_list (hcl_t* hcl, hcl_oop_t obj) if (flagv & CLOSED) { - /* the list has already been closed and cannot add more items + /* the list has already been closed and cannot add more items * for instance, see this faulty expression [1 2 . 3 4 ]. * you can have only 1 item after the period. this condition * can only be triggered by a wrong qlist where a period is - * allowed. so i can safely hard-code the error code to + * allowed. so i can safely hard-code the error code to * HCL_SYNERR_RBRACK. */ hcl_setsynerr (hcl, HCL_SYNERR_RBRACK, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); return HCL_NULL; @@ -1686,7 +1684,7 @@ static hcl_oop_t chain_to_list (hcl_t* hcl, hcl_oop_t obj) if ((flagv & JSON) && count > 0 && !(flagv & (COMMAED | COLONED))) { - /* there is no separator between array/dictionary elements + /* there is no separator between array/dictionary elements * for instance, [1 2] { 10 20 } */ hcl_setsynerr (hcl, HCL_SYNERR_NOSEP, TOKEN_LOC(hcl), HCL_NULL); return HCL_NULL; @@ -1760,7 +1758,7 @@ static int get_symbol_array_literal (hcl_t* hcl, hcl_oop_t* xlit) hcl_oow_t i; /* if the program is not buggy, salit.size must be 0 here. */ - HCL_ASSERT (hcl, hcl->c->r.salit.size == 0); + HCL_ASSERT (hcl, hcl->c->r.salit.size == 0); hcl->c->r.salit.size = 0; /* i want to set it to 0 in case it's buggy */ HCL_ASSERT (hcl, TOKEN_TYPE(hcl) == HCL_IOTOK_VBAR); @@ -1812,13 +1810,13 @@ static int read_object (hcl_t* hcl) /* this function read an s-expression non-recursively * by manipulating its own stack. */ - int level = 0, array_level = 0, flagv = 0; + int level = 0, array_level = 0, flagv = 0; hcl_oop_t obj; while (1) { redo: - switch (TOKEN_TYPE(hcl)) + switch (TOKEN_TYPE(hcl)) { default: hcl_setsynerr (hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); @@ -1876,7 +1874,7 @@ static int read_object (hcl_t* hcl) return -1; } - /* push some data to simulate recursion into + /* push some data to simulate recursion into * a list literal or an array literal */ if (enter_list(hcl, flagv) == HCL_NULL) return -1; level++; @@ -1891,9 +1889,9 @@ static int read_object (hcl_t* hcl) { /* cannot have a period: * 1. at the top level - not inside () - * 2. at the beginning of a list + * 2. at the beginning of a list * 3. inside an #(), #[], #{}, () */ - hcl_setsynerr (hcl, HCL_SYNERR_DOTBANNED, TOKEN_LOC(hcl), HCL_NULL); + hcl_setsynerr (hcl, HCL_SYNERR_DOTBANNED, TOKEN_LOC(hcl), HCL_NULL); return -1; } @@ -1903,7 +1901,7 @@ static int read_object (hcl_t* hcl) case HCL_IOTOK_COLON: if (level <= 0 || !can_colon_list(hcl)) { - hcl_setsynerr (hcl, HCL_SYNERR_COLONBANNED, TOKEN_LOC(hcl), HCL_NULL); + hcl_setsynerr (hcl, HCL_SYNERR_COLONBANNED, TOKEN_LOC(hcl), HCL_NULL); return -1; } @@ -1913,7 +1911,7 @@ static int read_object (hcl_t* hcl) case HCL_IOTOK_COMMA: if (level <= 0 || !can_comma_list(hcl)) { - hcl_setsynerr (hcl, HCL_SYNERR_COMMABANNED, TOKEN_LOC(hcl), HCL_NULL); + hcl_setsynerr (hcl, HCL_SYNERR_COMMABANNED, TOKEN_LOC(hcl), HCL_NULL); return -1; } @@ -1924,7 +1922,7 @@ static int read_object (hcl_t* hcl) case HCL_IOTOK_RBRACK: /* bytearray #[], array[] */ case HCL_IOTOK_RBRACE: /* dictionary {} */ { - static struct + static struct { int closer; hcl_synerrnum_t synerr; @@ -1942,7 +1940,7 @@ static int read_object (hcl_t* hcl) if (level <= 0) { - hcl_setsynerr (hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL); + hcl_setsynerr (hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL); return -1; } @@ -1957,21 +1955,21 @@ static int read_object (hcl_t* hcl) #if 0 if ((flagv & QUOTED) || level <= 0) { - /* the right parenthesis can never appear while - * 'quoted' is true. 'quoted' is set to false when - * entering a normal list. 'quoted' is set to true + /* the right parenthesis can never appear while + * 'quoted' is true. 'quoted' is set to false when + * entering a normal list. 'quoted' is set to true * when entering a quoted list. a quoted list does * not have an explicit right parenthesis. - * so the right parenthesis can only pair up with + * so the right parenthesis can only pair up with * the left parenthesis for the normal list. * * For example, '(1 2 3 ') 5 6) * - * this condition is triggerred when the first ) is + * this condition is triggerred when the first ) is * met after the second quote. * - * also it is illegal to have the right parenthesis - * with no opening(left) parenthesis, which is + * also it is illegal to have the right parenthesis + * with no opening(left) parenthesis, which is * indicated by level<=0. */ hcl_setsynerr (hcl, HCL_SYNERR_LPAREN, TOKEN_LOC(hcl), TOKEN_NAME(hcl)); @@ -2083,14 +2081,14 @@ static int read_object (hcl_t* hcl) obj = hcl_makesymbol(hcl, TOKEN_NAME_PTR(hcl), TOKEN_NAME_LEN(hcl)); if (obj && !hcl_getatsysdic(hcl, obj)) { - /* query the module for information if it is the first time + /* query the module for information if it is the first time * when the dotted symbol is seen */ hcl_pfbase_t* pfbase; hcl_mod_t* mod; hcl_oop_t val; unsigned int kernel_bits; - + pfbase = hcl_querymod(hcl, TOKEN_NAME_PTR(hcl), TOKEN_NAME_LEN(hcl), &mod); if (!pfbase) { @@ -2151,7 +2149,7 @@ static int read_object (hcl_t* hcl) /* if so, append the element read into the quote list */ if (chain_to_list(hcl, obj) == HCL_NULL) return -1; - /* exit out of the quoted list. the quoted list can have + /* exit out of the quoted list. the quoted list can have * one element only. */ obj = leave_list(hcl, &flagv, &oldflagv); @@ -2178,7 +2176,7 @@ static int read_object (hcl_t* hcl) HCL_ASSERT (hcl, level == 0); HCL_ASSERT (hcl, array_level == 0); - hcl->c->r.e = obj; + hcl->c->r.e = obj; return 0; } @@ -2195,7 +2193,7 @@ static HCL_INLINE int __read (hcl_t* hcl) hcl_oop_t hcl_read (hcl_t* hcl) { - HCL_ASSERT (hcl, hcl->c && hcl->c->reader); + HCL_ASSERT (hcl, hcl->c && hcl->c->reader); if (__read(hcl) <= -1) return HCL_NULL; return hcl->c->r.e; } @@ -2306,7 +2304,7 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer) if (!cbp) return -1; hcl->c = (hcl_compiler_t*)hcl_callocmem(hcl, HCL_SIZEOF(*hcl->c)); - if (!hcl->c) + if (!hcl->c) { hcl_deregcb (hcl, cbp); return -1; @@ -2338,7 +2336,7 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer) hcl->c->reader = reader; hcl->c->nungots = 0; - /* The name field and the includer field are HCL_NULL + /* The name field and the includer field are HCL_NULL * for the main stream */ HCL_MEMSET (&hcl->c->inarg, 0, HCL_SIZEOF(hcl->c->inarg)); hcl->c->inarg.line = 1; @@ -2350,18 +2348,18 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer) HCL_MEMSET (&hcl->c->outarg, 0, HCL_SIZEOF(hcl->c->outarg)); n = hcl->c->printer(hcl, HCL_IO_OPEN, &hcl->c->outarg); - if (n <= -1) + if (n <= -1) { hcl->c->reader (hcl, HCL_IO_CLOSE, &hcl->c->inarg); goto oops; } - + /* the stream is open. set it as the current input stream */ hcl->c->curinp = &hcl->c->inarg; return 0; oops: - if (cbp) + if (cbp) { hcl_deregcb (hcl, cbp); hcl_freemem (hcl, hcl->c); @@ -2386,7 +2384,7 @@ void hcl_flushio (hcl_t* hcl) void hcl_detachio (hcl_t* hcl) { /* an error occurred and control has reached here - * probably, some included files might not have been + * probably, some included files might not have been * closed. close them */ if (hcl->c) diff --git a/mod/Makefile.am b/mod/Makefile.am index 26df814..5ac0509 100644 --- a/mod/Makefile.am +++ b/mod/Makefile.am @@ -15,7 +15,7 @@ if ENABLE_STATIC_MODULE ################################################## # STATIC MODULES BUILT INTO MAIN LIBRARY ################################################## -LDFLAGS_COMMON =-L$(libdir) -version-info 1:0:0 -no-undefined +LDFLAGS_COMMON =-L$(libdir) LIBADD_COMMON = noinst_LTLIBRARIES = diff --git a/mod/Makefile.in b/mod/Makefile.in index 12bfe20..01798c0 100644 --- a/mod/Makefile.in +++ b/mod/Makefile.in @@ -391,7 +391,7 @@ CFLAGS_COMMON = ################################################## # STATIC MODULES BUILT INTO MAIN LIBRARY ################################################## -@ENABLE_STATIC_MODULE_TRUE@LDFLAGS_COMMON = -L$(libdir) -version-info 1:0:0 -no-undefined +@ENABLE_STATIC_MODULE_TRUE@LDFLAGS_COMMON = -L$(libdir) @ENABLE_STATIC_MODULE_FALSE@LIBADD_COMMON = -lhcl @ENABLE_STATIC_MODULE_TRUE@LIBADD_COMMON = @ENABLE_STATIC_MODULE_TRUE@noinst_LTLIBRARIES = libhcl-arr.la \