libpurple/example/nullclient.c

changeset 39912
94c809048a88
parent 39865
35349ebfdd4a
child 40541
9ceb8d25d4d9
--- a/libpurple/example/nullclient.c	Wed Oct 02 03:36:46 2019 -0400
+++ b/libpurple/example/nullclient.c	Wed Oct 02 03:43:56 2019 -0400
@@ -192,16 +192,21 @@
 	}
 	g_list_free(list);
 
-	printf("Select the protocol [0-%d]: ", i-1);
-	res = fgets(name, sizeof(name), stdin);
-	if (!res) {
-		fprintf(stderr, "Failed to gets protocol selection.");
-		abort();
+	num = -1;
+	while (num < 0 || num >= i) {
+		printf("Select the protocol [0-%d]: ", i - 1);
+		res = fgets(name, sizeof(name), stdin);
+		if (!res) {
+			fprintf(stderr, "Failed to get protocol selection.");
+			abort();
+		}
+		if (sscanf(name, "%d", &num) != 1) {
+			num = -1;
+		}
 	}
-	if (sscanf(name, "%d", &num) == 1)
-		protocol = g_list_nth_data(names, num);
+	protocol = g_list_nth_data(names, num);
 	if (!protocol) {
-		fprintf(stderr, "Failed to gets protocol.");
+		fprintf(stderr, "Failed to get protocol.");
 		abort();
 	}
 

mercurial