+
+Errorclass troff()
+{
+ /*
+ * troff source error message, from eqn, bib, tbl...
+ * Just like pcc ccom, except uses `'
+ */
+ if ( (firstchar(wordv[1]) == '`')
+ && (lastchar(wordv[1]) == ',')
+ && (next_lastchar(wordv[1]) == '\'')
+ && (strcmp(wordv[2],"line") == 0)
+ && (isdigit(firstchar(wordv[3])))
+ && (lastchar(wordv[3]) == ':') ){
+ clob_last(wordv[1], '\0'); /* drop last , */
+ clob_last(wordv[1], '\0'); /* drop last " */
+ wordv[1]++; /* drop first " */
+ clob_last(wordv[3], '\0'); /* drop : on line number */
+ wordv[2] = wordv[1]; /* overwrite "line" */
+ wordv++; /*compensate*/
+ currentfilename = wordv[1];
+ language = INTROFF;
+ return(C_TRUE);
+ }
+ return(C_UNKNOWN);
+}
+Errorclass mod2()
+{
+ /*
+ * for decwrl modula2 compiler (powell)
+ */
+ if ( ( (strcmp(wordv[1], "!!!") == 0) /* early version */
+ ||(strcmp(wordv[1], "File") == 0)) /* later version */
+ && (lastchar(wordv[2]) == ',') /* file name */
+ && (strcmp(wordv[3], "line") == 0)
+ && (isdigit(firstchar(wordv[4]))) /* line number */
+ && (lastchar(wordv[4]) == ':') /* line number */
+ ){
+ clob_last(wordv[2], '\0'); /* drop last , on file name */
+ clob_last(wordv[4], '\0'); /* drop last : on line number */
+ wordv[3] = wordv[2]; /* file name on top of "line" */
+ wordv += 2;
+ wordc -= 2;
+ currentfilename = wordv[1];
+ language = INMOD2;
+ return(C_TRUE);
+ }
+ return(C_UNKNOWN);
+}