Drop ARGTYPE_UNKNOWN, use guess_lens instead
diff --git a/printf.c b/printf.c
index 34d2813..748c0d0 100644
--- a/printf.c
+++ b/printf.c
@@ -119,10 +119,9 @@
 		  ARGTYPE_ULONG, ARGTYPE_ULONG };
 
 	struct arg_type_info *elt_info = NULL;
-	if (elt_type != ARGTYPE_UNKNOWN)
+	if (format_type == ARGTYPE_ARRAY || format_type == ARGTYPE_POINTER)
 		elt_info = type_get_simple(elt_type);
-
-	if (format_type == ARGTYPE_INT)
+	else if (format_type == ARGTYPE_INT)
 		format_type = ints[2 + lng - hlf];
 	else if (format_type == ARGTYPE_UINT)
 		format_type = uints[2 + lng - hlf];
@@ -182,8 +181,8 @@
 {
 	unsigned hlf = 0;
 	unsigned lng = 0;
-	enum arg_type format_type = ARGTYPE_UNKNOWN;
-	enum arg_type elt_type = ARGTYPE_UNKNOWN;
+	enum arg_type format_type = ARGTYPE_VOID;
+	enum arg_type elt_type = ARGTYPE_VOID;
 	char len_buf[25] = {};
 	size_t len_buf_len = 0;
 	struct lens *lens = NULL;
@@ -316,7 +315,7 @@
 		}
 
 		/* If we got here, the type must have been set.  */
-		assert(format_type != ARGTYPE_UNKNOWN);
+		assert(format_type != ARGTYPE_VOID);
 
 		if (form_next_param(self, format_type, elt_type, hlf, lng,
 				    len_buf, len_buf_len, infop) < 0)