summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2018-12-02 23:11:09 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2018-12-02 23:55:01 -0800
commitf5090b91299cbd36901bef7b94aeef618b1bc6d8 (patch)
treed5dffd1d6cc0fb6acf8aa4b99baa41d0f121f4ec /lib-src
parent25a33aa2d173d933af294a7ea130960c720e1be5 (diff)
downloademacs-f5090b91299cbd36901bef7b94aeef618b1bc6d8.tar.gz
Use tcdrain, not fdatasync, to drain ttys
fdatasync is for storage devices, not ttys. * admin/merge-gnulib (GNULIB_MODULES): Remove fdatasync. * lib/fdatasync.c, m4/fdatasync.m4: Remove. * lib-src/Makefile.in (LIB_FDATASYNC): * src/Makefile.in (LIB_FDATASYNC): Remove. All uses removed. * lib-src/emacsclient.c [!DOS_NT]: Include <termios.h>, for tcdrain. * lib-src/emacsclient.c (flush_stdout): * src/sysdep.c (reset_sys_modes): On ttys, use tcdrain instead of fdatasync (except don’t use either function if DOS_NT). * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/Makefile.in6
-rw-r--r--lib-src/emacsclient.c8
2 files changed, 9 insertions, 5 deletions
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index ecb9208a1cd..00151933caa 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -204,8 +204,6 @@ LIBRESOLV=@LIBRESOLV@
LIBS_MAIL=@LIBS_MAIL@
## empty or -lrt or -lposix4 if HAVE_CLOCK_GETTIME
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
-## empty or -lrt or -lposix4 if HAVE_FDATASYNC
-LIB_FDATASYNC = @LIB_FDATASYNC@
## empty or -lwsock2 for MinGW
LIB_WSOCK32=@LIB_WSOCK32@
@@ -396,12 +394,12 @@ pop.o: ${srcdir}/pop.c ${srcdir}/pop.h ${srcdir}/../lib/min-max.h $(config_h)
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< \
- -DVERSION="\"${version}\"" $(NTLIB) $(LOADLIBES) $(LIB_FDATASYNC) \
+ -DVERSION="\"${version}\"" $(NTLIB) $(LOADLIBES) \
$(LIB_WSOCK32) $(LIBS_ECLIENT) -o $@
emacsclientw${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(CLIENTRES) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $(CLIENTRES) -mwindows $< \
- -DVERSION="\"${version}\"" $(LOADLIBES) $(LIB_FDATASYNC) \
+ -DVERSION="\"${version}\"" $(LOADLIBES) \
$(LIB_WSOCK32) $(LIBS_ECLIENT) -o $@
NTINC = ${srcdir}/../nt/inc
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index df44bc4087c..1c62c09451c 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -65,6 +65,10 @@ char *w32_getenv (const char *);
#endif /* !WINDOWSNT */
+#ifndef DOS_NT
+# include <termios.h>
+#endif
+
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
@@ -1722,8 +1726,10 @@ static void
flush_stdout (HSOCKET emacs_socket)
{
fflush (stdout);
- while (fdatasync (STDOUT_FILENO) != 0 && errno == EINTR)
+#ifndef DOS_NT
+ while (tcdrain (STDOUT_FILENO) != 0 && errno == EINTR)
act_on_signals (emacs_socket);
+#endif
}
int