aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src/emacsclient.c
diff options
context:
space:
mode:
authorKarl Chen2011-02-18 17:28:09 -0500
committerStefan Monnier2011-02-18 17:28:09 -0500
commitb166dcd8bb8bf236ca43f62175b636ff3965862c (patch)
tree56814f8b134ba0c934eb6fd81ffd16e8bded1234 /lib-src/emacsclient.c
parente697fcfc0121d210c7acb16e3306cf7c552cf633 (diff)
downloademacs-b166dcd8bb8bf236ca43f62175b636ff3965862c.tar.gz
emacs-b166dcd8bb8bf236ca43f62175b636ff3965862c.zip
* lib-src/emacsclient.c (main): Loop while `recv' return EINTR.
Diffstat (limited to 'lib-src/emacsclient.c')
-rw-r--r--lib-src/emacsclient.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index e5484b987e2..3670e68e3b3 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1708,10 +1708,21 @@ main (int argc, char **argv)
1708 fsync (1); 1708 fsync (1);
1709 1709
1710 /* Now, wait for an answer and print any messages. */ 1710 /* Now, wait for an answer and print any messages. */
1711 while (exit_status == EXIT_SUCCESS 1711 while (exit_status == EXIT_SUCCESS)
1712 && (rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0)
1713 { 1712 {
1714 char *p; 1713 char *p;
1714 do
1715 {
1716 errno = 0;
1717 rl = recv (emacs_socket, string, BUFSIZ, 0);
1718 }
1719 /* If we receive a signal (e.g. SIGWINCH, which we pass
1720 through to Emacs), on some OSes we get EINTR and must retry. */
1721 while (rl < 0 && errno == EINTR);
1722
1723 if (rl <= 0)
1724 break;
1725
1715 string[rl] = '\0'; 1726 string[rl] = '\0';
1716 1727
1717 p = string + strlen (string) - 1; 1728 p = string + strlen (string) - 1;