diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-03-30 20:29:10 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-03-30 20:29:10 -0500 |
commit | 250c0c1ef9bb249a31c07a8c098e42714c00acec (patch) | |
tree | e1dd58735a210ca01540dbb58ba200fb8c469757 /gatchat/gatserver.c | |
parent | d7e784d517f9c0a1cf1a131e457c94d44027cbfb (diff) | |
download | ofono-250c0c1ef9bb249a31c07a8c098e42714c00acec.tar.bz2 |
Simplify the send_info API
Diffstat (limited to 'gatchat/gatserver.c')
-rw-r--r-- | gatchat/gatserver.c | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index e04e0d21..4904adf6 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -169,7 +169,7 @@ static void send_result_common(GAtServer *server, const char *result) { struct v250_settings v250 = server->v250; - char buf[MAX_TEXT_SIZE]; + char buf[MAX_TEXT_SIZE + 1]; char t = v250.s3; char r = v250.s4; unsigned int len; @@ -180,14 +180,15 @@ static void send_result_common(GAtServer *server, const char *result) if (result == NULL) return; + if (strlen(result) > 2048) + return; + if (v250.is_v1) - len = snprintf(buf, sizeof(buf), "%c%c%s%c%c", t, r, result, - t, r); + len = sprintf(buf, "%c%c%s%c%c", t, r, result, t, r); else - len = snprintf(buf, sizeof(buf), "%s%c", result, - t); + len = sprintf(buf, "%s%c", result, t); - send_common(server, buf, MIN(len, sizeof(buf)-1)); + send_common(server, buf, len); } void g_at_server_send_final(GAtServer *server, GAtServerResult result) @@ -233,32 +234,21 @@ void g_at_server_send_unsolicited(GAtServer *server, const char *result) send_result_common(server, result); } -void g_at_server_send_info(GAtServer *server, const char *info) -{ - send_result_common(server, info); -} - -void g_at_server_send_info_lines(GAtServer *server, GSList *text) +void g_at_server_send_info(GAtServer *server, const char *line, gboolean last) { - char buf[MAX_TEXT_SIZE]; + char buf[MAX_TEXT_SIZE + 1]; char t = server->v250.s3; char r = server->v250.s4; unsigned int len; - GSList *l; - if (!text) + if (strlen(line) > 2048) return; - for (l = text; l; l = l->next) { - char *line = l->data; - if (!line) - return; - - len = snprintf(buf, sizeof(buf), "%c%c%s", t, r, line); - send_common(server, buf, MIN(len, sizeof(buf)-1)); - } + if (last) + len = sprintf(buf, "%c%c%s%c%c", t, r, line, t, r); + else + len = sprintf(buf, "%c%c%s", t, r, line); - len = snprintf(buf, sizeof(buf), "%c%c", t, r); send_common(server, buf, len); } |