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