From 22b1d999006ac7b67d675305087677c589f03cd6 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 14 Dec 2001 12:44:14 +0000 Subject: Keywords are now collected using a B-tree rather than an array with heapsort. This makes the code much simpler for a start, but the main reason is so that we can spot duplicate keywords as we go along rather than having to wait until the end of input processing. [originally from svn r1489] --- error.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'error.c') diff --git a/error.c b/error.c index d115073..4f7524c 100644 --- a/error.c +++ b/error.c @@ -18,7 +18,7 @@ static void do_error(int code, va_list ap) { char auxbuf[256]; char *sp, *sp2; wchar_t *wsp; - filepos fpos; + filepos fpos, fpos2; int flags; switch(code) { @@ -175,6 +175,15 @@ static void do_error(int code, va_list ap) { "previously defined `%.200s'", sp, sp2); flags = FILEPOS; break; + case err_multikw: + fpos = *va_arg(ap, filepos *); + fpos2 = *va_arg(ap, filepos *); + wsp = va_arg(ap, wchar_t *); + sp = ustrtoa(wsp, auxbuf, sizeof(auxbuf)); + sprintf(error, "paragraph keyword `%.200s' already defined at ", sp); + sprintf(error + strlen(error), "%s:%d", fpos2.filename, fpos2.line); + flags = FILEPOS; + break; case err_whatever: sp = va_arg(ap, char *); vsprintf(error, sp, ap); -- cgit v1.1