Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Handle EINTR while reading a user's input.
Vsevolod Stakhov committed 11 years ago
commit f2b85145c2454c65bbd96ac1a0266ed64f59a04a
parent a20caba
1 file changed +11 -5
modified src/utils.c
@@ -103,9 +103,9 @@ vquery_yesno(bool deft, const char *msg, va_list ap)
	if (yes)
		return (true);

-
	for (;;) {
-
		pkg_vprintf(msg, ap);
+
	pkg_vprintf(msg, ap);

+
	for (;;) {
		if ((linelen = getline(&line, &linecap, stdin)) != -1) {

			if (linelen == 1 && line[0] == '\n') {
@@ -132,11 +132,17 @@ vquery_yesno(bool deft, const char *msg, va_list ap)
				}
			}
			printf("Please type 'Y[es]' or 'N[o]' to make selection\n");
+
			pkg_vprintf(msg, ap);
		}
		else {
-
			/* Assume EOF as false */
-
			r = false;
-
			break;
+
			if (errno == EINTR) {
+
				continue;
+
			}
+
			else {
+
				/* Assume EOF as false */
+
				r = false;
+
				break;
+
			}
		}
	}