+ /* Select the correct writer module. */
+ struct writer *writer;
+ int nr_outputs;
+
+ if (strcmp (format, "cpio") == 0) {
+ writer = &cpio_writer;
+ nr_outputs = 2; /* kernel and appliance (== initrd) */
+ }
+ else if (strcmp (format, "ext2") == 0) {
+ writer = &ext2_writer;
+ nr_outputs = 3; /* kernel, initrd, appliance */
+ }
+ else if (strcmp (format, "checksum") == 0) {
+ writer = &checksum_writer;
+ nr_outputs = 0; /* (none) */
+ }
+ else {
+ fprintf (stderr,
+ "%s: incorrect output format (-f): must be cpio|ext2|checksum\n",
+ argv[0]);
+ exit (EXIT_FAILURE);
+ }
+
+ /* [optind .. optind+nr_inputs-1] hostcpu [argc-nr_outputs-1 .. argc-1]
+ * <---- nr_inputs ----> 1 <---- nr_outputs ---->
+ */