[master] 7058d47 Use cli_readres for varnish responses in interactive mode
Martin Blix Grydeland
martin at varnish-cache.org
Fri Mar 11 15:09:41 CET 2011
commit 7058d471b586151e01a8167b04d5845edffa7fd5
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date: Fri Mar 11 15:07:26 2011 +0100
Use cli_readres for varnish responses in interactive mode
diff --git a/bin/varnishadm/varnishadm.c b/bin/varnishadm/varnishadm.c
index 628a995..4f3d013 100644
--- a/bin/varnishadm/varnishadm.c
+++ b/bin/varnishadm/varnishadm.c
@@ -193,7 +193,9 @@ pass(int sock)
{
struct pollfd fds[2];
char buf[1024];
- int i, n, m;
+ int i, n;
+ char *answer = NULL;
+ unsigned u, status;
#ifdef HAVE_LIBEDIT
_line_sock = sock;
@@ -214,21 +216,25 @@ pass(int sock)
i = poll(fds, 2, -1);
assert(i > 0);
if (fds[0].revents & POLLIN) {
- n = read(fds[0].fd, buf, sizeof buf);
- if (n == 0)
- RL_EXIT(0);
- if (n < 0) {
- perror("Read error reading CLI socket");
- RL_EXIT(1);
- }
- assert(n > 0);
/* Get rid of the prompt, kinda hackish */
- write(1, "\r \r", 13);
- m = write(1, buf, n);
- if (n != m) {
- perror("Write error writing stdout");
+ u = write(1, "\r \r", 13);
+ u = cli_readres(fds[0].fd, &status, &answer, timeout);
+ if (u) {
+ if (status == CLIS_COMMS)
+ RL_EXIT(0);
+ if (answer)
+ fprintf(stderr, "%s\n", answer);
RL_EXIT(1);
}
+
+ sprintf(buf, "%u\n", status);
+ u = write(1, buf, strlen(buf));
+ if (answer) {
+ u = write(1, answer, strlen(answer));
+ u = write(1, "\n", 1);
+ free(answer);
+ answer = NULL;
+ }
#ifdef HAVE_LIBEDIT
rl_forced_update_display();
#endif
More information about the varnish-commit
mailing list