| 388 } |
388 } |
| 389 |
389 |
| 390 static gboolean do_login(PurpleConnection *gc) { |
390 static gboolean do_login(PurpleConnection *gc) { |
| 391 char *buf, *tmp = NULL; |
391 char *buf, *tmp = NULL; |
| 392 char *server; |
392 char *server; |
| 393 const char *username, *realname; |
393 const char *nickname, *identname, *realname; |
| 394 struct irc_conn *irc = gc->proto_data; |
394 struct irc_conn *irc = gc->proto_data; |
| 395 const char *pass = purple_connection_get_password(gc); |
395 const char *pass = purple_connection_get_password(gc); |
| 396 #ifdef HAVE_CYRUS_SASL |
396 #ifdef HAVE_CYRUS_SASL |
| 397 const gboolean use_sasl = purple_account_get_bool(irc->account, "sasl", FALSE); |
397 const gboolean use_sasl = purple_account_get_bool(irc->account, "sasl", FALSE); |
| 398 #endif |
398 #endif |
| 410 } |
410 } |
| 411 g_free(buf); |
411 g_free(buf); |
| 412 } |
412 } |
| 413 |
413 |
| 414 realname = purple_account_get_string(irc->account, "realname", ""); |
414 realname = purple_account_get_string(irc->account, "realname", ""); |
| 415 username = purple_account_get_string(irc->account, "username", ""); |
415 identname = purple_account_get_string(irc->account, "username", ""); |
| 416 |
416 |
| 417 if (username == NULL || *username == '\0') { |
417 if (identname == NULL || *identname == '\0') { |
| 418 username = g_get_user_name(); |
418 identname = g_get_user_name(); |
| 419 } |
419 } |
| 420 |
420 |
| 421 if (username != NULL && strchr(username, ' ') != NULL) { |
421 if (identname != NULL && strchr(identname, ' ') != NULL) { |
| 422 tmp = g_strdup(username); |
422 tmp = g_strdup(identname); |
| 423 while ((buf = strchr(tmp, ' ')) != NULL) { |
423 while ((buf = strchr(tmp, ' ')) != NULL) { |
| 424 *buf = '_'; |
424 *buf = '_'; |
| 425 } |
425 } |
| 426 } |
426 } |
| 427 |
427 |
| 430 server = g_strdup_printf("0%s", irc->server); |
430 server = g_strdup_printf("0%s", irc->server); |
| 431 } else { |
431 } else { |
| 432 server = g_strdup(irc->server); |
432 server = g_strdup(irc->server); |
| 433 } |
433 } |
| 434 |
434 |
| 435 buf = irc_format(irc, "vvvv:", "USER", tmp ? tmp : username, "*", server, |
435 buf = irc_format(irc, "vvvv:", "USER", tmp ? tmp : identname, "*", server, |
| 436 strlen(realname) ? realname : IRC_DEFAULT_ALIAS); |
436 strlen(realname) ? realname : IRC_DEFAULT_ALIAS); |
| 437 g_free(tmp); |
437 g_free(tmp); |
| 438 g_free(server); |
438 g_free(server); |
| 439 if (irc_send(irc, buf) < 0) { |
439 if (irc_send(irc, buf) < 0) { |
| 440 g_free(buf); |
440 g_free(buf); |
| 441 return FALSE; |
441 return FALSE; |
| 442 } |
442 } |
| 443 g_free(buf); |
443 g_free(buf); |
| 444 username = purple_connection_get_display_name(gc); |
444 nickname = purple_connection_get_display_name(gc); |
| 445 buf = irc_format(irc, "vn", "NICK", username); |
445 buf = irc_format(irc, "vn", "NICK", nickname); |
| 446 irc->reqnick = g_strdup(username); |
446 irc->reqnick = g_strdup(nickname); |
| 447 irc->nickused = FALSE; |
447 irc->nickused = FALSE; |
| 448 if (irc_send(irc, buf) < 0) { |
448 if (irc_send(irc, buf) < 0) { |
| 449 g_free(buf); |
449 g_free(buf); |
| 450 return FALSE; |
450 return FALSE; |
| 451 } |
451 } |
| 1049 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
1049 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 1050 |
1050 |
| 1051 option = purple_account_option_bool_new(_("Auto-detect incoming UTF-8"), "autodetect_utf8", IRC_DEFAULT_AUTODETECT); |
1051 option = purple_account_option_bool_new(_("Auto-detect incoming UTF-8"), "autodetect_utf8", IRC_DEFAULT_AUTODETECT); |
| 1052 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
1052 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 1053 |
1053 |
| 1054 option = purple_account_option_string_new(_("Username"), "username", ""); |
1054 option = purple_account_option_string_new(_("Ident name"), "username", ""); |
| 1055 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
1055 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 1056 |
1056 |
| 1057 option = purple_account_option_string_new(_("Real name"), "realname", ""); |
1057 option = purple_account_option_string_new(_("Real name"), "realname", ""); |
| 1058 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
1058 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 1059 |
1059 |