<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From 84fdd943aee9fdf199f6668145246d3021527c29 Mon Sep 17 00:00:00 2001
From: Rosen Penev &lt;rosenp@gmail.com&gt;
Date: Sun, 11 Oct 2020 22:10:45 -0700
Subject: [PATCH] remove usleep

usleep is removed in POSIX 2008.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
---
 term.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

--- a/term.c
+++ b/term.c
@@ -33,6 +33,7 @@
 #include &lt;stdio.h&gt;
 #include &lt;string.h&gt;
 #include &lt;errno.h&gt;
+#include &lt;time.h&gt;
 #include &lt;unistd.h&gt;
 #include &lt;termios.h&gt;
 #ifdef USE_FLOCK
@@ -1588,6 +1589,8 @@ term_drain(int fd)
 
     rval = 0;
 
+    struct timespec s;
+
     do { /* dummy */
 
         r = term_find(fd);
@@ -1614,7 +1617,10 @@ term_drain(int fd)
            the port is immediately reconfigured, even after a
            drain. (I guess, drain does not wait for everything to
            actually be transitted on the wire). */
-        if ( DRAIN_DELAY ) usleep(DRAIN_DELAY);
+        if ( DRAIN_DELAY ) {
+            struct timespec d = {0, DRAIN_DELAY * 1000};
+            nanosleep(&amp;d, &amp;s);
+        }
 
     } while (0);
 
@@ -1627,6 +1633,7 @@ int
 term_fake_flush(int fd)
 {
     struct termios tio;
+    struct timespec s;
     int rval, i, r;
 
     rval = 0;
@@ -1666,7 +1673,10 @@ term_fake_flush(int fd)
             break;
         }
         /* see comment in term_drain */
-        if ( DRAIN_DELAY ) usleep(DRAIN_DELAY);
+        if ( DRAIN_DELAY ) {
+            struct timespec d = {0, DRAIN_DELAY * 1000};
+            nanosleep(&amp;d, &amp;s);
+        }
         /* Reset flow-control to original setting. */
         r = tcsetattr(fd, TCSANOW, &amp;term.currtermios[i]);
         if ( r &lt; 0 ) {
</pre></body></html>