Changeset 9fae35c for root_commands.c
- Timestamp:
- 2006-01-23T23:28:13Z (18 years ago)
- Branches:
- master
- Children:
- ec3e411
- Parents:
- 7308b63 (diff), 68c7c14 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
root_commands.c
r7308b63 r9fae35c 32 32 #include <string.h> 33 33 34 command_t commands[] = { 35 { "help", 0, cmd_help }, 36 { "identify", 1, cmd_identify }, 37 { "register", 1, cmd_register }, 38 { "drop", 1, cmd_drop }, 39 { "account", 1, cmd_account }, 40 { "add", 2, cmd_add }, 41 { "info", 1, cmd_info }, 42 { "rename", 2, cmd_rename }, 43 { "remove", 1, cmd_remove }, 44 { "block", 1, cmd_block }, 45 { "allow", 1, cmd_allow }, 46 { "save", 0, cmd_save }, 47 { "set", 0, cmd_set }, 48 { "yes", 0, cmd_yesno }, 49 { "no", 0, cmd_yesno }, 50 { "blist", 0, cmd_blist }, 51 { "nick", 1, cmd_nick }, 52 { "import_buddies", 1, cmd_import_buddies }, 53 { "qlist", 0, cmd_qlist }, 54 { NULL } 55 }; 56 57 int cmd_help( irc_t *irc, char **cmd ) 34 void root_command_string( irc_t *irc, user_t *u, char *command, int flags ) 35 { 36 char *cmd[IRC_MAX_ARGS]; 37 char *s; 38 int k; 39 char q = 0; 40 41 memset( cmd, 0, sizeof( cmd ) ); 42 cmd[0] = command; 43 k = 1; 44 for( s = command; *s && k < ( IRC_MAX_ARGS - 1 ); s ++ ) 45 if( *s == ' ' && !q ) 46 { 47 *s = 0; 48 while( *++s == ' ' ); 49 if( *s == '"' || *s == '\'' ) 50 { 51 q = *s; 52 s ++; 53 } 54 if( *s ) 55 { 56 cmd[k++] = s; 57 s --; 58 } 59 } 60 else if( *s == q ) 61 { 62 q = *s = 0; 63 } 64 cmd[k] = NULL; 65 66 root_command( irc, cmd ); 67 } 68 69 void root_command( irc_t *irc, char *cmd[] ) 70 { 71 int i; 72 73 if( !cmd[0] ) 74 return; 75 76 for( i = 0; commands[i].command; i++ ) 77 if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 ) 78 { 79 if( !cmd[commands[i].required_parameters] ) 80 { 81 irc_usermsg( irc, "Not enough parameters given (need %d)", commands[i].required_parameters ); 82 return; 83 } 84 commands[i].execute( irc, cmd ); 85 return; 86 } 87 88 irc_usermsg( irc, "Unknown command: %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[0] ); 89 } 90 91 static void cmd_help( irc_t *irc, char **cmd ) 58 92 { 59 93 char param[80]; … … 75 109 irc_usermsg( irc, "%s", s ); 76 110 g_free( s ); 77 return( 1 );78 111 } 79 112 else 80 113 { 81 114 irc_usermsg( irc, "Error opening helpfile." ); 82 return( 0 ); 83 } 84 } 85 86 int cmd_identify( irc_t *irc, char **cmd ) 115 } 116 } 117 118 static void cmd_identify( irc_t *irc, char **cmd ) 87 119 { 88 120 storage_status_t status = storage_load( irc->nick, cmd[1], irc ); … … 97 129 case STORAGE_OK: 98 130 irc_usermsg( irc, "Password accepted" ); 131 irc_umode_set( irc, "+R", 1 ); 99 132 break; 100 133 default: … … 102 135 break; 103 136 } 104 105 return( 0 ); 106 } 107 108 int cmd_register( irc_t *irc, char **cmd ) 137 } 138 139 static void cmd_register( irc_t *irc, char **cmd ) 109 140 { 110 141 if( global.conf->authmode == AUTHMODE_REGISTERED ) 111 142 { 112 143 irc_usermsg( irc, "This server does not allow registering new accounts" ); 113 return ( 0 );144 return; 114 145 } 115 146 … … 122 153 case STORAGE_OK: 123 154 irc->status = USTATUS_IDENTIFIED; 155 irc_umode_set( irc, "+R", 1 ); 124 156 break; 125 157 … … 128 160 break; 129 161 } 130 131 return( 0 ); 132 } 133 134 int cmd_drop( irc_t *irc, char **cmd ) 162 } 163 164 static void cmd_drop( irc_t *irc, char **cmd ) 135 165 { 136 166 storage_status_t status; … … 140 170 case STORAGE_NO_SUCH_USER: 141 171 irc_usermsg( irc, "That account does not exist" ); 142 return( 0 );172 break; 143 173 case STORAGE_INVALID_PASSWORD: 144 174 irc_usermsg( irc, "Password invalid" ); 145 return( 0 );175 break; 146 176 case STORAGE_OK: 147 177 irc_setpass( irc, NULL ); 178 irc->status = USTATUS_LOGGED_IN; 179 irc_umode_set( irc, "-R", 1 ); 148 180 irc_usermsg( irc, "Account `%s' removed", irc->nick ); 149 return( 0 );181 break; 150 182 default: 151 183 irc_usermsg( irc, "Error: '%d'", status ); 152 return( 0 );153 } 154 } 155 156 intcmd_account( irc_t *irc, char **cmd )184 break; 185 } 186 } 187 188 static void cmd_account( irc_t *irc, char **cmd ) 157 189 { 158 190 account_t *a; … … 161 193 { 162 194 irc_usermsg( irc, "This server only accepts registered users" ); 163 return ( 0 );195 return; 164 196 } 165 197 … … 171 203 { 172 204 irc_usermsg( irc, "Not enough parameters" ); 173 return ( 0 );205 return; 174 206 } 175 207 … … 179 211 { 180 212 irc_usermsg( irc, "Unknown protocol" ); 181 return ( 0 );213 return; 182 214 } 183 215 … … 241 273 { 242 274 irc_usermsg( irc, "Account already online" ); 243 return ( 0 );275 return; 244 276 } 245 277 else … … 251 283 { 252 284 irc_usermsg( irc, "Invalid account" ); 253 return ( 0 );285 return; 254 286 } 255 287 } … … 297 329 { 298 330 irc_usermsg( irc, "Account already offline" ); 299 return ( 0 );331 return; 300 332 } 301 333 } … … 303 335 { 304 336 irc_usermsg( irc, "Invalid account" ); 305 return ( 0 );337 return; 306 338 } 307 339 } … … 310 342 irc_usermsg( irc, "Unknown command: account %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[1] ); 311 343 } 312 313 return( 1 ); 314 } 315 316 int cmd_add( irc_t *irc, char **cmd ) 344 } 345 346 static void cmd_add( irc_t *irc, char **cmd ) 317 347 { 318 348 account_t *a; … … 321 351 { 322 352 irc_usermsg( irc, "Invalid account" ); 323 return ( 1 );353 return; 324 354 } 325 355 else if( !( a->gc && ( a->gc->flags & OPT_LOGGED_IN ) ) ) 326 356 { 327 357 irc_usermsg( irc, "That account is not on-line" ); 328 return ( 1 );358 return; 329 359 } 330 360 … … 334 364 { 335 365 irc_usermsg( irc, "The requested nick `%s' is invalid", cmd[3] ); 336 return ( 0 );366 return; 337 367 } 338 368 else if( user_find( irc, cmd[3] ) ) 339 369 { 340 370 irc_usermsg( irc, "The requested nick `%s' already exists", cmd[3] ); 341 return ( 0 );371 return; 342 372 } 343 373 else … … 350 380 351 381 irc_usermsg( irc, "User `%s' added to your contact list as `%s'", cmd[2], user_findhandle( a->gc, cmd[2] )->nick ); 352 353 return( 0 ); 354 } 355 356 int cmd_info( irc_t *irc, char **cmd ) 382 } 383 384 static void cmd_info( irc_t *irc, char **cmd ) 357 385 { 358 386 struct gaim_connection *gc; … … 365 393 { 366 394 irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); 367 return ( 1 );395 return; 368 396 } 369 397 gc = u->gc; … … 373 401 { 374 402 irc_usermsg( irc, "Invalid account" ); 375 return ( 1 );403 return; 376 404 } 377 405 else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) 378 406 { 379 407 irc_usermsg( irc, "That account is not on-line" ); 380 return ( 1 );408 return; 381 409 } 382 410 … … 384 412 { 385 413 irc_usermsg( irc, "Command `%s' not supported by this protocol", cmd[0] ); 386 return( 1 );387 }388 gc->prpl->get_info( gc, cmd[2] );389 390 return( 0 );391 } 392 393 intcmd_rename( irc_t *irc, char **cmd )414 } 415 else 416 { 417 gc->prpl->get_info( gc, cmd[2] ); 418 } 419 } 420 421 static void cmd_rename( irc_t *irc, char **cmd ) 394 422 { 395 423 user_t *u; … … 398 426 { 399 427 irc_usermsg( irc, "Nick `%s' can't be changed", cmd[1] ); 400 return( 1 ); 401 } 402 if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) ) 428 } 429 else if( user_find( irc, cmd[2] ) && ( nick_cmp( cmd[1], cmd[2] ) != 0 ) ) 403 430 { 404 431 irc_usermsg( irc, "Nick `%s' already exists", cmd[2] ); 405 return( 1 ); 406 } 407 if( !nick_ok( cmd[2] ) ) 432 } 433 else if( !nick_ok( cmd[2] ) ) 408 434 { 409 435 irc_usermsg( irc, "Nick `%s' is invalid", cmd[2] ); 410 return( 1 ); 411 } 412 if( !( u = user_find( irc, cmd[1] ) ) ) 436 } 437 else if( !( u = user_find( irc, cmd[1] ) ) ) 413 438 { 414 439 irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); 415 return( 1 );416 }417 user_rename( irc, cmd[1], cmd[2] );418 irc_write( irc, ":%s!%s@%s NICK %s", cmd[1], u->user, u->host, cmd[2] );419 if( g_strcasecmp( cmd[1], irc->mynick ) == 0 )420 {421 g_free( irc->mynick );422 irc->mynick = g_strdup( cmd[2]);423 }424 else if( u->send_handler == buddy_send_handler )425 {426 nick_set( irc, u->handle, u->gc->prpl, cmd[2] );427 }428 429 irc_usermsg( irc, "Nick successfully changed" );430 431 return( 0 );432 } 433 434 intcmd_remove( irc_t *irc, char **cmd )440 } 441 else 442 { 443 user_rename( irc, cmd[1], cmd[2] ); 444 irc_write( irc, ":%s!%s@%s NICK %s", cmd[1], u->user, u->host, cmd[2] ); 445 if( g_strcasecmp( cmd[1], irc->mynick ) == 0 ) 446 { 447 g_free( irc->mynick ); 448 irc->mynick = g_strdup( cmd[2] ); 449 } 450 else if( u->send_handler == buddy_send_handler ) 451 { 452 nick_set( irc, u->handle, u->gc->prpl, cmd[2] ); 453 } 454 455 irc_usermsg( irc, "Nick successfully changed" ); 456 } 457 } 458 459 static void cmd_remove( irc_t *irc, char **cmd ) 435 460 { 436 461 user_t *u; … … 440 465 { 441 466 irc_usermsg( irc, "Buddy `%s' not found", cmd[1] ); 442 return ( 1 );467 return; 443 468 } 444 469 s = g_strdup( u->handle ); … … 451 476 g_free( s ); 452 477 453 return ( 0 );454 } 455 456 intcmd_block( irc_t *irc, char **cmd )478 return; 479 } 480 481 static void cmd_block( irc_t *irc, char **cmd ) 457 482 { 458 483 struct gaim_connection *gc; … … 465 490 { 466 491 irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); 467 return ( 1 );492 return; 468 493 } 469 494 gc = u->gc; … … 473 498 { 474 499 irc_usermsg( irc, "Invalid account" ); 475 return ( 1 );500 return; 476 501 } 477 502 else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) 478 503 { 479 504 irc_usermsg( irc, "That account is not on-line" ); 480 return ( 1 );505 return; 481 506 } 482 507 … … 491 516 irc_usermsg( irc, "Buddy `%s' moved from your permit- to your deny-list", cmd[2] ); 492 517 } 493 494 return( 0 ); 495 } 496 497 int cmd_allow( irc_t *irc, char **cmd ) 518 } 519 520 static void cmd_allow( irc_t *irc, char **cmd ) 498 521 { 499 522 struct gaim_connection *gc; … … 506 529 { 507 530 irc_usermsg( irc, "Nick `%s' does not exist", cmd[1] ); 508 return ( 1 );531 return; 509 532 } 510 533 gc = u->gc; … … 514 537 { 515 538 irc_usermsg( irc, "Invalid account" ); 516 return ( 1 );539 return; 517 540 } 518 541 else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) 519 542 { 520 543 irc_usermsg( irc, "That account is not on-line" ); 521 return ( 1 );544 return; 522 545 } 523 546 … … 533 556 irc_usermsg( irc, "Buddy `%s' moved from your deny- to your permit-list", cmd[2] ); 534 557 } 535 536 return( 0 ); 537 } 538 539 int cmd_yesno( irc_t *irc, char **cmd ) 558 } 559 560 static void cmd_yesno( irc_t *irc, char **cmd ) 540 561 { 541 562 query_t *q = NULL; … … 545 566 { 546 567 irc_usermsg( irc, "Did I ask you something?" ); 547 return ( 0 );568 return; 548 569 } 549 570 … … 555 576 { 556 577 irc_usermsg( irc, "Invalid query number" ); 557 return ( 0 );578 return; 558 579 } 559 580 … … 565 586 { 566 587 irc_usermsg( irc, "Uhm, I never asked you something like that..." ); 567 return ( 0 );588 return; 568 589 } 569 590 } … … 573 594 else if( g_strcasecmp( cmd[0], "no" ) == 0 ) 574 595 query_answer( irc, q, 0 ); 575 576 return( 1 ); 577 } 578 579 int cmd_set( irc_t *irc, char **cmd ) 596 } 597 598 static void cmd_set( irc_t *irc, char **cmd ) 580 599 { 581 600 if( cmd[1] && cmd[2] ) … … 599 618 } 600 619 } 601 602 return( 0 ); 603 } 604 605 int cmd_save( irc_t *irc, char **cmd ) 620 } 621 622 static void cmd_save( irc_t *irc, char **cmd ) 606 623 { 607 624 if( storage_save( irc, TRUE ) == STORAGE_OK ) … … 609 626 else 610 627 irc_usermsg( irc, "Configuration could not be saved!" ); 611 612 return( 0 ); 613 } 614 615 int cmd_blist( irc_t *irc, char **cmd ) 628 } 629 630 static void cmd_blist( irc_t *irc, char **cmd ) 616 631 { 617 632 int online = 0, away = 0, offline = 0; … … 655 670 656 671 irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline ); 657 658 return( 0 ); 659 } 660 661 int cmd_nick( irc_t *irc, char **cmd ) 672 } 673 674 static void cmd_nick( irc_t *irc, char **cmd ) 662 675 { 663 676 account_t *a; … … 691 704 a->gc->prpl->set_info( a->gc, cmd[2] ); 692 705 } 693 694 return( 1 ); 695 } 696 697 int cmd_qlist( irc_t *irc, char **cmd ) 706 } 707 708 static void cmd_qlist( irc_t *irc, char **cmd ) 698 709 { 699 710 query_t *q = irc->queries; … … 703 714 { 704 715 irc_usermsg( irc, "There are no pending questions." ); 705 return ( 0 );716 return; 706 717 } 707 718 … … 713 724 else 714 725 irc_usermsg( irc, "%d, BitlBee: %s", num, q->question ); 715 716 return( 0 ); 717 } 718 719 int cmd_import_buddies( irc_t *irc, char **cmd ) 726 } 727 728 static void cmd_import_buddies( irc_t *irc, char **cmd ) 720 729 { 721 730 struct gaim_connection *gc; … … 726 735 { 727 736 irc_usermsg( irc, "Invalid account" ); 728 return ( 0 );737 return; 729 738 } 730 739 else if( !( ( gc = a->gc ) && ( a->gc->flags & OPT_LOGGED_IN ) ) ) 731 740 { 732 741 irc_usermsg( irc, "That account is not on-line" ); 733 return ( 0 );742 return; 734 743 } 735 744 … … 752 761 { 753 762 irc_usermsg( irc, "Invalid argument: %s", cmd[2] ); 754 return ( 0 );763 return; 755 764 } 756 765 } … … 766 775 767 776 irc_usermsg( irc, "Sent all add requests. Please wait for a while, the server needs some time to handle all the adds." ); 768 769 return( 0 ); 770 } 777 } 778 779 const command_t commands[] = { 780 { "help", 0, cmd_help, 0 }, 781 { "identify", 1, cmd_identify, 0 }, 782 { "register", 1, cmd_register, 0 }, 783 { "drop", 1, cmd_drop, 0 }, 784 { "account", 1, cmd_account, 0 }, 785 { "add", 2, cmd_add, 0 }, 786 { "info", 1, cmd_info, 0 }, 787 { "rename", 2, cmd_rename, 0 }, 788 { "remove", 1, cmd_remove, 0 }, 789 { "block", 1, cmd_block, 0 }, 790 { "allow", 1, cmd_allow, 0 }, 791 { "save", 0, cmd_save, 0 }, 792 { "set", 0, cmd_set, 0 }, 793 { "yes", 0, cmd_yesno, 0 }, 794 { "no", 0, cmd_yesno, 0 }, 795 { "blist", 0, cmd_blist, 0 }, 796 { "nick", 1, cmd_nick, 0 }, 797 { "import_buddies", 1, cmd_import_buddies, 0 }, 798 { "qlist", 0, cmd_qlist, 0 }, 799 { NULL } 800 };
Note: See TracChangeset
for help on using the changeset viewer.