From 594947793c98e8e7f58f0e9b2cb962c9ef23adeb Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 20 Apr 2012 15:21:07 -0700 Subject: Add ability to quote responses as needed. It's up to the protocol to know when quotes are required. In the future the response should probably all be binary blobs with lengths. bug:6353048 Change-Id: I3f9b48ab0f4e6746d75cdc9c0c84d33f38f63661 --- libsysutils/src/SocketClient.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'libsysutils') diff --git a/libsysutils/src/SocketClient.cpp b/libsysutils/src/SocketClient.cpp index 1533120..4a1227f 100644 --- a/libsysutils/src/SocketClient.cpp +++ b/libsysutils/src/SocketClient.cpp @@ -107,6 +107,29 @@ int SocketClient::sendCode(int code) { return sendData(buf, sizeof(buf)); } +char *SocketClient::quoteArg(const char *arg) { + int len = strlen(arg); + char *result = (char *)malloc(len * 2 + 3); + char *current = result; + const char *end = arg + len; + + *(current++) = '"'; + while (arg < end) { + switch (*arg) { + case '\\': + case '"': + *(current++) = '\\'; // fallthrough + default: + *(current++) = *(arg++); + } + } + *(current++) = '"'; + *(current++) = '\0'; + result = (char *)realloc(result, current-result); + return result; +} + + int SocketClient::sendMsg(const char *msg) { if (mSocket < 0) { errno = EHOSTUNREACH; -- cgit v1.1