Added some comments and changed a variable name to be more meaningful. No
fixes yet for the space bug, but should be coming soon.
diff --git a/util-linux/more.c b/util-linux/more.c
index 9741491..549a417 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -87,7 +87,7 @@
 extern int more_main(int argc, char **argv)
 {
 	int c, lines = 0, input = 0;
-	int next_page = 0;
+	int please_display_more_prompt = 0;
 	struct stat st;
 	FILE *file;
 
@@ -140,10 +140,10 @@
 
 #endif
 		while ((c = getc(file)) != EOF) {
-			if (next_page) {
+			if (please_display_more_prompt) {
 				int len = 0;
 
-				next_page = 0;
+				please_display_more_prompt = 0;
 				lines = 0;
 				len = fprintf(stdout, "--More-- ");
 				if (file != stdin) {
@@ -162,6 +162,11 @@
 					);
 
 				fflush(stdout);
+
+				/*
+				 * We've just displayed the "--More--" prompt, so now we need
+				 * to get input from the user.
+				 */
 #ifdef BB_FEATURE_USE_TERMIOS
 				input = getc(cin);
 #else
@@ -180,6 +185,17 @@
 #endif
 
 			}
+
+			/* 
+			 * There are two input streams to worry about here:
+			 *
+			 *     c : the character we are reading from the file being "mored"
+			 * input : a character received from the keyboard
+			 *
+			 * If we hit a newline in the _file_ stream, we want to test and
+			 * see if any characters have been hit in the _input_ stream. This
+			 * allows the user to quit while in the middle of a file.
+			 */
 			if (c == '\n') {
 				switch (input) {
 				case 'q':
@@ -187,12 +203,13 @@
 				case '\n':
 					/* increment by just one line if we are at 
 					 * the end of this line*/
-					next_page = 1;
+					please_display_more_prompt = 1;
 					break;
 				}
 				if (++lines == terminal_height)
-					next_page = 1;
+					please_display_more_prompt = 1;
 			}
+			/* If any key other than a return is hit, scroll by one page */
 			putc(c, stdout);
 		}
 		fclose(file);