xref: /original-bsd/usr.bin/more/ttyin.c (revision 94c97675)
1 /*
2  * Copyright (c) 1988 Mark Nudleman
3  * Copyright (c) 1988 Regents of the University of California.
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms are permitted
7  * provided that the above copyright notice and this paragraph are
8  * duplicated in all such forms and that any documentation,
9  * advertising materials, and other materials related to such
10  * distribution and use acknowledge that the software was developed
11  * by Mark Nudleman and the University of California, Berkeley.  The
12  * name of Mark Nudleman or the
13  * University may not be used to endorse or promote products derived
14  * from this software without specific prior written permission.
15  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18  */
19 
20 #ifndef lint
21 static char sccsid[] = "@(#)ttyin.c	5.2 (Berkeley) 07/25/88";
22 #endif /* not lint */
23 
24 /*
25  * Routines dealing with getting input from the keyboard (i.e. from the user).
26  */
27 
28 #include "less.h"
29 
30 static int tty;
31 
32 /*
33  * Open keyboard for input.
34  * (Just use file descriptor 2.)
35  */
36 	public void
37 open_getchr()
38 {
39 	tty = 2;
40 }
41 
42 /*
43  * Get a character from the keyboard.
44  */
45 	public int
46 getchr()
47 {
48 	char c;
49 	int result;
50 
51 	do
52 	{
53 		result = iread(tty, &c, 1);
54 		if (result == READ_INTR)
55 			return (READ_INTR);
56 		if (result < 0)
57 		{
58 			/*
59 			 * Don't call error() here,
60 			 * because error calls getchr!
61 			 */
62 			quit();
63 		}
64 	} while (result != 1);
65 	return (c & 0177);
66 }
67