Changeset 4399
- Timestamp:
- 10/03/06 10:02:09 (2 years ago)
- Files:
-
- wire/trunk/wire/chats.c (modified) (11 diffs)
- wire/trunk/wire/chats.h (modified) (2 diffs)
- wire/trunk/wire/client.c (modified) (2 diffs)
- wire/trunk/wire/client.h (modified) (1 diff)
- wire/trunk/wire/commands.c (modified) (6 diffs)
- wire/trunk/wire/files.c (modified) (5 diffs)
- wire/trunk/wire/files.h (modified) (1 diff)
- wire/trunk/wire/ignores.c (modified) (7 diffs)
- wire/trunk/wire/ignores.h (modified) (2 diffs)
- wire/trunk/wire/main.c (modified) (6 diffs)
- wire/trunk/wire/main.h (modified) (1 diff)
- wire/trunk/wire/server.c (modified) (1 diff)
- wire/trunk/wire/server.h (modified) (1 diff)
- wire/trunk/wire/terminal.c (modified) (5 diffs)
- wire/trunk/wire/terminal.h (modified) (2 diffs)
- wire/trunk/wire/transfers.c (modified) (9 diffs)
- wire/trunk/wire/transfers.h (modified) (2 diffs)
- wire/trunk/wire/users.c (modified) (3 diffs)
- wire/trunk/wire/users.h (modified) (1 diff)
- wire/trunk/wire/version.c (modified) (1 diff)
- wire/trunk/wire/version.h (modified) (1 diff)
- wire/trunk/wire/windows.c (modified) (15 diffs)
- wire/trunk/wire/windows.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wire/trunk/wire/chats.c
r4385 r4399 44 44 45 45 wr_cid_t cid; 46 wi_ list_t *users_list;46 wi_array_t *users_array; 47 47 wi_hash_t *users_hash; 48 48 }; … … 72 72 73 73 74 void wr_ init_chats(void) {74 void wr_chats_init(void) { 75 75 wr_chat_runtime_id = wi_runtime_register_class(&wr_chat_runtime_class); 76 76 … … 83 83 84 84 85 void wr_c lear_chats(void) {85 void wr_chats_clear(void) { 86 86 wi_hash_remove_all_data(wr_chats); 87 87 wr_chat_remove_all_users(wr_public_chat); … … 125 125 126 126 wr_chat_t * wr_chat_init(wr_chat_t *chat) { 127 chat->users_ list = wi_list_init(wi_list_alloc());127 chat->users_array = wi_array_init(wi_array_alloc()); 128 128 chat->users_hash = wi_hash_init(wi_hash_alloc()); 129 129 … … 151 151 wr_chat_t *chat = instance; 152 152 153 wi_release(chat->users_ list);153 wi_release(chat->users_array); 154 154 wi_release(chat->users_hash); 155 155 } … … 173 173 chat, 174 174 chat->cid, 175 chat->users_ list);175 chat->users_array); 176 176 } 177 177 … … 202 202 203 203 204 wi_ list_t * wr_chat_users(wr_chat_t *chat) {205 return chat->users_ list;204 wi_array_t * wr_chat_users(wr_chat_t *chat) { 205 return chat->users_array; 206 206 } 207 207 … … 211 211 212 212 void wr_chat_add_user(wr_chat_t *chat, wr_user_t *user) { 213 wi_ list_append_data(chat->users_list, user);213 wi_array_add_data(chat->users_array, user); 214 214 wi_hash_set_data_for_key(chat->users_hash, user, wi_number_with_int32(wr_user_id(user))); 215 215 } … … 218 218 219 219 void wr_chat_remove_user(wr_chat_t *chat, wr_user_t *user) { 220 wi_ list_remove_data(chat->users_list, user);220 wi_array_remove_data(chat->users_array, user); 221 221 wi_hash_remove_data_for_key(chat->users_hash, wi_number_with_int32(wr_user_id(user))); 222 222 } … … 225 225 226 226 void wr_chat_remove_all_users(wr_chat_t *chat) { 227 wi_ list_remove_all_data(chat->users_list);227 wi_array_remove_all_data(chat->users_array); 228 228 wi_hash_remove_all_data(chat->users_hash); 229 229 } … … 247 247 free(cname); 248 248 249 enumerator = wi_ list_data_enumerator(chat->users_list);249 enumerator = wi_array_data_enumerator(chat->users_array); 250 250 251 251 while((user = wi_enumerator_next_data(enumerator))) { wire/trunk/wire/chats.h
r4385 r4399 37 37 38 38 39 void wr_ init_chats(void);40 void wr_c lear_chats(void);39 void wr_chats_init(void); 40 void wr_chats_clear(void); 41 41 42 42 void wr_chats_add_chat(wr_chat_t *); … … 52 52 53 53 wr_cid_t wr_chat_id(wr_chat_t *); 54 wi_ list_t * wr_chat_users(wr_chat_t *);54 wi_array_t * wr_chat_users(wr_chat_t *); 55 55 56 56 void wr_chat_add_user(wr_chat_t *, wr_user_t *); wire/trunk/wire/client.c
r4393 r4399 156 156 157 157 158 void wr_ init_client(void) {158 void wr_client_init(void) { 159 159 int options; 160 160 … … 268 268 wi_release(wr_address); 269 269 270 wr_ clear_windows();271 wr_c lear_chats();272 wr_ clear_files();273 wr_ clear_transfers();274 wr_ clear_users();270 wr_windows_clear(); 271 wr_chats_clear(); 272 wr_files_clear(); 273 wr_transfers_clear(); 274 wr_users_clear(); 275 275 276 276 wr_connected = false; wire/trunk/wire/client.h
r4385 r4399 50 50 51 51 52 void wr_ init_client(void);52 void wr_client_init(void); 53 53 54 54 void wr_connect(wi_string_t *, unsigned int, wi_string_t *, wi_string_t *); wire/trunk/wire/commands.c
r4388 r4399 823 823 wr_ignore_string(ignore)); 824 824 825 wi_ list_append_data(wr_ignores, ignore);825 wi_array_add_data(wr_ignores, ignore); 826 826 wi_release(ignore); 827 827 } else { … … 832 832 wr_printf_prefix(WI_STR("Ignores:")); 833 833 834 if(wi_ list_count(wr_ignores) == 0) {834 if(wi_array_count(wr_ignores) == 0) { 835 835 wr_printf_block(WI_STR("(none)")); 836 836 } else { 837 enumerator = wi_ list_data_enumerator(wr_ignores);837 enumerator = wi_array_data_enumerator(wr_ignores); 838 838 839 839 while((ignore = wi_enumerator_next_data(enumerator))) … … 944 944 945 945 static void wr_cmd_ls(wi_array_t *arguments) { 946 wr_ clear_files();946 wr_files_clear(); 947 947 wr_ls_state = WR_LS_LISTING; 948 948 … … 1411 1411 1412 1412 static void wr_cmd_search(wi_array_t *arguments) { 1413 wr_ clear_files();1413 wr_files_clear(); 1414 1414 1415 1415 wr_send_command(WI_STR("SEARCH %#@"), WI_ARRAY(arguments, 0)); … … 1683 1683 wr_ignore_string(ignore)); 1684 1684 1685 wi_ list_remove_data(wr_ignores, ignore);1685 wi_array_remove_data(wr_ignores, ignore); 1686 1686 } else { 1687 1687 wr_printf_prefix(WI_STR("No ignore matching \"%@\""), string); … … 1690 1690 wr_printf_prefix(WI_STR("Ignores:")); 1691 1691 1692 if(wi_ list_count(wr_ignores) == 0) {1692 if(wi_array_count(wr_ignores) == 0) { 1693 1693 wr_printf_block(WI_STR("(none)")); 1694 1694 } else { 1695 enumerator = wi_ list_data_enumerator(wr_ignores);1695 enumerator = wi_array_data_enumerator(wr_ignores); 1696 1696 1697 1697 while((ignore = wi_enumerator_next_data(enumerator))) wire/trunk/wire/files.c
r4384 r4399 88 88 89 89 90 void wr_ init_files(void) {90 void wr_files_init(void) { 91 91 wr_file_runtime_id = wi_runtime_register_class(&wr_file_runtime_class); 92 92 … … 98 98 99 99 100 void wr_ clear_files(void) {100 void wr_files_clear(void) { 101 101 wi_array_remove_all_data(wr_files); 102 102 … … 129 129 index = 0; 130 130 131 wr_ clear_files();131 wr_files_clear(); 132 132 wr_send_command(WI_STR("LIST %@"), full_path); 133 133 wr_runloop_run_for_socket(wr_socket, 3.0, 411); … … 267 267 array = wi_array_init_with_capacity(wi_array_alloc(), gl.gl_pathc); 268 268 269 for(i = 0; i < (uint32_t)gl.gl_pathc; i++)269 for(i = 0; i < gl.gl_pathc; i++) 270 270 wi_array_add_data(array, wi_string_with_cstring(gl.gl_pathv[i])); 271 271 … … 286 286 287 287 wr_ls_state = WR_LS_GLOBBING; 288 wr_ clear_files();288 wr_files_clear(); 289 289 wr_send_command(WI_STR("LIST %@"), dir->path); 290 290 wr_runloop_run_for_socket(wr_socket, 3.0, 411); wire/trunk/wire/files.h
r4384 r4399 57 57 58 58 59 void wr_ init_files(void);60 void wr_ clear_files(void);59 void wr_files_init(void); 60 void wr_files_clear(void); 61 61 62 62 char * wr_readline_filename_generator(const char *, int); wire/trunk/wire/ignores.c
r4384 r4399 48 48 49 49 50 wi_ list_t *wr_ignores;50 wi_array_t *wr_ignores; 51 51 52 52 static wi_runtime_id_t wr_ignore_runtime_id = WI_RUNTIME_ID_NULL; … … 61 61 62 62 63 void wr_i nit_ignores(void) {63 void wr_ignores_init(void) { 64 64 wr_ignore_runtime_id = wi_runtime_register_class(&wr_ignore_runtime_class); 65 65 66 wr_ignores = wi_ list_init(wi_list_alloc());66 wr_ignores = wi_array_init(wi_array_alloc()); 67 67 } 68 68 … … 73 73 wr_ignore_t *ignore; 74 74 75 enumerator = wi_ list_data_enumerator(wr_ignores);75 enumerator = wi_array_data_enumerator(wr_ignores); 76 76 77 77 while((ignore = wi_enumerator_next_data(enumerator))) { … … 88 88 89 89 char * wr_readline_ignore_generator(const char *text, int state) { 90 static wi_list_node_t *node;90 static uint32_t index; 91 91 wi_string_t *name; 92 92 wr_ignore_t *ignore; 93 char *match = NULL;93 uint32_t count; 94 94 95 95 if(state == 0) 96 node = wi_list_first_node(wr_ignores);96 index = 0; 97 97 98 98 name = wi_string_with_cstring(text); 99 100 while(node) {101 ignore = wi_list_node_data(node);102 node = wi_list_node_next_node(node);99 count = wi_array_count(wr_ignores); 100 101 while(index < count) { 102 ignore = WI_ARRAY(wr_ignores, index++); 103 103 104 if(wi_string_index_of_string(ignore->string, name, WI_STRING_SMART_CASE_INSENSITIVE) == 0) { 105 match = strdup(wi_string_cstring(ignore->string)); 106 107 break; 108 } 109 } 110 111 return match; 104 if(wi_string_index_of_string(ignore->string, name, WI_STRING_SMART_CASE_INSENSITIVE) == 0) 105 return strdup(wi_string_cstring(ignore->string)); 106 } 107 108 return NULL; 112 109 } 113 110 … … 147 144 wr_ignore_t *ignore; 148 145 149 if(wi_ list_count(wr_ignores) > 0) {150 ignore = wi_ list_last_data(wr_ignores);146 if(wi_array_count(wr_ignores) > 0) { 147 ignore = wi_array_last_data(wr_ignores); 151 148 152 149 return ignore->iid + 1; … … 184 181 wr_ignore_t *ignore, *value = NULL; 185 182 186 enumerator = wi_ list_data_enumerator(wr_ignores);183 enumerator = wi_array_data_enumerator(wr_ignores); 187 184 188 185 while((ignore = wi_enumerator_next_data(enumerator))) { … … 203 200 wr_ignore_t *ignore; 204 201 205 enumerator = wi_ list_data_enumerator(wr_ignores);202 enumerator = wi_array_data_enumerator(wr_ignores); 206 203 207 204 while((ignore = wi_enumerator_next_data(enumerator))) { wire/trunk/wire/ignores.h
r4028 r4399 35 35 36 36 37 void wr_i nit_ignores(void);37 void wr_ignores_init(void); 38 38 wi_boolean_t wr_is_ignored(wi_string_t *); 39 39 … … 51 51 52 52 53 extern wi_ list_t *wr_ignores;53 extern wi_array_t *wr_ignores; 54 54 55 55 #endif /* WR_IGNORES_H */ wire/trunk/wire/main.c
r4393 r4399 52 52 static void wr_version(void); 53 53 54 static void wr_ init_signals(void);54 static void wr_signals_init(void); 55 55 static void wr_sig_winch(int); 56 56 static void wr_sig_int(int); … … 85 85 86 86 /* init core systems */ 87 wr_ init_version();87 wr_version_init(); 88 88 wr_start_date = wi_date_init(wi_date_alloc()); 89 89 … … 129 129 130 130 /* init subsystems */ 131 wr_ init_signals();132 wr_ init_terminal();133 wr_ init_readline();134 wr_ init_chats();135 wr_ init_windows();136 wr_ init_client();137 wr_ init_runloop();138 wr_ init_users();139 wr_i nit_ignores();140 wr_ init_files();141 wr_ init_transfers();142 wr_ init_server();131 wr_signals_init(); 132 wr_terminal_init(); 133 wr_readline_init(); 134 wr_chats_init(); 135 wr_windows_init(); 136 wr_client_init(); 137 wr_runloop_init(); 138 wr_users_init(); 139 wr_ignores_init(); 140 wr_files_init(); 141 wr_transfers_init(); 142 wr_servers_init(); 143 143 144 144 /* open default settings */ … … 179 179 180 180 static void wr_cleanup(void) { 181 wr_ close_terminal();182 wr_ close_readline();181 wr_terminal_close(); 182 wr_readline_close(); 183 183 } 184 184 … … 217 217 #pragma mark - 218 218 219 static void wr_ init_signals(void) {219 static void wr_signals_init(void) { 220 220 signal(SIGPIPE, SIG_IGN); 221 221 signal(SIGWINCH, wr_sig_winch); … … 300 300 #pragma mark - 301 301 302 void wr_ init_runloop(void) {302 void wr_runloop_init(void) { 303 303 wr_runloop_sockets = wi_array_init(wi_array_alloc()); 304 304 } wire/trunk/wire/main.h
r3566 r4399 52 52 char * wr_readline_bookmark_generator(const char *, int); 53 53 54 void wr_ init_runloop(void);54 void wr_runloop_init(void); 55 55 56 56 void wr_runloop_add_socket(wi_socket_t *, wr_runloop_callback_func_t *); wire/trunk/wire/server.c
r4028 r4399 47 47 48 48 49 void wr_ init_server(void) {49 void wr_servers_init(void) { 50 50 wr_server_runtime_id = wi_runtime_register_class(&wr_server_runtime_class); 51 51 } wire/trunk/wire/server.h
r3566 r4399 44 44 45 45 46 void wr_ init_server(void);46 void wr_servers_init(void); 47 47 48 48 wr_server_t * wr_server_alloc(void); wire/trunk/wire/terminal.c
r4373 r4399 62 62 63 63 64 void wr_ init_terminal(void) {64 void wr_terminal_init(void) { 65 65 wi_size_t size; 66 66 … … 74 74 75 75 76 void wr_ close_terminal(void) {76 void wr_terminal_close(void) { 77 77 wi_terminal_close(wr_terminal); 78 78 } … … 91 91 92 92 wi_terminal_set_size(wr_terminal, size); 93 wi_terminal_set_scroll(wr_terminal, wi_make_range(1 + wi_ list_count(wr_transfers), size.height - 3));93 wi_terminal_set_scroll(wr_terminal, wi_make_range(1 + wi_array_count(wr_transfers), size.height - 3)); 94 94 95 95 wi_terminal_clear_screen(wr_terminal); … … 140 140 #pragma mark - 141 141 142 void wr_ init_readline(void) {142 void wr_readline_init(void) { 143 143 rl_initialize(); 144 144 using_history(); … … 171 171 172 172 173 void wr_ close_readline(void) {173 void wr_readline_close(void) { 174 174 rl_callback_handler_remove(); 175 175 } wire/trunk/wire/terminal.h
r3566 r4399 30 30 #define WR_TERM_H 1 31 31 32 void wr_ init_terminal(void);33 void wr_ close_terminal(void);32 void wr_terminal_init(void); 33 void wr_terminal_close(void); 34 34 35 35 void wr_terminal_resize(void); … … 38 38 void wr_terminal_reset_location(void); 39 39 40 void wr_ init_readline(void);41 void wr_ close_readline(void);40 void wr_readline_init(void); 41 void wr_readline_close(void); 42 42 43 43 void wr_readline_read(void); wire/trunk/wire/transfers.c
r4384 r4399 43 43 44 44 45 wi_ list_t *wr_transfers;45 wi_array_t *wr_transfers; 46 46 47 47 static wi_runtime_id_t wr_transfer_runtime_id = WI_RUNTIME_ID_NULL; … … 57 57 58 58 59 void wr_ init_transfers(void) {59 void wr_transfers_init(void) { 60 60 wr_transfer_runtime_id = wi_runtime_register_class(&wr_transfer_runtime_class); 61 61 62 wr_transfers = wi_ list_init(wi_list_alloc());63 } 64 65 66 67 void wr_ clear_transfers(void) {68 wi_ list_remove_all_data(wr_transfers);62 wr_transfers = wi_array_init(wi_array_alloc()); 63 } 64 65 66 67 void wr_transfers_clear(void) { 68 wi_array_remove_all_data(wr_transfers); 69 69 } 70 70 … … 204 204 } 205 205 206 wi_ list_append_data(wr_transfers, transfer);206 wi_array_add_data(wr_transfers, transfer); 207 207 208 208 if(transfer->tid == 1) … … 241 241 transfer->checksum = wi_retain(wi_file_sha1(transfer->local_path, WR_CHECKSUM_SIZE)); 242 242 243 wi_ list_append_data(wr_transfers, transfer);243 wi_array_add_data(wr_transfers, transfer); 244 244 245 245 if(transfer->tid == 1) … … 308 308 wr_transfer_t *transfer; 309 309 310 if(wi_ list_count(wr_transfers) > 0) {311 transfer = wi_ list_last_data(wr_transfers);310 if(wi_array_count(wr_transfers) > 0) { 311 transfer = wi_array_last_data(wr_transfers); 312 312 313 313 return transfer->tid + 1; … … 338 338 339 339 void wr_transfer_stop(wr_transfer_t *transfer) { 340 wi_ list_remove_data(wr_transfers, transfer);341 342 transfer = wi_ list_first_data(wr_transfers);340 wi_array_remove_data(wr_transfers, transfer); 341 342 transfer = wi_array_first_data(wr_transfers); 343 343 344 344 if(transfer) { … … 359 359 wr_transfer_t *transfer; 360 360 361 enumerator = wi_ list_data_enumerator(wr_transfers);361 enumerator = wi_array_data_enumerator(wr_transfers); 362 362 363 363 while((transfer = wi_enumerator_next_data(enumerator))) { … … 375 375 wr_transfer_t *transfer; 376 376 377 enumerator = wi_ list_data_enumerator(wr_transfers);377 enumerator = wi_array_data_enumerator(wr_transfers); 378 378 379 379 while((transfer = wi_enumerator_next_data(enumerator))) { … … 391 391 wr_transfer_t *transfer; 392 392 393 enumerator = wi_ list_data_enumerator(wr_transfers);393 enumerator = wi_array_data_enumerator(wr_transfers); 394 394 395 395 while((transfer = wi_enumerator_next_data(enumerator))) { wire/trunk/wire/transfers.h
r4384 r4399 78 78 79 79 80 void wr_ init_transfers(void);81 void wr_ clear_transfers(void);80 void wr_transfers_init(void); 81 void wr_transfers_clear(void); 82 82 83 83 int wr_runloop_download_callback(wi_socket_t *); … … 100 100 101 101 102 extern wi_ list_t *wr_transfers;102 extern wi_array_t *wr_transfers; 103 103 104 104 #endif /* WR_TRANSFERS_H */ wire/trunk/wire/users.c
r4384 r4399 71 71 72 72 73 void wr_ init_users(void) {73 void wr_users_init(void) { 74 74 wr_user_runtime_id = wi_runtime_register_class(&wr_user_runtime_class); 75 75 } … … 77 77 78 78 79 void wr_ clear_users(void) {79 void wr_users_clear(void) { 80 80 wr_reply_uid = 0; 81 81 } … … 86 86 87 87 char * wr_readline_nickname_generator(const char *text, int state) { 88 static wi_list_node_t *node; 88 static uint32_t index; 89 wi_array_t *users; 89 90 wi_string_t *name; 90 char *cname , *match = NULL;91 char *cname; 91 92 wr_user_t *user; 93 uint32_t count; 92 94 93 95 if(!wr_window_is_chat(wr_current_window)) 94 96 return NULL; 95 97 98 users = wr_chat_users(wr_console_window->chat); 99 96 100 if(state == 0) 97 node = wi_list_first_node(wr_chat_users(wr_console_window->chat));101 index = 0; 98 102 99 103 cname = ((*rl_filename_dequoting_function) ((char *) text, 0)); 100 104 name = wi_string_with_cstring(cname); 101 102 while(node) { 103 user = wi_list_node_data(node); 104 node = wi_list_node_next_node(node); 105 free(cname); 106 107 count = wi_array_count(users); 108 109 while(index < count) { 110 user = WI_ARRAY(users, index++); 105 111 106 if(wi_string_index_of_string(user->nick, name, WI_STRING_SMART_CASE_INSENSITIVE) == 0) { 107 match = strdup(wi_string_cstring(user->nick)); 108 109 break; 110 } 112 if(wi_string_index_of_string(user->nick, name, WI_STRING_SMART_CASE_INSENSITIVE) == 0) 113 return strdup(wi_string_cstring(user->nick)); 111 114 } 112 113 free(cname); 114 115 return match; 115 116 return NULL; 116 117 } 117 118 wire/trunk/wire/users.h
r4384 r4399 36 36 37 37 38 void wr_ init_users(void);39 void wr_ clear_users(void);38 void wr_users_init(void); 39 void wr_users_clear(void); 40 40 41 41 char * wr_readline_nickname_generator(const char *, int); wire/trunk/wire/version.c
r4020 r4399 40 40 41 41 42 void wr_ init_version(void) {42 void wr_version_init(void) { 43 43 wr_version_string = wi_string_init_with_cstring(wi_string_alloc(), WR_VERSION); 44 44 wr_protocol_version_string = wi_string_init_with_cstring(wi_string_alloc(), WR_PROTOCOL_VERSION); wire/trunk/wire/version.h
r3566 r4399 35 35 36 36 37 void wr_ init_version(void);37 void wr_version_init(void); 38 38 39 39 #endif /* WR_VERSION_H */ wire/trunk/wire/windows.c
r4386 r4399 44 44 45 45 46 wi_ list_t *wr_windows;46 wi_array_t *wr_windows; 47 47 48 48 wr_window_t *wr_console_window; … … 60 60 61 61 62 void wr_ init_windows(void) {62 void wr_windows_init(void) { 63 63 wr_window_runtime_id = wi_runtime_register_class(&wr_window_runtime_class); 64 64 65 wr_windows = wi_ list_init(wi_list_alloc());65 wr_windows = wi_array_init(wi_array_alloc()); 66 66 67 67 wr_console_window = wr_window_init_with_chat(wr_window_alloc(), wr_public_chat); … … 73 73 74 74 75 void wr_clear_windows(void) { 76 wi_list_node_t *node, *next_node; 75 void wr_windows_clear(void) { 77 76 wr_window_t *window; 78 79 for(node = wi_list_first_node(wr_windows); node; node = next_node) { 80 next_node = wi_list_node_next_node(node); 81 window = wi_list_node_data(node); 82 83 if(window != wr_console_window) 77 uint32_t i, count; 78 79 count = wi_array_count(wr_windows); 80 81 for(i = 0; i < count; i++) { 82 window = WI_ARRAY(wr_windows, i); 83 84 if(window != wr_console_window) { 84 85 wr_windows_close_window(window); 86 87 i--; 88 count--; 89 } 85 90 } 86 91 … … 92 97 #pragma mark - 93 98 94 wr_window_t * wr_window_alloc(void) {95 return wi_runtime_create_instance(wr_window_runtime_id, sizeof(wr_window_t));96 }97 98 99 100 wr_window_t * wr_window_init(wr_window_t *window) {101 window->buffer = wi_terminal_buffer_init_with_terminal(wi_terminal_buffer_alloc(), wr_terminal);102 window->wid = wr_window_wid();103 window->status = WR_WINDOW_STATUS_IDLE;104 105 return window;106 }107 108 109 110 wr_window_t * wr_window_init_with_chat(wr_window_t *window, wr_chat_t *chat) {111 window = wr_window_init(window);112 113 window->type = WR_WINDOW_TYPE_CHAT;114 window->chat = wi_retain(chat);115 116 return window;117 }118 119 120 121 wr_window_t * wr_window_init_with_user(wr_window_t *window, wr_user_t *user) {122 window = wr_window_init(window);123 124 window->type = WR_WINDOW_TYPE_USER;125 window->user = wi_retain(user);126 window->topic.topic = wi_retain(wr_user_nick(user));127
