what about something like this?
single loop, more obvious(?) execution flow
printf is misaligned, but you get the idea.

Signed-off-by: Stefan Tauner <[email protected]>
---

 cli_classic.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/cli_classic.c b/cli_classic.c
index 7661612..df1f668 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -456,11 +456,25 @@ int main(int argc, char *argv[])
                        printf("Note: flashrom can never write if the flash "
                               "chip isn't found automatically.\n");
                }
-#if 0 // FIXME: What happens for a forced chip read if multiple compatible 
programmers are registered?
                if (force && read_it && chip_to_probe) {
+                       struct registered_programmer *pgm;
+                       struct registered_programmer *first_pgm = NULL;
                        printf("Force read (-f -r -c) requested, pretending "
                               "the chip is there:\n");
-                       startchip = probe_flash(0, &flashes[0], 1);
+                       for (j = 0; j < registered_programmer_count; j++) {
+                               pgm = &registered_programmers[j];
+                               if (pgm->buses_supported & flashes[0].bustype) {
+                                       if (first_pgm == NULL)
+                                               first_pgm = pgm;
+                                       else {
+                               printf("More than one compatible controller "
+                                      "found for the requested flash chip, "
+                                      "using the first one.\n");
+                                       break;
+                                       }
+                               }
+                       }
+                       startchip = probe_flash(first_pgm, 0, &flashes[0], 1);
                        if (startchip == -1) {
                                printf("Probing for flash chip '%s' failed.\n",
                                       chip_to_probe);
@@ -471,7 +485,6 @@ int main(int argc, char *argv[])
                               "contain garbage.\n");
                        return read_flash_to_file(&flashes[0], filename);
                }
-#endif
                ret = 1;
                goto out_shutdown;
        } else if (!chip_to_probe) {
-- 
1.7.1


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to