Deleted Added
full compact
ttyin.c (60786) ttyin.c (89019)
1/*
2 * Copyright (C) 1984-2000 Mark Nudelman
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Less License, as specified in the README file.
6 *
7 * For more information about less, or for information on how to
8 * contact the author, see the README file.
9 */
10
11
12/*
13 * Routines dealing with getting input from the keyboard (i.e. from the user).
14 */
15
16#include "less.h"
1/*
2 * Copyright (C) 1984-2000 Mark Nudelman
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Less License, as specified in the README file.
6 *
7 * For more information about less, or for information on how to
8 * contact the author, see the README file.
9 */
10
11
12/*
13 * Routines dealing with getting input from the keyboard (i.e. from the user).
14 */
15
16#include "less.h"
17#if OS2
18#include "cmd.h"
19#include "pckeys.h"
20#endif
17#if MSDOS_COMPILER==WIN32C
18#include "windows.h"
19extern char WIN32getch();
20static DWORD console_mode;
21#endif
22
23static int tty;
24extern int sigs;

--- 12 unchanged lines hidden (view full) ---

37 sa.bInheritHandle = TRUE;
38 tty = (int) CreateFile("CONIN$", GENERIC_READ,
39 FILE_SHARE_READ, &sa,
40 OPEN_EXISTING, 0L, NULL);
41 GetConsoleMode((HANDLE)tty, &console_mode);
42 /* Make sure we get Ctrl+C events. */
43 SetConsoleMode((HANDLE)tty, ENABLE_PROCESSED_INPUT);
44#else
21#if MSDOS_COMPILER==WIN32C
22#include "windows.h"
23extern char WIN32getch();
24static DWORD console_mode;
25#endif
26
27static int tty;
28extern int sigs;

--- 12 unchanged lines hidden (view full) ---

41 sa.bInheritHandle = TRUE;
42 tty = (int) CreateFile("CONIN$", GENERIC_READ,
43 FILE_SHARE_READ, &sa,
44 OPEN_EXISTING, 0L, NULL);
45 GetConsoleMode((HANDLE)tty, &console_mode);
46 /* Make sure we get Ctrl+C events. */
47 SetConsoleMode((HANDLE)tty, ENABLE_PROCESSED_INPUT);
48#else
45#if MSDOS_COMPILER || OS2
49#if MSDOS_COMPILER
46 extern int fd0;
47 /*
48 * Open a new handle to CON: in binary mode
49 * for unbuffered keyboard read.
50 */
51 fd0 = dup(0);
52 close(0);
53 tty = open("CON", OPEN_READ);

--- 6 unchanged lines hidden (view full) ---

60#endif
61#else
62 /*
63 * Try /dev/tty.
64 * If that doesn't work, use file descriptor 2,
65 * which in Unix is usually attached to the screen,
66 * but also usually lets you read from the keyboard.
67 */
50 extern int fd0;
51 /*
52 * Open a new handle to CON: in binary mode
53 * for unbuffered keyboard read.
54 */
55 fd0 = dup(0);
56 close(0);
57 tty = open("CON", OPEN_READ);

--- 6 unchanged lines hidden (view full) ---

64#endif
65#else
66 /*
67 * Try /dev/tty.
68 * If that doesn't work, use file descriptor 2,
69 * which in Unix is usually attached to the screen,
70 * but also usually lets you read from the keyboard.
71 */
72#if OS2
73 /* The __open() system call translates "/dev/tty" to "con". */
74 tty = __open("/dev/tty", OPEN_READ);
75#else
68 tty = open("/dev/tty", OPEN_READ);
76 tty = open("/dev/tty", OPEN_READ);
77#endif
69 if (tty < 0)
70 tty = 2;
71#endif
72#endif
73}
74
75/*
76 * Close the keyboard.

--- 29 unchanged lines hidden (view full) ---

106 c = WIN32getch(tty);
107#else
108 c = getch();
109#endif
110 result = 1;
111 if (c == '\003')
112 return (READ_INTR);
113#else
78 if (tty < 0)
79 tty = 2;
80#endif
81#endif
82}
83
84/*
85 * Close the keyboard.

--- 29 unchanged lines hidden (view full) ---

115 c = WIN32getch(tty);
116#else
117 c = getch();
118#endif
119 result = 1;
120 if (c == '\003')
121 return (READ_INTR);
122#else
114#if OS2
115 {
116 static int scan = -1;
117 flush();
118 if (scan >= 0)
119 {
120 c = scan;
121 scan = -1;
122 } else
123 {
124 if ((c = _read_kbd(0, 1, 0)) == -1)
125 return (READ_INTR);
126 if (c == '\0')
127 {
128 /*
129 * Zero is usually followed by another byte,
130 * since certain keys send two bytes.
131 */
132 scan = _read_kbd(0, 0, 0);
133 }
134 }
135 result = 1;
136 }
137#else
138 result = iread(tty, &c, sizeof(char));
139 if (result == READ_INTR)
140 return (READ_INTR);
141 if (result < 0)
142 {
143 /*
144 * Don't call error() here,
145 * because error calls getchr!
146 */
147 quit(QUIT_ERROR);
148 }
149#endif
123 result = iread(tty, &c, sizeof(char));
124 if (result == READ_INTR)
125 return (READ_INTR);
126 if (result < 0)
127 {
128 /*
129 * Don't call error() here,
130 * because error calls getchr!
131 */
132 quit(QUIT_ERROR);
133 }
134#endif
150#endif
151 /*
152 * Various parts of the program cannot handle
153 * an input character of '\0'.
154 * If a '\0' was actually typed, convert it to '\340' here.
155 */
156 if (c == '\0')
157 c = '\340';
158 } while (result != 1);
159
160 return (c & 0377);
161}
135 /*
136 * Various parts of the program cannot handle
137 * an input character of '\0'.
138 * If a '\0' was actually typed, convert it to '\340' here.
139 */
140 if (c == '\0')
141 c = '\340';
142 } while (result != 1);
143
144 return (c & 0377);
145}