Mercurial > pidgin
diff src/protocols/gg/gg.c @ 2806:1ffac7cf4e94
[gaim-migrate @ 2819]
thanks Arkadiusz Miskiewicz:
Here is patch that adds ,,delete userlist from server'', updates
protocol.txt and makes small cleanup with freeing webdata + with
function names (all agg_ names are reserved for struct prpl
functions ;)
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 27 Nov 2001 22:54:32 +0000 |
| parents | 9123abd0db92 |
| children | d8e67ff8022f |
line wrap: on
line diff
--- a/src/protocols/gg/gg.c Tue Nov 27 22:46:03 2001 +0000 +++ b/src/protocols/gg/gg.c Tue Nov 27 22:54:32 2001 +0000 @@ -1,6 +1,6 @@ /* * gaim - Gadu-Gadu Protocol Plugin - * $Id: gg.c 2805 2001-11-26 21:22:56Z warmenhoven $ + * $Id: gg.c 2819 2001-11-27 22:54:32Z warmenhoven $ * * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> * @@ -79,6 +79,7 @@ #define AGG_HTTP_SEARCH 1 #define AGG_HTTP_USERLIST_IMPORT 2 #define AGG_HTTP_USERLIST_EXPORT 3 +#define AGG_HTTP_USERLIST_DELETE 4 #define UC_NORMAL 2 @@ -578,7 +579,6 @@ gd->sess->state = GG_STATE_CONNECTING_HTTP; gd->sess->check = GG_CHECK_WRITE; gd->sess->async = 1; - gd->sess->recv_left = 0; gd->sess->fd = proxy_connect(GG_APPMSG_HOST, GG_APPMSG_PORT, login_callback, gc); if (gd->sess->fd < 0) { @@ -667,7 +667,6 @@ if ((ptr = strstr(webdata, "query_results:")) == NULL || (ptr = strchr(ptr, '\n')) == NULL) { debug_printf("search_callback: pubdir result [%s]\n", webdata); - g_free(webdata); do_error_dialog(_("Couldn't get search results"), _("Gadu-Gadu Error")); return; } @@ -677,8 +676,6 @@ webdata_tbl = g_strsplit(ptr, "\n", AGG_PUBDIR_MAX_ENTRIES); - g_free(webdata); - j = 0; /* Parse array */ @@ -768,28 +765,25 @@ g_free(buf); } -static void agg_import_buddies_results(struct gaim_connection *gc, gchar *webdata) +static void import_buddies_server_results(struct gaim_connection *gc, gchar *webdata) { gchar *ptr; gchar **users_tbl; int i; if (strstr(webdata, "no_data:")) { - g_free(webdata); do_error_dialog(_("There is no Buddy List stored on server. Sorry!"), _("Gadu-Gadu Error")); return; } if ((ptr = strstr(webdata, "get_results:")) == NULL || (ptr = strchr(ptr, ':')) == NULL) { - debug_printf("agg_import_buddies_list: import buddies result [%s]\n", webdata); - g_free(webdata); + debug_printf("import_buddies_server_results: import buddies result [%s]\n", webdata); do_error_dialog(_("Couldn't Import Buddies List from Server"), _("Gadu-Gadu Error")); return; } ptr++; users_tbl = g_strsplit(ptr, "\n", AGG_PUBDIR_MAX_ENTRIES); - g_free(webdata); /* Parse array of Buddies List */ for (i = 0; users_tbl[i] != NULL; i++) { @@ -806,7 +800,7 @@ continue; } - debug_printf("uin: %s\n", name); + debug_printf("import_buddies_server_results: uin: %s\n", name); if (!find_buddy(gc, name)) { /* Default group if none specified on server */ gchar *group = g_strdup("Gadu-Gadu"); @@ -828,20 +822,30 @@ g_strfreev(users_tbl); } -static void agg_export_buddies_results(struct gaim_connection *gc, gchar *webdata) +static void export_buddies_server_results(struct gaim_connection *gc, gchar *webdata) { if (strstr(webdata, "put_success:")) { - g_free(webdata); do_error_dialog(_("Buddies List sucessfully transfered into Server"), _("Gadu-Gadu Information")); return; } - debug_printf("agg_export_buddies_results: webdata [%s]\n", webdata); - g_free(webdata); + debug_printf("export_buddies_server_results: webdata [%s]\n", webdata); do_error_dialog(_("Couldn't transfer Buddies List into Server"), _("Gadu-Gadu Error")); } +static void delete_buddies_server_results(struct gaim_connection *gc, gchar *webdata) +{ + if (strstr(webdata, "put_success:")) { + do_error_dialog(_("Buddies List sucessfully deleted from Server"), + _("Gadu-Gadu Information")); + return; + } + + debug_printf("delete_buddies_server_results: webdata [%s]\n", webdata); + do_error_dialog(_("Couldn't delete Buddies List from Server"), _("Gadu-Gadu Error")); +} + static void http_results(gpointer data, gint source, GaimInputCondition cond) { struct agg_http *hdata = data; @@ -890,10 +894,13 @@ search_results(gc, webdata); break; case AGG_HTTP_USERLIST_IMPORT: - agg_import_buddies_results(gc, webdata); + import_buddies_server_results(gc, webdata); break; case AGG_HTTP_USERLIST_EXPORT: - agg_export_buddies_results(gc, webdata); + export_buddies_server_results(gc, webdata); + break; + case AGG_HTTP_USERLIST_DELETE: + delete_buddies_server_results(gc, webdata); break; case AGG_HTTP_NONE: default: @@ -901,6 +908,7 @@ break; } + g_free(webdata); g_free(hdata); } @@ -956,7 +964,7 @@ hdata->inpa = gaim_input_add(source, GAIM_INPUT_READ, http_results, hdata); } -static void agg_import_buddies(struct gaim_connection *gc) +static void import_buddies_server(struct gaim_connection *gc) { struct agg_http *hi = g_new0(struct agg_http, 1); static char msg[AGG_BUF_LEN]; @@ -977,7 +985,7 @@ } } -static void agg_export_buddies(struct gaim_connection *gc) +static void export_buddies_server(struct gaim_connection *gc) { struct agg_http *he = g_new0(struct agg_http, 1); static char msg[AGG_BUF_LEN]; @@ -1023,6 +1031,27 @@ } } +static void delete_buddies_server(struct gaim_connection *gc) +{ + struct agg_http *he = g_new0(struct agg_http, 1); + static char msg[AGG_BUF_LEN]; + + he->gc = gc; + he->type = AGG_HTTP_USERLIST_DELETE; + he->form = AGG_PUBDIR_USERLIST_EXPORT_FORM; + he->host = GG_PUBDIR_HOST; + he->request = g_strdup_printf("FmNum=%s&Pass=%s&Delete=1", gc->username, gc->password); + + if (proxy_connect(GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, he) < 0) { + g_snprintf(msg, sizeof(msg), _("Deletion of Buddies List from Server failed (%s)"), + GG_PUBDIR_HOST); + do_error_dialog(msg, _("Gadu-Gadu Error")); + g_free(he->request); + g_free(he); + return; + } +} + static void agg_dir_search(struct gaim_connection *gc, char *first, char *middle, char *last, char *maiden, char *city, char *state, char *country, char *email) { @@ -1066,9 +1095,11 @@ if (!strcmp(action, _("Directory Search"))) { show_find_info(gc); } else if (!strcmp(action, _("Import Buddies List from Server"))) { - agg_import_buddies(gc); + import_buddies_server(gc); } else if (!strcmp(action, _("Export Buddies List to Server"))) { - agg_export_buddies(gc); + export_buddies_server(gc); + } else if (!strcmp(action, _("Delete Buddies List from Server"))) { + delete_buddies_server(gc); } } @@ -1079,6 +1110,7 @@ m = g_list_append(m, _("Directory Search")); m = g_list_append(m, _("Import Buddies List from Server")); m = g_list_append(m, _("Export Buddies List to Server")); + m = g_list_append(m, _("Delete Buddies List from Server")); return m; }
