Always require the --programmer parameter if any flash chip access is requested

Fix a few man page oddities as well.

Corresponding to flashrom svn r1552.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
diff --git a/cli_classic.c b/cli_classic.c
index b415076..cf3874c 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -31,87 +31,20 @@
 #include "flashchips.h"
 #include "programmer.h"
 
-#if CONFIG_INTERNAL == 1
-static enum programmer default_programmer = PROGRAMMER_INTERNAL;
-#elif CONFIG_DUMMY == 1
-static enum programmer default_programmer = PROGRAMMER_DUMMY;
-#else
-/* If neither internal nor dummy are selected, we must pick a sensible default.
- * Since there is no reason to prefer a particular external programmer, we fail
- * if more than one of them is selected. If only one is selected, it is clear
- * that the user wants that one to become the default.
- */
-#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_FT2232_SPI+CONFIG_SERPROG+CONFIG_BUSPIRATE_SPI+CONFIG_DEDIPROG+CONFIG_RAYER_SPI+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV > 1
-#error Please enable either CONFIG_DUMMY or CONFIG_INTERNAL or disable support for all programmers except one.
-#endif
-static enum programmer default_programmer =
-#if CONFIG_NIC3COM == 1
-	PROGRAMMER_NIC3COM
-#endif
-#if CONFIG_NICREALTEK == 1
-	PROGRAMMER_NICREALTEK
-#endif
-#if CONFIG_NICNATSEMI == 1
-	PROGRAMMER_NICNATSEMI
-#endif
-#if CONFIG_GFXNVIDIA == 1
-	PROGRAMMER_GFXNVIDIA
-#endif
-#if CONFIG_DRKAISER == 1
-	PROGRAMMER_DRKAISER
-#endif
-#if CONFIG_SATASII == 1
-	PROGRAMMER_SATASII
-#endif
-#if CONFIG_ATAHPT == 1
-	PROGRAMMER_ATAHPT
-#endif
-#if CONFIG_FT2232_SPI == 1
-	PROGRAMMER_FT2232_SPI
-#endif
-#if CONFIG_SERPROG == 1
-	PROGRAMMER_SERPROG
-#endif
-#if CONFIG_BUSPIRATE_SPI == 1
-	PROGRAMMER_BUSPIRATE_SPI
-#endif
-#if CONFIG_DEDIPROG == 1
-	PROGRAMMER_DEDIPROG
-#endif
-#if CONFIG_RAYER_SPI == 1
-	PROGRAMMER_RAYER_SPI
-#endif
-#if CONFIG_NICINTEL == 1
-	PROGRAMMER_NICINTEL
-#endif
-#if CONFIG_NICINTEL_SPI == 1
-	PROGRAMMER_NICINTEL_SPI
-#endif
-#if CONFIG_OGP_SPI == 1
-	PROGRAMMER_OGP_SPI
-#endif
-#if CONFIG_SATAMV == 1
-	PROGRAMMER_SATAMV
-#endif
-#if CONFIG_LINUX_SPI == 1
-	PROGRAMMER_LINUX_SPI
-#endif
-;
-#endif
-
 static void cli_classic_usage(const char *name)
 {
-	printf("Usage: flashrom [-n] [-V] [-f] [-h|-R|-L|"
+	printf("Usage: flashrom [-h|-R|-L|"
 #if CONFIG_PRINT_WIKI == 1
-	         "-z|"
+		"-z|"
 #endif
-	         "-E|-r <file>|-w <file>|-v <file>]\n"
-	       "       [-c <chipname>] [-l <file>] [-o <file>]\n"
-	       "       [-i <image>] [-p <programmername>[:<parameters>]]\n\n");
+		"-p <programmername>[:<parameters>]\n"
+	       "                   [-E|-r <file>|-w <file>|-v <file>] [-c <chipname>]\n"
+	       "                   [-l <file> [-i <image>]] [-n] [-f]]\n"
+	       "                [-V[V[V]]] [-o <logfile>]\n\n");
 
 	printf("Please note that the command line interface for flashrom has "
 	         "changed between\n"
-	       "0.9.1 and 0.9.2 and will change again before flashrom 1.0.\n"
+	       "0.9.5 and 0.9.6 and will change again before flashrom 1.0.\n"
 	       "Do not use flashrom in scripts or other automated tools "
 	         "without checking\n"
 	       "that your flashrom version won't interpret options in a "
@@ -360,8 +293,9 @@
 				}
 			}
 			if (prog == PROGRAMMER_INVALID) {
-				fprintf(stderr, "Error: Unknown programmer "
-					"%s.\n", optarg);
+				fprintf(stderr, "Error: Unknown programmer \"%s\". Valid choices are:\n",
+					optarg);
+				list_programmers_linebreak(0, 80, 0);
 				cli_classic_abort_usage();
 			}
 			break;
@@ -468,8 +402,13 @@
 		flash = NULL;
 	}
 
-	if (prog == PROGRAMMER_INVALID)
-		prog = default_programmer;
+	if (prog == PROGRAMMER_INVALID) {
+		msg_perr("Please select a programmer with the --programmer parameter.\n"
+			 "Valid choices are:\n");
+		list_programmers_linebreak(0, 80, 0);
+		ret = 1;
+		goto out;
+	}
 
 	/* FIXME: Delay calibration should happen in programmer code. */
 	myusec_calibrate_delay();