About time I fixed this: allow for some people's md5sum utilities
[sgt/halibut] / error.c
diff --git a/error.c b/error.c
index 0330e76..f7461ef 100644 (file)
--- a/error.c
+++ b/error.c
@@ -37,6 +37,17 @@ static void do_error(int code, va_list ap) {
        sprintf(error, "unrecognised option `-%.200s'", sp);
        flags = PREFIX;
        break;
+      case err_cmdcharset:
+       sp = va_arg(ap, char *);
+       sprintf(error, "character set `%.200s' not recognised", sp);
+       flags = PREFIX;
+       break;
+      case err_futileopt:
+       sp = va_arg(ap, char *);
+       sp2 = va_arg(ap, char *);
+       sprintf(error, "warning: option `-%s' has no effect%s", sp, sp2);
+       flags = PREFIX;
+       break;
       case err_noinput:                       /* no arguments */
        sprintf(error, "no input files");
        flags = PREFIX;
@@ -228,10 +239,12 @@ static void do_error(int code, va_list ap) {
                sp);
        flags = FILEPOS;
        break;
-      case err_infodirentry:
+      case err_cfginsufarg:
        fpos = *va_arg(ap, filepos *);
-       sprintf(error, "\\cfg{info-dir-entry} expects at least three"
-               " parameters");
+       sp = va_arg(ap, char *);
+       i = va_arg(ap, int);
+       sprintf(error, "\\cfg{%s} expects at least %d parameter%s", sp,
+               i, (i==1)?"":"s");
        flags = FILEPOS;
        break;
       case err_infonodechar:
@@ -257,6 +270,48 @@ static void do_error(int code, va_list ap) {
        sfree(sp);
        flags = FILEPOS;
        break;
+      case err_charset:
+       fpos = *va_arg(ap, filepos *);
+       wsp = va_arg(ap, wchar_t *);
+       sp = utoa_locale_dup(wsp);
+       sprintf(error, "character set `%.200s' not recognised", sp);
+       flags = FILEPOS;
+       sfree(sp);
+       break;
+      case err_nofont:
+       fpos = *va_arg(ap, filepos *);
+       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_whatever:
        sp = va_arg(ap, char *);
         vsprintf(error, sp, ap);