diff options
| author | Wolfgang Schnerring | 2010-10-02 20:00:01 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-10-02 20:00:01 -0400 |
| commit | 3ecb8d931af361c043e240a17b18e4f3bcaf0d30 (patch) | |
| tree | 86c8de6adfc1ba5e94fde9ae360ee594f520e656 | |
| parent | 986d19df1f2a63d8aa443f2132a6dced3bb9a4a4 (diff) | |
| download | emacs-3ecb8d931af361c043e240a17b18e4f3bcaf0d30.tar.gz emacs-3ecb8d931af361c043e240a17b18e4f3bcaf0d30.zip | |
* emacsclient.c (main): Return EXIT_FAILURE if Emacs sends us an error string
(Bug#6963).
| -rw-r--r-- | lib-src/ChangeLog | 5 | ||||
| -rw-r--r-- | lib-src/emacsclient.c | 13 |
2 files changed, 15 insertions, 3 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 93d5e51d285..8c8671af2fc 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-10-02 Wolfgang Schnerring <wosc@wosc.de> (tiny change) | ||
| 2 | |||
| 3 | * emacsclient.c (main): Return EXIT_FAILURE if Emacs sends us an | ||
| 4 | error string (Bug#6963). | ||
| 5 | |||
| 1 | 2010-10-02 Juanma Barranquero <lekktu@gmail.com> | 6 | 2010-10-02 Juanma Barranquero <lekktu@gmail.com> |
| 2 | 7 | ||
| 3 | * makefile.w32-in (tags): Remove target. | 8 | * makefile.w32-in (tags): Remove target. |
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 4d8a835e56d..d3d6f1cacd8 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c | |||
| @@ -1499,6 +1499,7 @@ main (int argc, char **argv) | |||
| 1499 | char *cwd, *str; | 1499 | char *cwd, *str; |
| 1500 | char string[BUFSIZ+1]; | 1500 | char string[BUFSIZ+1]; |
| 1501 | int null_socket_name, null_server_file, start_daemon_if_needed; | 1501 | int null_socket_name, null_server_file, start_daemon_if_needed; |
| 1502 | int exit_status = EXIT_SUCCESS; | ||
| 1502 | 1503 | ||
| 1503 | main_argv = argv; | 1504 | main_argv = argv; |
| 1504 | progname = argv[0]; | 1505 | progname = argv[0]; |
| @@ -1698,7 +1699,8 @@ main (int argc, char **argv) | |||
| 1698 | fsync (1); | 1699 | fsync (1); |
| 1699 | 1700 | ||
| 1700 | /* Now, wait for an answer and print any messages. */ | 1701 | /* Now, wait for an answer and print any messages. */ |
| 1701 | while ((rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0) | 1702 | while (exit_status == EXIT_SUCCESS |
| 1703 | && (rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0) | ||
| 1702 | { | 1704 | { |
| 1703 | char *p; | 1705 | char *p; |
| 1704 | string[rl] = '\0'; | 1706 | string[rl] = '\0'; |
| @@ -1737,6 +1739,7 @@ main (int argc, char **argv) | |||
| 1737 | printf ("\n"); | 1739 | printf ("\n"); |
| 1738 | fprintf (stderr, "*ERROR*: %s", str); | 1740 | fprintf (stderr, "*ERROR*: %s", str); |
| 1739 | needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; | 1741 | needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; |
| 1742 | exit_status = EXIT_FAILURE; | ||
| 1740 | } | 1743 | } |
| 1741 | #ifdef SIGSTOP | 1744 | #ifdef SIGSTOP |
| 1742 | else if (strprefix ("-suspend ", string)) | 1745 | else if (strprefix ("-suspend ", string)) |
| @@ -1754,7 +1757,8 @@ main (int argc, char **argv) | |||
| 1754 | if (needlf) | 1757 | if (needlf) |
| 1755 | printf ("\n"); | 1758 | printf ("\n"); |
| 1756 | printf ("*ERROR*: Unknown message: %s", string); | 1759 | printf ("*ERROR*: Unknown message: %s", string); |
| 1757 | needlf = string[0] == '\0' ? needlf : string[strlen (string) - 1] != '\n'; | 1760 | needlf = string[0] |
| 1761 | == '\0' ? needlf : string[strlen (string) - 1] != '\n'; | ||
| 1758 | } | 1762 | } |
| 1759 | } | 1763 | } |
| 1760 | 1764 | ||
| @@ -1763,8 +1767,11 @@ main (int argc, char **argv) | |||
| 1763 | fflush (stdout); | 1767 | fflush (stdout); |
| 1764 | fsync (1); | 1768 | fsync (1); |
| 1765 | 1769 | ||
| 1770 | if (rl < 0) | ||
| 1771 | exit_status = EXIT_FAILURE; | ||
| 1772 | |||
| 1766 | CLOSE_SOCKET (emacs_socket); | 1773 | CLOSE_SOCKET (emacs_socket); |
| 1767 | return EXIT_SUCCESS; | 1774 | return exit_status; |
| 1768 | } | 1775 | } |
| 1769 | 1776 | ||
| 1770 | #endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ | 1777 | #endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */ |