-fknown-extern-type support
diff --git a/libasn1fix/asn1fix_dereft.c b/libasn1fix/asn1fix_dereft.c
index f0ec9a6..1f9b5bf 100644
--- a/libasn1fix/asn1fix_dereft.c
+++ b/libasn1fix/asn1fix_dereft.c
@@ -28,9 +28,19 @@
*/
type_expr = asn1f_find_terminal_type(arg, expr, 0);
if(type_expr == NULL) {
+ const char *type_name;
+
+ if(errno == EEXIST) {
+ /* Ignore missing type
+ * if known to be defined externally:
+ * -fknown-extern-type=<name>
+ */
+ return 0;
+ }
+
+ type_name = asn1f_printable_reference(expr->reference);
FATAL("Unknown type \"%s\" referenced by \"%s\" at line %d",
- asn1f_printable_reference(expr->reference),
- expr->Identifier, expr->_lineno);
+ type_name, expr->Identifier, expr->_lineno);
return -1;
}