int i, j;
char *sp, *sp2;
wchar_t *wsp, *wsp2;
- filepos fpos, fpos2;
+ filepos fpos, fpos2, *fposp;
int flags;
switch(code) {
flags = FILEPOS;
break;
case err_infonodechar:
- fpos = *va_arg(ap, filepos *);
+ fposp = va_arg(ap, filepos *);
c = (char)va_arg(ap, int);
sprintf(error, "info output format does not support '%c' in"
" node names; removing", c);
- flags = FILEPOS;
+ if (fposp) {
+ flags = FILEPOS;
+ fpos = *fposp;
+ }
break;
case err_text_codeline:
fpos = *va_arg(ap, filepos *);
flags = FILEPOS;
sfree(sp);
break;
- case err_emptypara:
+ case err_nofont:
fpos = *va_arg(ap, filepos *);
- sprintf(error, "found no text in paragraph");
+ wsp = va_arg(ap, wchar_t *);
+ sp = utoa_locale_dup(wsp);
+ sprintf(error, "font `%.200s' not recognised", sp);
+ flags = FILEPOS;
+ sfree(sp);
+ break;
+ case err_afmeof:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "AFM file ended unexpectedly");
+ flags = FILEPOS;
+ break;
+ case err_afmkey:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sprintf(error, "required AFM key '%.200s' missing", sp);
+ flags = FILEPOS;
+ break;
+ case err_afmvers:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "unsupported AFM version");
+ flags = FILEPOS;
+ break;
+ case err_afmval:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ i = va_arg(ap, int);
+ if (i == 1)
+ sprintf(error, "AFM key '%.200s' requires a value", sp);
+ else
+ sprintf(error, "AFM key '%.200s' requires %d values", sp, i);
+ flags = FILEPOS;
+ break;
+ case err_pfeof:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file ended unexpectedly");
+ flags = FILEPOS;
+ break;
+ case err_pfhead:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file header line invalid");
+ flags = FILEPOS;
+ break;
+ case err_pfbad:
+ fpos = *va_arg(ap, filepos *);
+ sprintf(error, "Type 1 font file invalid");
+ flags = FILEPOS;
+ break;
+ case err_pfnoafm:
+ fpos = *va_arg(ap, filepos *);
+ sp = va_arg(ap, char *);
+ sprintf(error, "No metrics available for Type 1 font '%.200s'", sp);
flags = FILEPOS;
break;
case err_whatever: