static void wr_msg_200(wi_array_t *arguments) { wi_string_t *password; double protocol; protocol = wi_string_double(wr_protocol_version_string); wr_server = wr_server_init(wr_server_alloc()); wr_server->version = wi_retain(WI_ARRAY(arguments, 0)); wr_server->protocol = wi_string_double(WI_ARRAY(arguments, 1)); wr_server->name = wi_retain(WI_ARRAY(arguments, 2)); wr_server->description = wi_retain(WI_ARRAY(arguments, 3)); wr_server->startdate = wi_date_init_with_rfc3339_string(wi_date_alloc(), WI_ARRAY(arguments, 4)); wr_server->files = wi_string_uint32(WI_ARRAY(arguments, 5)); wr_server->size = wi_string_uint64(WI_ARRAY(arguments, 6)); wr_draw_divider(); if(!wr_logged_in) { if(wr_server->protocol > protocol) { wr_wprintf_prefix(wr_console_window, WI_STR("Server protocol version %.1f may not be fully compatible with client protocol version %.1f"), wr_server->protocol, protocol); } wr_send_command(WI_STR("CLIENT %#@"), wr_client_version_string); wr_send_command(WI_STR("NICK %#@"), wr_nick); wr_send_command(WI_STR("STATUS %#@"), wr_status); wr_send_command(WI_STR("ICON %u%c%#@"), 0, WR_FIELD_SEPARATOR, wr_icon); wr_send_command(WI_STR("USER %#@"), wr_login ? wr_login : WI_STR("guest")); if(wr_password && wi_string_length(wr_password) > 0) password = wi_string_sha1(wr_password); else password = NULL; wr_send_command(WI_STR("PASS %#@"), password); wr_send_command(WI_STR("WHO %u"), 1); wr_logged_in = true; } }
wi_date_t * wi_date_with_rfc3339_string(wi_string_t *string) { return wi_autorelease(wi_date_init_with_rfc3339_string(wi_date_alloc(), string)); }