chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Quote responses. Unfortunately this is a major protocol change. I've
[disorder]
/
lib
/
eclient.c
diff --git
a/lib/eclient.c
b/lib/eclient.c
index 2bf86e9dff3192863aa72212c2dced66b7e1c733..2d85fb92233696dcb3122f72e9d169670b3a9c3e 100644
(file)
--- a/
lib/eclient.c
+++ b/
lib/eclient.c
@@
-819,13
+819,19
@@
static void stash_command(disorder_eclient *c,
/* Command support ***********************************************************/
/* Command support ***********************************************************/
-/* for commands with a
simple
string response */
+/* for commands with a
quoted
string response */
static void string_response_opcallback(disorder_eclient *c,
struct operation *op) {
D(("string_response_callback"));
if(c->rc / 100 == 2) {
static void string_response_opcallback(disorder_eclient *c,
struct operation *op) {
D(("string_response_callback"));
if(c->rc / 100 == 2) {
- if(op->completed)
- ((disorder_eclient_string_response *)op->completed)(op->v, c->line + 4);
+ if(op->completed) {
+ char **rr = split(c->line + 4, 0, SPLIT_QUOTES, 0, 0);
+
+ if(rr && *rr)
+ ((disorder_eclient_string_response *)op->completed)(op->v, *rr);
+ else
+ protocol_error(c, op, c->rc, "%s: %s", c->ident, c->line);
+ }
} else
protocol_error(c, op, c->rc, "%s: %s", c->ident, c->line);
}
} else
protocol_error(c, op, c->rc, "%s: %s", c->ident, c->line);
}