Changeset 3449
- Timestamp:
- 01/09/06 18:50:38 (3 years ago)
- Files:
-
- wire/trunk/Makefile.in (modified) (3 diffs)
- wire/trunk/NEWS (modified) (1 diff)
- wire/trunk/man/wire.1 (modified) (1 diff)
- wire/trunk/wire/client.c (modified) (11 diffs)
- wire/trunk/wire/client.h (modified) (2 diffs)
- wire/trunk/wire/commands.c (modified) (8 diffs)
- wire/trunk/wire/commands.h (modified) (1 diff)
- wire/trunk/wire/server.c (added)
- wire/trunk/wire/server.h (added)
- wire/trunk/wire/transfers.c (modified) (2 diffs)
- wire/trunk/wire/windows.c (modified) (3 diffs)
- wire/trunk/wire/windows.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
wire/trunk/Makefile.in
r3431 r3449 22 22 $(objdir)/ignores.o \ 23 23 $(objdir)/main.o \ 24 $(objdir)/server.o \ 24 25 $(objdir)/terminal.o \ 25 26 $(objdir)/transfers.o \ … … 61 62 configure: configure.in 62 63 autoconf 63 rm -rf autom4te.cache64 64 65 65 config.h.in: configure.in … … 67 67 touch $@ 68 68 rm -f $@~ 69 rm -rf autom4te.cache70 69 71 70 $(rundir)/wire: $(WIREOBJECTS) libwired/run/lib/libwired.a wire/trunk/NEWS
r3296 r3449 14 14 - Add /ping command 15 15 - Add /charset command to change character set during execution, remove -c flag 16 - Add /serverinfo command 16 17 17 18 1.0.2 wire/trunk/man/wire.1
r3296 r3449 236 236 .Pp 237 237 Example: /search .jpg 238 .It Nm serverinfo 239 Prints information about the current server. 240 .Pp 241 Example: /serverinfo 238 242 .It Nm start Ar transfer 239 243 Starts a previously queued transfer by id. wire/trunk/wire/client.c
r3366 r3449 36 36 #include "ignores.h" 37 37 #include "main.h" 38 #include "server.h" 38 39 #include "transfers.h" 39 40 #include "users.h" … … 80 81 unsigned int wr_port; 81 82 82 wi_string_t *wr_server; 83 double wr_protocol; 83 wr_server_t *wr_server; 84 84 85 85 wi_string_t *wr_nick; … … 240 240 241 241 next: 242 wi_release(ip); 242 243 wi_release(socket); 243 244 … … 264 265 wr_host); 265 266 } 267 268 wi_release(wr_server); 266 269 267 270 wi_release(wr_host); … … 320 323 wi_parse_wired_message(string, &message, &arguments); 321 324 wi_release(string); 322 325 323 326 switch(message) { 324 327 case 200: wr_msg_200(arguments); break; … … 431 434 432 435 wi_release(arguments); 436 437 wr_received_bytes += wi_string_length(buffer); 433 438 434 439 return message; … … 447 452 448 453 result = wr_send_command_on_socket(wr_socket, WI_STR("%@"), string); 454 455 if(result > 0) 456 wr_transferred_bytes += wi_string_length(string); 449 457 450 458 wi_release(string); … … 484 492 double protocol; 485 493 486 wr_protocol = wi_string_double_value(WI_ARRAY(arguments, 1));487 494 protocol = wi_string_double_value(wr_protocol_version_string); 488 495 489 wi_release(wr_server); 490 wr_server = wi_retain(WI_ARRAY(arguments, 2)); 496 wr_server = wr_server_init(wr_server_alloc()); 497 wr_server->version = wi_retain(WI_ARRAY(arguments, 0)); 498 wr_server->protocol = wi_string_double_value(WI_ARRAY(arguments, 1)); 499 wr_server->name = wi_retain(WI_ARRAY(arguments, 2)); 500 wr_server->description = wi_retain(WI_ARRAY(arguments, 3)); 501 wr_server->startdate = wi_date_init_with_iso8601_string(wi_date_alloc(), WI_ARRAY(arguments, 4)); 502 wr_server->files = wi_string_unsigned_int_value(WI_ARRAY(arguments, 4)); 503 wr_server->size = wi_string_unsigned_int_value(WI_ARRAY(arguments, 5)); 504 505 wr_printf_prefix(WI_STR("now %.2f"), wi_time_interval()); 506 wr_printf_prefix(WI_STR("date = %@, interval = %.2f"), WI_ARRAY(arguments, 4), wi_date_time_interval(wr_server->startdate)); 507 wr_printf_prefix(WI_STR("diff = %.2f"), wi_time_interval() - wi_date_time_interval(wr_server->startdate)); 491 508 492 509 wr_draw_divider(); 493 510 494 511 if(!wr_logged_in) { 495 if(wr_ protocol > protocol) {512 if(wr_server->protocol > protocol) { 496 513 wr_wprintf_prefix(wr_console_window, WI_STR("Server protocol version %.1f may not be fully compatible with client protocol version %.1f"), 497 wr_ protocol, protocol);514 wr_server->protocol, protocol); 498 515 } 499 516 … … 517 534 518 535 static void wr_msg_201(wi_array_t *arguments) { 519 wr_wprintf_prefix(wr_console_window, WI_STR("Logged in, welcome to %@"), wr_server );536 wr_wprintf_prefix(wr_console_window, WI_STR("Logged in, welcome to %@"), wr_server->name); 520 537 } 521 538 … … 734 751 unsigned int n, i, count; 735 752 736 wr_printf_prefix(WI_STR("User info for %@:"),753 wr_printf_prefix(WI_STR("User info:"), 737 754 WI_ARRAY(arguments, 4)); 738 755 739 if(wr_protocol >= 1.1) 756 wr_printf_block(WI_STR("Nick: %@"), WI_ARRAY(arguments, 4)); 757 758 if(wr_server->protocol >= 1.1) 740 759 wr_printf_block(WI_STR("Status: %@"), WI_ARRAY(arguments, 15)); 741 760 … … 1066 1085 wr_printf_block(WI_STR("Checksum: %@"), WI_ARRAY(arguments, 5)); 1067 1086 1068 if(wr_ protocol >= 1.1)1087 if(wr_server->protocol >= 1.1) 1069 1088 wr_printf_block(WI_STR("Comment: %@"), WI_ARRAY(arguments, 6)); 1070 1089 } wire/trunk/wire/client.h
r3312 r3449 29 29 #ifndef WR_CLIENT_H 30 30 #define WR_CLIENT_H 1 31 32 #include "server.h" 31 33 32 34 #define WR_MESSAGE_SEPARATOR '\4' … … 63 65 extern unsigned int wr_port; 64 66 65 extern wi_string_t *wr_server; 66 extern double wr_protocol; 67 extern wr_server_t *wr_server; 67 68 68 69 extern wi_string_t *wr_nick; wire/trunk/wire/commands.c
r3385 r3449 85 85 static void wr_cmd_save(wi_array_t *); 86 86 static void wr_cmd_search(wi_array_t *); 87 static void wr_cmd_serverinfo(wi_array_t *); 87 88 static void wr_cmd_start(wi_array_t *); 88 89 static void wr_cmd_stat(wi_array_t *); … … 100 101 { "ban", 101 102 true, "<user> <message>", 102 2, 1, WR_COMPLETER_NICKNAME,103 true, 2, 1, WR_COMPLETER_NICKNAME, 103 104 wr_cmd_ban }, 104 105 { "broadcast", 105 106 true, "<message>", 106 1, 0, WR_COMPLETER_NICKNAME,107 true, 1, 0, WR_COMPLETER_NICKNAME, 107 108 wr_cmd_broadcast }, 108 109 { "cd", 109 110 true, "<path>", 110 1, -1, WR_COMPLETER_DIRECTORY,111 true, 1, -1, WR_COMPLETER_DIRECTORY, 111 112 wr_cmd_cd }, 112 113 { "charset", 113 114 true, "<charset>", 114 1, -1, WR_COMPLETER_NONE,115 false, 1, -1, WR_COMPLETER_NONE, 115 116 wr_cmd_charset }, 116 117 { "clear", 117 118 true, "", 118 0, -1, WR_COMPLETER_NONE,119 false, 0, -1, WR_COMPLETER_NONE, 119 120 wr_cmd_clear }, 120 121 { "clearnews", 121 122 true, "", 122 0, -1, WR_COMPLETER_NONE,123 true, 0, -1, WR_COMPLETER_NONE, 123 124 wr_cmd_clearnews }, 124 125 { "close", 125 126 true, "", 126 0, -1, WR_COMPLETER_NONE,127 false, 0, -1, WR_COMPLETER_NONE, 127 128 wr_cmd_close }, 128 129 { "comment", 129 130 true, "<path> <comment>", 130 1, 1, WR_COMPLETER_FILENAME,131 true, 1, 1, WR_COMPLETER_FILENAME, 131 132 wr_cmd_comment }, 132 133 { "connect", 133 134 false, "<server> [-l <login>] [-p <password>] [-P <port>]", 134 1, -1, WR_COMPLETER_NONE,135 false, 1, -1, WR_COMPLETER_NONE, 135 136 wr_cmd_open }, 136 137 { "delete", 137 138 true, "<path>", 138 1, -1, WR_COMPLETER_FILENAME,139 true, 1, -1, WR_COMPLETER_FILENAME, 139 140 wr_cmd_rm }, 140 141 { "disconnect", 141 142 true, "", 142 0, -1, WR_COMPLETER_NONE,143 true, 0, -1, WR_COMPLETER_NONE, 143 144 wr_cmd_disconnect }, 144 145 { "echo", 145 146 false, "<text>", 146 1, 0, WR_COMPLETER_NONE,147 false, 1, 0, WR_COMPLETER_NONE, 147 148 wr_cmd_echo }, 148 149 { "exit", 149 150 false, "", 150 0, -1, WR_COMPLETER_NONE,151 false, 0, -1, WR_COMPLETER_NONE, 151 152 wr_cmd_quit }, 152 153 { "get", 153 154 true, "<path>", 154 1, -1, WR_COMPLETER_FILENAME,155 true, 1, -1, WR_COMPLETER_FILENAME, 155 156 wr_cmd_get }, 156 157 { "help", 157 158 true, "[<command>]", 158 0, -1, WR_COMPLETER_COMMAND,159 false, 0, -1, WR_COMPLETER_COMMAND, 159 160 wr_cmd_help }, 160 161 { "ignore", 161 162 true, "[<nick>]", 162 0, -1, WR_COMPLETER_NICKNAME,163 false, 0, -1, WR_COMPLETER_NICKNAME, 163 164 wr_cmd_ignore }, 164 165 { "ignores", 165 166 true, "[<nick>]", 166 0, -1, WR_COMPLETER_NICKNAME,167 false, 0, -1, WR_COMPLETER_NICKNAME, 167 168 wr_cmd_ignore }, 168 169 { "info", 169 170 true, "<user>", 170 1, -1, WR_COMPLETER_NICKNAME,171 true, 1, -1, WR_COMPLETER_NICKNAME, 171 172 wr_cmd_info }, 172 173 { "join", 173 174 false, "<server> [-l <login>] [-p <password>] [-P <port>]", 174 1, -1, WR_COMPLETER_NONE,175 false, 1, -1, WR_COMPLETER_NONE, 175 176 wr_cmd_open }, 176 177 { "kick", 177 178 true, "<user> <message>", 178 1, 1, WR_COMPLETER_NICKNAME,179 true, 1, 1, WR_COMPLETER_NICKNAME, 179 180 wr_cmd_kick }, 180 181 { "load", 181 182 true, "<bookmark>", 182 1, -1, WR_COMPLETER_BOOKMARK,183 false, 1, -1, WR_COMPLETER_BOOKMARK, 183 184 wr_cmd_load }, 184 185 { "log", 185 186 true, "<filename>", 186 1, -1, WR_COMPLETER_NONE,187 false, 1, -1, WR_COMPLETER_NONE, 187 188 wr_cmd_log }, 188 189 { "ls", 189 190 true, "<path>", 190 0, -1, WR_COMPLETER_DIRECTORY,191 true, 0, -1, WR_COMPLETER_DIRECTORY, 191 192 wr_cmd_ls }, 192 193 { "me", 193 194 true, "<chat>", 194 1, 0, WR_COMPLETER_NICKNAME,195 true, 1, 0, WR_COMPLETER_NICKNAME, 195 196 wr_cmd_me }, 196 197 { "mkdir", 197 198 true, "<path>", 198 1, 0, WR_COMPLETER_FILENAME,199 true, 1, 0, WR_COMPLETER_FILENAME, 199 200 wr_cmd_mkdir }, 200 201 { "move", 201 202 true, "<path> <path>", 202 2, -1, WR_COMPLETER_FILENAME,203 true, 2, -1, WR_COMPLETER_FILENAME, 203 204 wr_cmd_mv }, 204 205 { "msg", 205 206 true, "<user> <message>", 206 2, 1, WR_COMPLETER_NICKNAME,207 true, 2, 1, WR_COMPLETER_NICKNAME, 207 208 wr_cmd_msg }, 208 209 { "mv", 209 210 true, "<path> <path>", 210 2, -1, WR_COMPLETER_FILENAME,211 true, 2, -1, WR_COMPLETER_FILENAME, 211 212 wr_cmd_mv }, 212 213 { "news", 213 214 true, "[-<number> | -ALL]", 214 0, -1, WR_COMPLETER_NONE,215 true, 0, -1, WR_COMPLETER_NONE, 215 216 wr_cmd_news }, 216 217 { "nick", 217 218 true, "<nick>", 218 1, 0, WR_COMPLETER_NICKNAME,219 false, 1, 0, WR_COMPLETER_NICKNAME, 219 220 wr_cmd_nick }, 220 221 { "open", 221 222 true, "<server> [-l <login>] [-p <password>] [-P <port>]", 222 1, -1, WR_COMPLETER_NONE,223 false, 1, -1, WR_COMPLETER_NONE, 223 224 wr_cmd_open }, 224 225 { "ping", 225 226 true, "", 226 0, -1, WR_COMPLETER_NONE,227 true, 0, -1, WR_COMPLETER_NONE, 227 228 wr_cmd_ping }, 228 229 { "post", 229 230 true, "<message>", 230 1, 0, WR_COMPLETER_NICKNAME,231 true, 1, 0, WR_COMPLETER_NICKNAME, 231 232 wr_cmd_post }, 232 233 { "put", 233 234 true, "<path>", 234 1, -1, WR_COMPLETER_LOCAL_FILENAME,235 true, 1, -1, WR_COMPLETER_LOCAL_FILENAME, 235 236 wr_cmd_put }, 236 237 { "pwd", 237 238 true, "", 238 0, -1, WR_COMPLETER_NONE,239 true, 0, -1, WR_COMPLETER_NONE, 239 240 wr_cmd_pwd }, 240 241 { "quit", 241 242 true, "", 242 0, -1, WR_COMPLETER_NONE,243 false, 0, -1, WR_COMPLETER_NONE, 243 244 wr_cmd_quit }, 244 245 { "remove", 245 246 true, "<path>", 246 1, -1, WR_COMPLETER_FILENAME,247 true, 1, -1, WR_COMPLETER_FILENAME, 247 248 wr_cmd_rm }, 248 249 { "reply", 249 250 true, "<message>", 250 1, 0, WR_COMPLETER_NICKNAME,251 true, 1, 0, WR_COMPLETER_NICKNAME, 251 252 wr_cmd_reply }, 252 253 { "rm", 253 254 true, "<path>", 254 1, -1, WR_COMPLETER_FILENAME,255 true, 1, -1, WR_COMPLETER_FILENAME, 255 256 wr_cmd_rm }, 256 257 { "save", 257 258 true, "<bookmark>", 258 1, -1, WR_COMPLETER_BOOKMARK,259 false, 1, -1, WR_COMPLETER_BOOKMARK, 259 260 wr_cmd_save }, 260 261 { "say", 261 262 false, "<chat>", 262 1, 0, WR_COMPLETER_NICKNAME,263 true, 1, 0, WR_COMPLETER_NICKNAME, 263 264 wr_cmd_say }, 264 265 { "search", 265 266 true, "<query>", 266 1, -1, WR_COMPLETER_FILENAME,267 true, 1, -1, WR_COMPLETER_FILENAME, 267 268 wr_cmd_search }, 268 269 { "server", 269 270 false, "<server> [-l <login>] [-p <password>] [-P <port>]", 270 1, -1, WR_COMPLETER_NONE,271 false, 1, -1, WR_COMPLETER_NONE, 271 272 wr_cmd_open }, 273 { "serverinfo", 274 true, "", 275 true, 0, -1, WR_COMPLETER_NONE, 276 wr_cmd_serverinfo }, 272 277 { "start", 273 278 true, "<transfer>", 274 1, -1, WR_COMPLETER_NONE,279 true, 1, -1, WR_COMPLETER_NONE, 275 280 wr_cmd_start }, 276 281 { "stat", 277 282 true, "<path>", 278 1, -1, WR_COMPLETER_FILENAME,283 true, 1, -1, WR_COMPLETER_FILENAME, 279 284 wr_cmd_stat }, 280 285 { "status", 281 286 true, "<status>", 282 1, 0, WR_COMPLETER_NONE,287 false, 1, 0, WR_COMPLETER_NONE, 283 288 wr_cmd_status }, 284 289 { "stop", 285 290 true, "<transfer>", 286 1, -1, WR_COMPLETER_NONE,291 true, 1, -1, WR_COMPLETER_NONE, 287 292 wr_cmd_stop }, 288 293 { "topic", 289 294 true, "[<topic>]", 290 0, 0, WR_COMPLETER_NICKNAME,295 true, 0, 0, WR_COMPLETER_NICKNAME, 291 296 wr_cmd_topic }, 292 297 { "type", 293 298 true, "<path> (folder | uploads | dropbox)", 294 2, -1, WR_COMPLETER_FILENAME,299 true, 2, -1, WR_COMPLETER_FILENAME, 295 300 wr_cmd_type }, 296 301 { "unignore", 297 302 true, "[<ignore> | <nick>]", 298 0, -1, WR_COMPLETER_IGNORE,303 false, 0, -1, WR_COMPLETER_IGNORE, 299 304 wr_cmd_unignore }, 300 305 { "uptime", 301 306 true, "", 302 0, -1, WR_COMPLETER_NONE,307 false, 0, -1, WR_COMPLETER_NONE, 303 308 wr_cmd_uptime }, 304 309 { "version", 305 310 true, "", 306 0, -1, WR_COMPLETER_NONE,311 false, 0, -1, WR_COMPLETER_NONE, 307 312 wr_cmd_version }, 308 313 { "who", 309 314 true, "", 310 0, -1, WR_COMPLETER_NONE,315 true, 0, -1, WR_COMPLETER_NONE, 311 316 wr_cmd_who }, 312 317 { "whois", 313 318 false, "<user>", 314 1, -1, WR_COMPLETER_NICKNAME,319 true, 1, -1, WR_COMPLETER_NICKNAME, 315 320 wr_cmd_info }, 316 321 }; … … 349 354 } 350 355 356 if(wr_commands[index].connected && !wr_connected) { 357 wr_printf_prefix(WI_STR("%@: %@"), command, WI_STR("Not connected")); 358 359 goto end; 360 } 361 351 362 array = wi_array_init_with_argument_string(wi_array_alloc(), arguments, wr_commands[index].optindex); 352 363 … … 356 367 goto end; 357 368 } 358 359 ((*wr_commands[index].action) (array));360 369 361 370 wi_release(wr_last_command); 362 371 wr_last_command = WI_STRING_WITH_CSTRING(wr_commands[index].name); 372 373 ((*wr_commands[index].action) (array)); 363 374 364 375 end: … … 597 608 if(wr_connected) 598 609 wr_disconnect(); 610 else 611 wr_printf_prefix(WI_STR("%@: %@"), wr_last_command, WI_STR("Not connected")); 599 612 } else { 600 613 wr_windows_close_window(wr_current_window); … … 628 641 629 642 static void wr_cmd_disconnect(wi_array_t *arguments) { 630 if(wr_connected) 631 wr_disconnect(); 632 else 633 wr_printf_prefix(WI_STR("You are not connected to any server")); 643 wr_disconnect(); 634 644 } 635 645 … … 1244 1254 1245 1255 /* 1256 /serverinfo 1257 */ 1258 1259 static void wr_cmd_serverinfo(wi_array_t *arguments) { 1260 wr_print_server_info(); 1261 } 1262 1263 1264 1265 /* 1246 1266 /save <bookmark> 1247 1267 */ … … 1531 1551 1532 1552 static void wr_cmd_who(wi_array_t *arguments) { 1533 if(wr_connected) 1534 wr_print_users(); 1535 else 1536 wr_printf_prefix(WI_STR("You are not connected to any server")); 1537 } 1553 wr_print_users(); 1554 } wire/trunk/wire/commands.h
r3312 r3449 38 38 const char *usage; 39 39 40 wi_boolean_t connected; 40 41 unsigned int optargs; 41 42 int optindex; wire/trunk/wire/transfers.c
r3312 r3449 284 284 if(bytes > 0) { 285 285 transfer->transferred += bytes; 286 wr_received_bytes += bytes; 286 287 287 288 if(wi_file_write_buffer(transfer->file, buf, bytes) < 0) { … … 337 338 } else { 338 339 transfer->transferred += bytes; 340 wr_transferred_bytes += bytes; 339 341 340 342 wr_draw_transfers(false); wire/trunk/wire/windows.c
r3312 r3449 162 162 163 163 void wr_windows_add_window(wr_window_t *window) { 164 wr_user_t *user; 165 164 166 wi_list_append_data(wr_windows, window); 165 167 wi_terminal_add_buffer(wr_terminal, window->buffer); 168 169 if(window->type == WR_WINDOW_TYPE_USER) { 170 user = wr_user_with_uid(window->uid); 171 172 wr_wprintf_prefix(window, WI_STR("Opened new window for private messages with %@"), user->nick); 173 wr_wprintf_prefix(window, WI_STR("Use ctrl-N/ctrl-P to cycle windows"), user->nick); 174 } 166 175 } 167 176 … … 476 485 WR_END_COLOR, 477 486 message); 487 } 488 489 490 491 void wr_print_server_info(void) { 492 wi_string_t *string, *uptime, *since; 493 wi_date_t *date; 494 wi_time_interval_t interval; 495 496 wr_printf_prefix(WI_STR("Server info:")); 497 498 wr_printf_block(WI_STR("Name: %@"), wr_server->name); 499 wr_printf_block(WI_STR("Description: %@"), wr_server->description); 500 501 interval = wi_time_interval() - wi_date_time_interval(wr_server->startdate); 502 date = WI_DATE_WITH_TIME_INTERVAL(interval); 503 504 uptime = wi_date_string_with_interval_format(date); 505 since = wi_date_string_with_format(wr_server->startdate, WI_STR("%a %b %e %T %Y")); 506 wr_printf_block(WI_STR("Uptime: %@, since %@"), uptime, since); 507 wi_release(uptime); 508 wi_release(since); 509 510 wr_printf_block(WI_STR("Files: %u"), wr_server->files); 511 512 string = wr_files_string_for_size(wr_server->size); 513 wr_printf_block(WI_STR("Size: %@"), string); 514 wi_release(string); 515 516 wr_printf_block(WI_STR("Version: %@"), wr_server->version); 517 wr_printf_block(WI_STR("Protocol: %.1f"), wr_server->protocol); 518 519 string = wi_socket_cipher_version(wr_socket); 520 wr_printf_block(WI_STR("SSL Protocol: %@"), string); 521 wi_release(string); 522 523 string = wi_socket_cipher_name(wr_socket); 524 wr_printf_block(WI_STR("Cipher: %@/%u bits"), string, wi_socket_cipher_bits(wr_socket)); 525 wi_release(string); 478 526 } 479 527 … … 686 734 wr_nick); 687 735 688 if(wr_connected ) {736 if(wr_connected && wr_server) { 689 737 wi_string_append_format(string, WI_STR(" - %@ - %u %@"), 690 wr_server ,738 wr_server->name, 691 739 wi_list_count(wr_users), 692 740 wi_list_count(wr_users) == 1 wire/trunk/wire/windows.h
r3312 r3449 134 134 void wr_wprint_me(wr_window_t *, wi_string_t *, wi_string_t *); 135 135 void wr_wprint_msg(wr_window_t *, wi_string_t *, wi_string_t *); 136 void wr_print_server_info(void); 136 137 void wr_print_topic(void); 137 138 void wr_print_users(void);
