Commit 8b68dc44d48dd35cc641486db27643adddae3f59

Rusty Russell 2011-07-06T16:47:29

Fix --ndevs/-n option. The option should be called from within the callback, and just use printf to give the raw result, rather than using applog which prepends a timestamp.

diff --git a/main.c b/main.c
index cdd854d..4eb0eea 100644
--- a/main.c
+++ b/main.c
@@ -114,7 +114,6 @@ static const char *algo_names[] = {
 
 bool opt_debug = false;
 bool opt_protocol = false;
-bool opt_ndevs = false;
 bool want_longpoll = true;
 bool have_longpoll = false;
 bool use_syslog = false;
@@ -395,7 +394,13 @@ static char *load_config(const char *arg, void *unused)
 	 * so don't free config object. */
 	return parse_config(config);
 }
-	
+
+static char *print_ndevs_and_exit(int *ndevs)
+{
+	printf("%i", *ndevs);
+	exit(*ndevs);
+}
+
 /* These options are available from commandline only */
 static struct opt_table opt_cmdline_table[] = {
 	OPT_WITH_ARG("--config|-c",
@@ -410,6 +415,9 @@ static struct opt_table opt_cmdline_table[] = {
 			"\nBuilt with CPU mining support only.\n\n",
 #endif
 			"Print this message"),
+	OPT_WITHOUT_ARG("--ndevs|-n",
+			print_ndevs_and_exit, &nDevs,
+			"Display number of detected GPUs and exit"),
 	OPT_ENDTABLE
 };
 
@@ -1468,13 +1476,6 @@ int main (int argc, char *argv[])
 		return 1;
 	}
 
-#ifdef HAVE_OPENCL
-	if (opt_ndevs) {
-		applog(LOG_INFO, "%i", nDevs);
-		return nDevs;
-	}
-#endif
-
 	gpu_threads = nDevs * opt_g_threads;
 	if (!gpu_threads && !forced_n_threads) {
 		/* Maybe they turned GPU off; restore default CPU threads. */