Index: ossp-pkg/l2/l2.h.in RCS File: /v/ossp/cvs/ossp-pkg/l2/l2.h.in,v rcsdiff -q -kk '-r1.25' '-r1.26' -u '/v/ossp/cvs/ossp-pkg/l2/l2.h.in,v' 2>/dev/null --- l2.h.in 2001/12/14 12:39:08 1.25 +++ l2.h.in 2001/12/22 22:18:34 1.26 @@ -208,7 +208,6 @@ l2_result_t l2_env_formatter (l2_env_t *env, char id, l2_formatter_t cb, l2_context_t *ctx); l2_result_t l2_env_handler (l2_env_t *env, l2_handler_t *h); l2_result_t l2_env_errorinfo (l2_env_t *env, l2_result_t rv, const char *fmt, ...); -l2_result_t l2_env_verrorinfo (l2_env_t *env, l2_result_t rv, const char *fmt, va_list ap); char *l2_env_strerror (l2_env_t *env, l2_result_t rv); l2_result_t l2_env_settimer (l2_env_t *env, int iInterval); Index: ossp-pkg/l2/l2_env.c RCS File: /v/ossp/cvs/ossp-pkg/l2/l2_env.c,v rcsdiff -q -kk '-r1.5' '-r1.6' -u '/v/ossp/cvs/ossp-pkg/l2/l2_env.c,v' 2>/dev/null --- l2_env.c 2001/12/14 12:39:08 1.5 +++ l2_env.c 2001/12/22 22:18:34 1.6 @@ -152,23 +152,15 @@ { va_list ap; - /* remember error information */ - va_start(ap, fmt); - l2_env_verrorinfo(env, rv, fmt, ap); - va_end(ap); - - return L2_OK; -} - -l2_result_t l2_env_verrorinfo(l2_env_t *env, l2_result_t rv, const char *fmt, va_list ap) -{ /* argument sanity check */ if (env == NULL || rv == L2_OK || fmt == NULL) return L2_ERR_ARG; /* remember error information */ + va_start(ap, fmt); l2_util_vsprintf(env->szErrorInfo, sizeof(env->szErrorInfo), fmt, ap); env->rvErrorInfo = rv; + va_end(ap); return L2_OK; } Index: ossp-pkg/l2/l2_spec.c RCS File: /v/ossp/cvs/ossp-pkg/l2/l2_spec.c,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/l2/l2_spec.c,v' 2>/dev/null --- l2_spec.c 2001/12/22 22:04:18 1.6 +++ l2_spec.c 2001/12/22 22:18:34 1.7 @@ -98,6 +98,7 @@ /* remember a specification parsing error (used internally) */ void l2_spec_error(l2_spec_ctx_t *ctx, l2_result_t rv, YYLTYPE *loc, const char *fmt, ...) { + va_list ap; const char *cpF, *cpL; const char *cpP, *cpE; int line, column; @@ -143,8 +144,16 @@ *cp++ = '\0'; /* remember error */ - l2_env_errorinfo(ctx->env, rv, "line %d, column %d: `%s'; %s", - line, column, cpBuf, fmt); + va_start(ap, fmt); + if ((cp = l2_util_vasprintf(fmt, ap)) != NULL) { + l2_env_errorinfo(ctx->env, rv, "line %d, column %d: `%s'; %s", + line, column, cpBuf, cp); + free(cp); + } + else + l2_env_errorinfo(ctx->env, rv, "line %d, column %d: `%s'; N.A.", + line, column, cpBuf); + va_end(ap); ctx->rv = rv; /* cleanup */