diff options
| author | Simon Tatham <anakin@pobox.com> | 1999-07-31 18:44:53 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 1999-07-31 18:44:53 +0000 |
| commit | 0d14833a9c76c51cc7417d8fd60bec9d92714b8e (patch) | |
| tree | c0716d398e83bc746baad088d5dfc215d5fea483 /error.c | |
| parent | 4c8c2b256ed01563a98b4cd820dc8ffef30d7fc1 (diff) | |
| download | halibut-0d14833a9c76c51cc7417d8fd60bec9d92714b8e.zip halibut-0d14833a9c76c51cc7417d8fd60bec9d92714b8e.tar.gz halibut-0d14833a9c76c51cc7417d8fd60bec9d92714b8e.tar.bz2 halibut-0d14833a9c76c51cc7417d8fd60bec9d92714b8e.tar.xz | |
Further development work. Parser nearly finished
[originally from svn r187]
Diffstat (limited to 'error.c')
| -rw-r--r-- | error.c | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -11,10 +11,14 @@ * Error flags */ #define PREFIX 0x0001 /* give `buttress:' prefix */ +#define FILEPOS 0x0002 /* give file position prefix */ static void do_error(int code, va_list ap) { char error[1024]; + char auxbuf[256]; char *sp; + wchar_t *wsp; + filepos fpos; int flags; switch(code) { @@ -36,10 +40,83 @@ static void do_error(int code, va_list ap) { sprintf(error, "no input files"); flags = PREFIX; break; + case err_cantopen: + sp = va_arg(ap, char *); + sprintf(error, "unable to open input file `%.200s'", sp); + flags = PREFIX; + break; + case err_nodata: /* no arguments */ + sprintf(error, "no data in input files"); + flags = PREFIX; + break; + case err_brokencodepara: + fpos = *va_arg(ap, filepos *); + sprintf(error, "every line of a code paragraph should begin `\\c'"); + flags = FILEPOS; + break; + case err_kwunclosed: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected `}' after paragraph keyword"); + flags = FILEPOS; + break; + case err_kwexpected: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected a paragraph keyword"); + flags = FILEPOS; + break; + case err_kwillegal: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected no paragraph keyword"); + flags = FILEPOS; + break; + case err_kwtoomany: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected only one paragraph keyword"); + flags = FILEPOS; + break; + case err_bodyillegal: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected no text after paragraph keyword"); + flags = FILEPOS; + break; + case err_badmidcmd: + wsp = va_arg(ap, wchar_t *); + sp = ustrtoa(wsp, auxbuf, sizeof(auxbuf)); + fpos = *va_arg(ap, filepos *); + sprintf(error, "command `%.200s' unexpected in mid-paragraph", sp); + flags = FILEPOS; + break; + case err_unexbrace: + fpos = *va_arg(ap, filepos *); + sprintf(error, "brace character unexpected in mid-paragraph"); + flags = FILEPOS; + break; + case err_explbr: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected `{' after command"); + flags = FILEPOS; + break; + case err_kwexprbr: + fpos = *va_arg(ap, filepos *); + sprintf(error, "expected `}' after cross-reference"); + flags = FILEPOS; + break; + case err_missingrbrace: + fpos = *va_arg(ap, filepos *); + sprintf(error, "unclosed braces at end of paragraph"); + flags = FILEPOS; + break; + case err_nestedstyles: + fpos = *va_arg(ap, filepos *); + sprintf(error, "unable to nest text styles"); + flags = FILEPOS; + break; } if (flags & PREFIX) fputs("buttress: ", stderr); + if (flags & FILEPOS) + fprintf(stderr, "%s:%d: ", fpos.filename, fpos.line); fputs(error, stderr); fputc('\n', stderr); } |