X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgtk2%2Fmain.c;h=f2407c55d16fce565147a30cf7da8224fdd5145c;hb=0783994d160c04a1f01b6bf59b8430684ba64d11;hp=72e4680af67326c158a565f6e7911935c5ee9495;hpb=6329b4ba65d7ecb645c5a9f3fcb0905e85e6612c;p=doldaconnect.git diff --git a/clients/gtk2/main.c b/clients/gtk2/main.c index 72e4680..f2407c5 100644 --- a/clients/gtk2/main.c +++ b/clients/gtk2/main.c @@ -1192,22 +1192,27 @@ void cb_main_sdmenu_activate(GtkWidget *widget, gpointer data) void cb_main_fnaddr_activate(GtkWidget *widget, gpointer data) { int tag; - char *buf; struct dc_response *resp; + wchar_t **toks; if(dcfd < 0) { msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Not connected to DC server")); return; } - buf = sstrdup(gtk_entry_get_text(GTK_ENTRY(main_fnaddr))); - if(strchr(buf, ':') == NULL) + toks = dc_lexsexpr(icsmbstowcs((char *)gtk_entry_get_text(GTK_ENTRY(main_fnaddr)), "UTF-8", NULL)); + if(*toks == NULL) { - buf = srealloc(buf, strlen(buf) + 5); - strcat(buf, ":411"); + msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Illegal address entered")); + return; } - tag = dc_queuecmd(NULL, NULL, L"cnct", L"dc", L"%%s", buf, NULL); - free(buf); + if(wcschr(toks[0], L':') == NULL) + { + toks[0] = srealloc(toks[0], (wcslen(toks[0]) + 5) * sizeof(wchar_t)); + wcscat(toks[0], L":411"); + } + tag = dc_queuecmd(NULL, NULL, L"cnct", L"dc", L"%%a", toks, NULL); + dc_freewcsarr(toks); if((resp = dc_gettaggedrespsync(tag)) != NULL) { if(resp->code == 502)