added AM_SILENT_RULES to configure.ac

This commit is contained in:
2013-02-09 13:31:31 +00:00
parent 60255caf39
commit bbdf168ee8
40 changed files with 1451 additions and 644 deletions

View File

@ -6,7 +6,7 @@ AM_CPPFLAGS = \
-I$(includedir)
lib_LTLIBRARIES = libqsexli.la
libqsexli_la_SOURCES = xli.h xli.c read.c write.c std.c
libqsexli_la_SOURCES = xli.h xli.c err.c read.c write.c std.c
libqsexli_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
libqsexli_la_LIBADD = -lqsecmn

View File

@ -79,9 +79,12 @@ am__uninstall_files_from_dir = { \
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libqsexli_la_DEPENDENCIES =
am_libqsexli_la_OBJECTS = xli.lo read.lo write.lo std.lo
am_libqsexli_la_OBJECTS = xli.lo err.lo read.lo write.lo std.lo
libqsexli_la_OBJECTS = $(am_libqsexli_la_OBJECTS)
libqsexli_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
libqsexli_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libqsexli_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES =
@ -90,13 +93,26 @@ 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)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
SOURCES = $(libqsexli_la_SOURCES)
DIST_SOURCES = $(libqsexli_la_SOURCES)
ETAGS = etags
@ -104,6 +120,7 @@ CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
ARGZ_H = @ARGZ_H@
AUTOCONF = @AUTOCONF@
@ -282,7 +299,7 @@ AM_CPPFLAGS = \
-I$(includedir)
lib_LTLIBRARIES = libqsexli.la
libqsexli_la_SOURCES = xli.h xli.c read.c write.c std.c
libqsexli_la_SOURCES = xli.h xli.c err.c read.c write.c std.c
libqsexli_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
libqsexli_la_LIBADD = -lqsecmn
all: all-am
@ -351,7 +368,7 @@ clean-libLTLIBRARIES:
rm -f "$${dir}/so_locations"; \
done
libqsexli.la: $(libqsexli_la_OBJECTS) $(libqsexli_la_DEPENDENCIES) $(EXTRA_libqsexli_la_DEPENDENCIES)
$(libqsexli_la_LINK) -rpath $(libdir) $(libqsexli_la_OBJECTS) $(libqsexli_la_LIBADD) $(LIBS)
$(AM_V_CCLD)$(libqsexli_la_LINK) -rpath $(libdir) $(libqsexli_la_OBJECTS) $(libqsexli_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@ -359,31 +376,32 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/err.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/std.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/write.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xli.Plo@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@
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(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@
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(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@
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo

123
qse/lib/xli/err.c Normal file
View File

@ -0,0 +1,123 @@
/*
* $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 <http://www.gnu.org/licenses/>.
*/
#include "xli.h"
#include "../cmn/mem.h"
const qse_char_t* qse_xli_dflerrstr (
const qse_xli_t* xli, qse_xli_errnum_t errnum)
{
static const qse_char_t* errstr[] =
{
QSE_T("no error"),
QSE_T("other error"),
QSE_T("not implemented"),
QSE_T("subsystem error"),
QSE_T("internal error that should never have happened"),
QSE_T("insufficient memory"),
QSE_T("invalid parameter or data"),
QSE_T("'${0}' not found"),
QSE_T("'${0}' already exists"),
QSE_T("I/O error with file '${0}'"),
QSE_T("error returned by user I/O handler"),
QSE_T("semicolon expected in place of '${0}'"),
QSE_T("left-brace or equal-sign expected in place of '${0}'"),
QSE_T("right-brace expected in place of '${0}'"),
QSE_T("pair value expected in place of '${0}'")
};
return (errnum >= 0 && errnum < QSE_COUNTOF(errstr))?
errstr[errnum]: QSE_T("unknown error");
}
qse_xli_errstr_t qse_xli_geterrstr (const qse_xli_t* xli)
{
return xli->errstr;
}
void qse_xli_seterrstr (qse_xli_t* xli, qse_xli_errstr_t errstr)
{
xli->errstr = errstr;
}
qse_xli_errnum_t qse_xli_geterrnum (const qse_xli_t* xli)
{
return xli->errnum;
}
const qse_xli_loc_t* qse_xli_geterrloc (const qse_xli_t* xli)
{
return &xli->errloc;
}
const qse_char_t* qse_xli_geterrmsg (const qse_xli_t* xli)
{
return (xli->errmsg[0] == QSE_T('\0'))?
qse_xli_geterrstr(xli)(xli,xli->errnum): xli->errmsg;
}
void qse_xli_geterror (
const qse_xli_t* xli, qse_xli_errnum_t* errnum,
const qse_char_t** errmsg, qse_xli_loc_t* errloc)
{
if (errnum != QSE_NULL) *errnum = xli->errnum;
if (errmsg != QSE_NULL)
{
*errmsg = (xli->errmsg[0] == QSE_T('\0'))?
qse_xli_geterrstr(xli)(xli,xli->errnum):
xli->errmsg;
}
if (errloc != QSE_NULL) *errloc = xli->errloc;
}
void qse_xli_seterrnum (
qse_xli_t* xli, qse_xli_errnum_t errnum, const qse_cstr_t* errarg)
{
qse_xli_seterror (xli, errnum, errarg, QSE_NULL);
}
void qse_xli_seterrmsg (
qse_xli_t* xli, qse_xli_errnum_t errnum,
const qse_char_t* errmsg, const qse_xli_loc_t* errloc)
{
xli->errnum = errnum;
qse_strxcpy (xli->errmsg, QSE_COUNTOF(xli->errmsg), errmsg);
if (errloc != QSE_NULL) xli->errloc = *errloc;
else QSE_MEMSET (&xli->errloc, 0, QSE_SIZEOF(xli->errloc));
}
void qse_xli_seterror (
qse_xli_t* xli, qse_xli_errnum_t errnum,
const qse_cstr_t* errarg, const qse_xli_loc_t* errloc)
{
const qse_char_t* errfmt;
xli->errnum = errnum;
errfmt = qse_xli_geterrstr(xli)(xli,xli->errnum);
QSE_ASSERT (errfmt != QSE_NULL);
qse_strxfncpy (xli->errmsg, QSE_COUNTOF(xli->errmsg), errfmt, errarg);
if (errloc != QSE_NULL) xli->errloc = *errloc;
else QSE_MEMSET (&xli->errloc, 0, QSE_SIZEOF(xli->errloc));
}

View File

@ -29,11 +29,11 @@ static int close_stream (qse_xli_t* xli)
{
qse_ssize_t n;
xli->errnum = QSE_XLI_ENOERR;
n = xli->sio.inf (xli, QSE_XLI_IO_CLOSE, xli->sio.inp, QSE_NULL, 0);
if (n <= -1)
{
if (xli->errnum == QSE_XLI_ENOERR) xli->errnum = QSE_XLI_EIOUSR;
if (xli->errnum == QSE_XLI_ENOERR)
qse_xli_seterrnum (xli, QSE_XLI_EIOUSR, QSE_NULL);
return -1;
}
@ -69,7 +69,7 @@ enum tok_t
do { \
if (qse_str_ccat((tok)->name,(c)) == (qse_size_t)-1) \
{ \
xli->errnum = QSE_XLI_ENOMEM; \
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL); \
return -1; \
} \
} while (0)
@ -78,7 +78,7 @@ enum tok_t
do { \
if (qse_str_ncat((tok)->name,(s),(l)) == (qse_size_t)-1) \
{ \
xli->errnum = QSE_XLI_ENOMEM; \
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL); \
return -1; \
} \
} while (0)
@ -108,7 +108,6 @@ static int get_char (qse_xli_t* xli)
if (xli->sio.inp->b.pos >= xli->sio.inp->b.len)
{
xli->errnum = QSE_XLI_ENOERR;
n = xli->sio.inf (
xli, QSE_XLI_IO_READ, xli->sio.inp,
xli->sio.inp->b.buf, QSE_COUNTOF(xli->sio.inp->b.buf)
@ -116,7 +115,7 @@ static int get_char (qse_xli_t* xli)
if (n <= -1)
{
if (xli->errnum == QSE_XLI_ENOERR)
xli->errnum = QSE_XLI_EIOUSR;
qse_xli_seterrnum (xli, QSE_XLI_EIOUSR, QSE_NULL);
return -1;
}
@ -267,7 +266,6 @@ static int end_include (qse_xli_t* xli)
/* if it is an included file, close it and
* retry to read a character from an outer file */
xli->errnum = QSE_XLI_ENOERR;
x = xli->sio.inf (
xli, QSE_XLI_IO_CLOSE,
xli->sio.inp, QSE_NULL, 0);
@ -288,7 +286,8 @@ static int end_include (qse_xli_t* xli)
if (x != 0)
{
/* the failure mentioned above is returned here */
if (xli->errnum == QSE_XLI_ENOERR) xli->errnum = QSE_XLI_EIOUSR;
if (xli->errnum == QSE_XLI_ENOERR)
qse_xli_seterrnum (xli, QSE_XLI_EIOUSR, QSE_NULL);
return -1;
}
@ -334,11 +333,11 @@ static int begin_include (qse_xli_t* xli)
arg->line = 1;
arg->colm = 1;
xli->errnum = QSE_XLI_ENOERR;
op = xli->sio.inf (xli, QSE_XLI_IO_OPEN, arg, QSE_NULL, 0);
if (op <= -1)
{
if (xli->errnum == QSE_XLI_ENOERR) xli->errnum = QSE_XLI_EIOUSR;
if (xli->errnum == QSE_XLI_ENOERR)
qse_xli_seterrnum (xli, QSE_XLI_EIOUSR, QSE_NULL);
goto oops;
}
@ -537,41 +536,100 @@ static int read_pair (qse_xli_t* xli, qse_xli_list_t* list)
{
qse_char_t* key = QSE_NULL;
qse_char_t* name = QSE_NULL;
int got_eq = 0;
qse_xli_pair_t* pair;
if (xli->opt.trait & QSE_XLI_NODUPKEY)
{
qse_xli_atom_t* atom;
/* find any key conflicts in the current scope */
atom = list->tail;
while (atom)
{
if (atom->type == QSE_XLI_PAIR &&
qse_strcmp (((qse_xli_pair_t*)atom)->key, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
atom = atom->prev;
}
}
key = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
if (key == QSE_NULL)
{
xli->errnum = QSE_XLI_ENOMEM;
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
goto oops;
}
if (get_token (xli) <= -1) goto oops;
if (MATCH (xli, TOK_SQSTR) || MATCH(xli, TOK_DQSTR))
{
name = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
if (name == QSE_NULL)
{
xli->errnum = QSE_XLI_ENOMEM;
goto oops;
}
if (get_token (xli) <= -1) goto oops;
if (xli->opt.trait & QSE_XLI_NAMEDKEY)
{
/* the name part must be unique for the same key(s) */
if (MATCH (xli, TOK_SQSTR) || MATCH(xli, TOK_DQSTR))
{
qse_xli_atom_t* atom;
atom = list->tail;
while (atom)
{
if (atom->type == QSE_XLI_PAIR &&
((qse_xli_pair_t*)atom)->name &&
qse_strcmp (((qse_xli_pair_t*)atom)->key, key) == 0 &&
qse_strcmp (((qse_xli_pair_t*)atom)->name, QSE_STR_PTR(xli->tok.name)) == 0)
{
qse_xli_seterror (xli, QSE_XLI_EEXIST, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
atom = atom->prev;
}
name = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
if (name == QSE_NULL)
{
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
goto oops;
}
if (get_token (xli) <= -1) goto oops;
}
}
if (MATCH (xli, TOK_EQ))
{
if (get_token (xli) <= -1) goto oops;
got_eq = 1;
if (MATCH (xli, TOK_SQSTR) || MATCH (xli, TOK_DQSTR))
{
pair = qse_xli_insertpairwithstr (
xli, list, QSE_NULL, key, name,
QSE_STR_PTR(xli->tok.name), MATCH (xli, TOK_SQSTR));
if (pair == QSE_NULL) goto oops;
if (get_token (xli) <= -1) goto oops;
/* semicolon is mandatory for a string */
if (!MATCH (xli, TOK_SEMICOLON))
{
qse_xli_seterror (xli, QSE_XLI_ESCOLON, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
if (get_token (xli) <= -1) goto oops;
}
else
{
qse_xli_seterror (xli, QSE_XLI_EPAVAL, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
}
if (MATCH (xli, TOK_LBRACE))
else if (MATCH (xli, TOK_LBRACE))
{
if (get_token (xli) <= -1) goto oops;
/* TODO: make it optional??? check duplicate entries... */
/* insert a pair with an empty list */
pair = qse_xli_insertpairwithemptylist (xli, list, QSE_NULL, key, name);
if (pair == QSE_NULL) goto oops;
@ -580,7 +638,7 @@ static int read_pair (qse_xli_t* xli, qse_xli_list_t* list)
if (!MATCH (xli, TOK_RBRACE))
{
/* TODO: syntax error */
qse_xli_seterror (xli, QSE_XLI_ERBRCE, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
@ -593,33 +651,9 @@ static int read_pair (qse_xli_t* xli, qse_xli_list_t* list)
if (get_token (xli) <= -1) goto oops;
}
}
else if (MATCH (xli, TOK_SQSTR) || MATCH (xli, TOK_DQSTR))
{
if (!got_eq)
{
/* TODO: syntax error */
goto oops;
}
pair = qse_xli_insertpairwithstr (
xli, list, QSE_NULL, key, name,
QSE_STR_PTR(xli->tok.name), MATCH (xli, TOK_SQSTR));
if (pair == QSE_NULL) goto oops;
if (get_token (xli) <= -1) goto oops;
/* semicolon is mandatory for a string */
if (!MATCH (xli, TOK_SEMICOLON))
{
/* TODO: syntax error */
goto oops;
}
if (get_token (xli) <= -1) goto oops;
}
else
{
/* TODO: syntax error */
qse_xli_seterror (xli, QSE_XLI_ELBREQ, QSE_STR_CSTR(xli->tok.name), &xli->tok.loc);
goto oops;
}
@ -674,7 +708,7 @@ int qse_xli_read (qse_xli_t* xli, qse_xli_io_impl_t io)
if (io == QSE_NULL)
{
xli->errnum = QSE_XLI_EINVAL;
qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL);
return -1;
}
@ -685,11 +719,11 @@ int qse_xli_read (qse_xli_t* xli, qse_xli_io_impl_t io)
xli->sio.inp = &xli->sio.arg;
qse_htb_clear (xli->sio_names);
xli->errnum = QSE_XLI_ENOERR;
n = xli->sio.inf (xli, QSE_XLI_IO_OPEN, xli->sio.inp, QSE_NULL, 0);
if (n <= -1)
{
if (xli->errnum == QSE_XLI_ENOERR) xli->errnum = QSE_XLI_EIOUSR;
if (xli->errnum == QSE_XLI_ENOERR)
qse_xli_seterrnum (xli, QSE_XLI_EIOUSR, QSE_NULL);
return -1;
}
/* the input stream is open now */

View File

@ -53,6 +53,7 @@ int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr)
{
QSE_MEMSET (xli, 0, QSE_SIZEOF(*xli));
xli->mmgr = mmgr;
xli->errstr = qse_xli_dflerrstr;
xli->tok.name = qse_str_open (mmgr, 0, 128);
if (xli->tok.name == QSE_NULL) goto oops;
@ -69,7 +70,7 @@ int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr)
return 0;
oops:
xli->errnum = QSE_XLI_ENOMEM;
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
if (xli->sio_names) qse_htb_close (xli->sio_names);
if (xli->tok.name) qse_str_close (xli->tok.name);
return -1;
@ -101,7 +102,7 @@ int qse_xli_setopt (qse_xli_t* xli, qse_xli_opt_t id, const void* value)
return 0;
}
xli->errnum = QSE_XLI_EINVAL;
qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL);
return -1;
}
@ -114,7 +115,7 @@ int qse_xli_getopt (qse_xli_t* xli, qse_xli_opt_t id, void* value)
return 0;
};
xli->errnum = QSE_XLI_EINVAL;
qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL);
return -1;
}
@ -138,7 +139,8 @@ void* qse_xli_allocmem (qse_xli_t* xli, qse_size_t size)
void* ptr;
ptr = QSE_MMGR_ALLOC (xli->mmgr, size);
if (ptr == QSE_NULL) xli->errnum = QSE_XLI_ENOMEM;
if (ptr == QSE_NULL)
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
return ptr;
}
@ -147,7 +149,8 @@ void* qse_xli_callocmem (qse_xli_t* xli, qse_size_t size)
void* ptr;
ptr = QSE_MMGR_ALLOC (xli->mmgr, size);
if (ptr == QSE_NULL) xli->errnum = QSE_XLI_ENOMEM;
if (ptr == QSE_NULL)
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
else QSE_MEMSET (ptr, 0, size);
return ptr;
}
@ -197,6 +200,7 @@ qse_xli_pair_t* qse_xli_insertpair (
{
qse_xli_pair_t* pair;
qse_size_t klen, nlen;
qse_char_t* kptr, * nptr;
klen = qse_strlen (key);
nlen = name? qse_strlen (name): 0;
@ -207,13 +211,15 @@ qse_xli_pair_t* qse_xli_insertpair (
((nlen + 1) * QSE_SIZEOF(*name)));
if (pair == QSE_NULL) return QSE_NULL;
pair->type = QSE_XLI_PAIR;
pair->key = (const qse_char_t*)(pair + 1);
pair->name = pair->key + klen + 1;
pair->val = value; /* this assumes it points to a dynamically allocated atom */
kptr = (qse_char_t*)(pair + 1);
nptr = kptr + klen + 1;
qse_strcpy (kptr, key);
if (name) qse_strcpy (nptr, name);
qse_strcpy (pair->key, key);
if (name) qse_strcpy (pair->name, name);
pair->type = QSE_XLI_PAIR;
pair->key = kptr;
pair->name = nptr;
pair->val = value; /* this assumes it points to a dynamically allocated atom */
insert_atom (xli, parent, peer, (qse_xli_atom_t*)pair);
return pair;

View File

@ -38,7 +38,11 @@ struct qse_xli_tok_t
struct qse_xli_t
{
qse_mmgr_t* mmgr;
qse_xli_errnum_t errnum;
qse_xli_errstr_t errstr; /**< error string getter */
qse_xli_errnum_t errnum; /**< stores an error number */
qse_char_t errmsg[128]; /**< error message holder */
qse_xli_loc_t errloc; /**< location of the last error */
struct
{
@ -69,6 +73,9 @@ int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr);
void qse_xli_fini (qse_xli_t* xli);
const qse_char_t* qse_xli_dflerrstr (
const qse_xli_t* xli, qse_xli_errnum_t errnum);
#if defined(__cplusplus)
}
#endif