Remove programmer_shutdown() from doit()

Because the programmer initialization that has to be called way
earlier and independently elsewhere, it does not make a lot of sense
to deinit within doit(). Also, free the logfile name at the end of
main() to catch more execution paths and because this moves it to
the other cleanup instructions.

Corresponding to flashrom svn r1788.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
diff --git a/cli_classic.c b/cli_classic.c
index a0c2d64..a32d55b 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -338,8 +338,7 @@
 	if (logfile && check_filename(logfile, "log"))
 		cli_classic_abort_usage();
 	if (logfile && open_logfile(logfile))
-		return 1;
-	free(logfile);
+		cli_classic_abort_usage();
 #endif /* !STANDALONE */
 
 #if CONFIG_PRINT_WIKI == 1
@@ -522,8 +521,6 @@
 	 */
 	programmer_delay(100000);
 	ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it);
-	/* Note: doit() already calls programmer_shutdown(). */
-	goto out;
 
 out_shutdown:
 	programmer_shutdown();
@@ -539,6 +536,7 @@
 	free((char *)chip_to_probe); /* Silence! Freeing is not modifying contents. */
 	chip_to_probe = NULL;
 #ifndef STANDALONE
+	free(logfile);
 	ret |= close_logfile();
 #endif /* !STANDALONE */
 	return ret;