Bug in utoi(), which made it ignore a leading minus sign when
[sgt/halibut] / error.c
diff --git a/error.c b/error.c
index 7fe97ec..00d007d 100644 (file)
--- a/error.c
+++ b/error.c
@@ -19,8 +19,9 @@ static void do_error(int code, va_list ap) {
     int i, j;
     char *sp, *sp2;
     wchar_t *wsp, *wsp2;
+    unsigned wc;
     filepos fpos, fpos2, *fposp;
-    int flags;
+    int flags = 0;
 
     switch(code) {
       case err_nomemory:              /* no arguments */
@@ -341,6 +342,47 @@ static void do_error(int code, va_list ap) {
                "html-mshtmlhelp-hhp found");
        flags = PREFIX;
        break;
+      case err_sfntnotable:
+       fpos = *va_arg(ap, filepos *);
+       sp = va_arg(ap, char *);
+       sprintf(error, "font has no '%.4s' table", sp);
+       flags = FILEPOS;
+       break;
+      case err_sfntnopsname:
+       fpos = *va_arg(ap, filepos *);
+       sprintf(error, "font has no PostScript name");
+       flags = FILEPOS;
+       break;
+      case err_sfntbadtable:
+       fpos = *va_arg(ap, filepos *);
+       sp = va_arg(ap, char *);
+       sprintf(error, "font has an invalid '%.4s' table", sp);
+       flags = FILEPOS;
+       break;
+      case err_sfntnounicmap:
+       fpos = *va_arg(ap, filepos *);
+       sprintf(error, "font has no UCS-2 character map");
+       flags = FILEPOS;
+       break;  
+      case err_sfnttablevers:
+       fpos = *va_arg(ap, filepos *);
+       sp = va_arg(ap, char *);
+       sprintf(error, "font has an unsupported '%.4s' table version", sp);
+       flags = FILEPOS;
+       break;
+      case err_sfntbadhdr:
+       fpos = *va_arg(ap, filepos *);
+       sprintf(error, "font has an invalid header");
+       flags = FILEPOS;
+       break;  
+      case err_sfntbadglyph:
+       fpos = *va_arg(ap, filepos *);
+       wc = va_arg(ap, unsigned);
+       sprintf(error,
+               "warning: character U+%04X references an non-existent glyph",
+               wc);
+       flags = FILEPOS;
+       break;
       case err_whatever:
        sp = va_arg(ap, char *);
         vsprintf(error, sp, ap);
@@ -351,7 +393,7 @@ static void do_error(int code, va_list ap) {
     if (flags & PREFIX)
        fputs("halibut: ", stderr);
     if (flags & FILEPOS) {
-       fprintf(stderr, "%s:", fpos.filename);
+       fprintf(stderr, "%s:", fpos.filename ? fpos.filename : "<standard input>");
        if (fpos.line > 0)
            fprintf(stderr, "%d:", fpos.line);
        if (fpos.col > 0)