summaryrefslogtreecommitdiff
path: root/server_communication.c
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2010-08-27 22:52:34 +0200
committerJon Bergli Heier <snakebite@jvnv.net>2010-08-27 22:52:34 +0200
commitf8d1c20542111b9f359f4362638423ab23ed81c5 (patch)
tree9292b69c85ce54080cd71c4ebc48f1ec9873cb89 /server_communication.c
parent6bb47a8f11ee8f6dff980f60758c4df48eeb9455 (diff)
Split find into findl and findr, for local and remote search, respectively.
'find' without any suffix implicates a findl+findr search.
Diffstat (limited to 'server_communication.c')
-rw-r--r--server_communication.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/server_communication.c b/server_communication.c
index 64de9dc..448ebbf 100644
--- a/server_communication.c
+++ b/server_communication.c
@@ -71,17 +71,16 @@ gboolean server_ping(struct server *server) {
return result;
}
-gchar **server_find(struct server *server, const gchar *type, const gchar *str) {
+static gchar **server_get_stringlist(struct server *server, const gchar *cmd) {
GSocket *socket = server_connect(server);
if(socket == NULL) {
return NULL;
}
- gchar buffer[0x400];
- g_snprintf(buffer, 0x400, "findr %s %s\nexit\n", type, str);
- g_socket_send(socket, buffer, strlen(buffer), NULL, NULL);
+ g_socket_send(socket, cmd, strlen(cmd), NULL, NULL);
+ gchar buffer[0x400];
gssize size;
GString *string = g_string_new(NULL);
while((size = g_socket_receive(socket, buffer, 0x400, NULL, NULL)) > 0) {
@@ -95,3 +94,11 @@ gchar **server_find(struct server *server, const gchar *type, const gchar *str)
return data;
}
+
+gchar **server_find(struct server *server, const gchar *type, const gchar *str) {
+ gchar *cmd = g_strdup_printf("findl %s %s\nexit\n", type, str);
+ gchar **data = server_get_stringlist(server, cmd);
+ g_free(cmd);
+
+ return data;
+}