aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editors/vi.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/editors/vi.c b/editors/vi.c
index cd64aacc9..cda87220f 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -151,6 +151,9 @@ static char *modifying_cmds; // cmds that modify text[]
151static char *last_search_pattern; // last pattern from a '/' or '?' search 151static char *last_search_pattern; // last pattern from a '/' or '?' search
152#endif 152#endif
153 153
154#ifdef __MINGW32__
155#include "cygwin_termios.h"
156#endif
154/* Moving biggest data to malloced space... */ 157/* Moving biggest data to malloced space... */
155struct globals { 158struct globals {
156 /* many references - keep near the top of globals */ 159 /* many references - keep near the top of globals */
@@ -2164,6 +2167,27 @@ static void catch_sig(int sig)
2164} 2167}
2165#endif /* FEATURE_VI_USE_SIGNALS */ 2168#endif /* FEATURE_VI_USE_SIGNALS */
2166 2169
2170#ifdef __MINGW32__
2171static int mysleep(int hund) // sleep for 'h' 1/100 seconds
2172{
2173 HANDLE h = GetStdHandle(STD_INPUT_HANDLE);
2174
2175 fflush(stdout);
2176
2177 /* In case of cygwin, it's a named pipe and won't work with WaitForSingleObject */
2178 if (is_cygwin_tty(0) || !h) {
2179 if (hund)
2180 Sleep(hund*10);
2181 return 0;
2182 }
2183 else {
2184 DWORD ret;
2185
2186 ret = WaitForSingleObject(h, hund*10);
2187 return ret != WAIT_TIMEOUT;
2188 }
2189}
2190#else
2167static int mysleep(int hund) // sleep for 'h' 1/100 seconds 2191static int mysleep(int hund) // sleep for 'h' 1/100 seconds
2168{ 2192{
2169 fd_set rfds; 2193 fd_set rfds;
@@ -2178,6 +2202,7 @@ static int mysleep(int hund) // sleep for 'h' 1/100 seconds
2178 select(1, &rfds, NULL, NULL, &tv); 2202 select(1, &rfds, NULL, NULL, &tv);
2179 return FD_ISSET(0, &rfds); 2203 return FD_ISSET(0, &rfds);
2180} 2204}
2205#endif
2181 2206
2182#define readbuffer bb_common_bufsiz1 2207#define readbuffer bb_common_bufsiz1
2183 2208