summaryrefslogtreecommitdiffstats
path: root/gatchat/gatserver.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-03-30 20:29:10 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-03-30 20:29:10 -0500
commit250c0c1ef9bb249a31c07a8c098e42714c00acec (patch)
treee1dd58735a210ca01540dbb58ba200fb8c469757 /gatchat/gatserver.c
parentd7e784d517f9c0a1cf1a131e457c94d44027cbfb (diff)
downloadofono-250c0c1ef9bb249a31c07a8c098e42714c00acec.tar.bz2
Simplify the send_info API
Diffstat (limited to 'gatchat/gatserver.c')
-rw-r--r--gatchat/gatserver.c38
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);
}