Changeset f73b969 for irc_commands.c
- Timestamp:
- 2006-01-20T15:15:49Z (19 years ago)
- Branches:
- master
- Children:
- 54879ab, f1d38f2
- Parents:
- 55ec2d6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
irc_commands.c
r55ec2d6 rf73b969 28 28 #include "ipc.h" 29 29 30 static intirc_cmd_pass( irc_t *irc, char **cmd )30 static void irc_cmd_pass( irc_t *irc, char **cmd ) 31 31 { 32 32 if( global.conf->auth_pass && strcmp( cmd[1], global.conf->auth_pass ) == 0 ) … … 39 39 irc_reply( irc, 464, ":Incorrect password" ); 40 40 } 41 42 return( 1 ); 43 } 44 45 static int irc_cmd_user( irc_t *irc, char **cmd ) 41 } 42 43 static void irc_cmd_user( irc_t *irc, char **cmd ) 46 44 { 47 45 irc->user = g_strdup( cmd[1] ); … … 49 47 50 48 irc_check_login( irc ); 51 52 return( 1 ); 53 } 54 55 static int irc_cmd_nick( irc_t *irc, char **cmd ) 49 } 50 51 static void irc_cmd_nick( irc_t *irc, char **cmd ) 56 52 { 57 53 if( irc->nick ) … … 75 71 irc_check_login( irc ); 76 72 } 77 78 return( 1 ); 79 } 80 81 static int irc_cmd_quit( irc_t *irc, char **cmd ) 82 { 83 irc_write( irc, "ERROR :%s%s", cmd[1]?"Quit: ":"", cmd[1]?cmd[1]:"Client Quit" ); 84 /* g_io_channel_close( irc->io_channel ); */ 85 86 return( 0 ); 87 } 88 89 static int irc_cmd_ping( irc_t *irc, char **cmd ) 73 } 74 75 static void irc_cmd_quit( irc_t *irc, char **cmd ) 76 { 77 if( cmd[1] && *cmd[1] ) 78 irc_abort( irc, 0, "Quit: %s", cmd[1] ); 79 else 80 irc_abort( irc, 0, "Leaving..." ); 81 } 82 83 static void irc_cmd_ping( irc_t *irc, char **cmd ) 90 84 { 91 85 irc_write( irc, ":%s PONG %s :%s", irc->myhost, irc->myhost, cmd[1]?cmd[1]:irc->myhost ); 92 93 return( 1 ); 94 } 95 96 static int irc_cmd_oper( irc_t *irc, char **cmd ) 86 } 87 88 static void irc_cmd_oper( irc_t *irc, char **cmd ) 97 89 { 98 90 if( global.conf->oper_pass && strcmp( cmd[2], global.conf->oper_pass ) == 0 ) … … 105 97 irc_reply( irc, 432, ":Incorrect password" ); 106 98 } 107 108 return( 1 ); 109 } 110 111 static int irc_cmd_mode( irc_t *irc, char **cmd ) 99 } 100 101 static void irc_cmd_mode( irc_t *irc, char **cmd ) 112 102 { 113 103 if( *cmd[1] == '#' || *cmd[1] == '&' ) … … 133 123 irc_reply( irc, 502, ":Don't touch their modes" ); 134 124 } 135 136 return( 1 ); 137 } 138 139 static int irc_cmd_names( irc_t *irc, char **cmd ) 125 } 126 127 static void irc_cmd_names( irc_t *irc, char **cmd ) 140 128 { 141 129 irc_names( irc, cmd[1]?cmd[1]:irc->channel ); 142 143 return( 1 ); 144 } 145 146 static int irc_cmd_part( irc_t *irc, char **cmd ) 130 } 131 132 static void irc_cmd_part( irc_t *irc, char **cmd ) 147 133 { 148 134 struct conversation *c; … … 172 158 irc_reply( irc, 403, "%s :No such channel", cmd[1] ); 173 159 } 174 175 return( 1 ); 176 } 177 178 static int irc_cmd_join( irc_t *irc, char **cmd ) 160 } 161 162 static void irc_cmd_join( irc_t *irc, char **cmd ) 179 163 { 180 164 if( g_strcasecmp( cmd[1], irc->channel ) == 0 ) … … 210 194 } 211 195 } 212 213 return( 1 ); 214 } 215 216 static int irc_cmd_invite( irc_t *irc, char **cmd ) 196 } 197 198 static void irc_cmd_invite( irc_t *irc, char **cmd ) 217 199 { 218 200 char *nick = cmd[1], *channel = cmd[2]; … … 225 207 c->gc->prpl->chat_invite( c->gc, c->id, "", u->handle ); 226 208 irc_reply( irc, 341, "%s %s", nick, channel ); 227 return ( 1 );209 return; 228 210 } 229 211 230 212 irc_reply( irc, 482, "%s :Invite impossible; User/Channel non-existent or incompatible", channel ); 231 232 return( 1 ); 233 } 234 235 static int irc_cmd_privmsg( irc_t *irc, char **cmd ) 213 } 214 215 static void irc_cmd_privmsg( irc_t *irc, char **cmd ) 236 216 { 237 217 if ( !cmd[2] ) … … 283 263 irc_send( irc, cmd[1], cmd[2], ( g_strcasecmp( cmd[0], "NOTICE" ) == 0 ) ? IM_FLAG_AWAY : 0 ); 284 264 } 285 286 return( 1 ); 287 } 288 289 static int irc_cmd_who( irc_t *irc, char **cmd ) 265 } 266 267 static void irc_cmd_who( irc_t *irc, char **cmd ) 290 268 { 291 269 char *channel = cmd[1]; … … 317 295 318 296 irc_reply( irc, 315, "%s :End of /WHO list", channel?channel:"**" ); 319 320 return( 1 ); 321 } 322 323 static int irc_cmd_userhost( irc_t *irc, char **cmd ) 297 } 298 299 static void irc_cmd_userhost( irc_t *irc, char **cmd ) 324 300 { 325 301 user_t *u; … … 340 316 irc_reply( irc, 302, ":%s=+%s@%s", u->nick, u->user, u->host ); 341 317 } 342 343 return( 1 ); 344 } 345 346 static int irc_cmd_ison( irc_t *irc, char **cmd ) 318 } 319 320 static void irc_cmd_ison( irc_t *irc, char **cmd ) 347 321 { 348 322 user_t *u; … … 383 357 384 358 irc_reply( irc, 303, ":%s", buff ); 385 386 return( 1 ); 387 } 388 389 static int irc_cmd_watch( irc_t *irc, char **cmd ) 359 } 360 361 static void irc_cmd_watch( irc_t *irc, char **cmd ) 390 362 { 391 363 int i; … … 430 402 } 431 403 } 432 433 return( 1 ); 434 } 435 436 static int irc_cmd_topic( irc_t *irc, char **cmd ) 404 } 405 406 static void irc_cmd_topic( irc_t *irc, char **cmd ) 437 407 { 438 408 if( cmd[2] ) … … 440 410 else 441 411 irc_topic( irc, cmd[1] ); 442 443 return( 1 ); 444 } 445 446 static int irc_cmd_away( irc_t *irc, char **cmd ) 412 } 413 414 static void irc_cmd_away( irc_t *irc, char **cmd ) 447 415 { 448 416 user_t *u = user_find( irc, irc->nick ); … … 450 418 char *away = cmd[1]; 451 419 452 if( !u ) return ( 1 );420 if( !u ) return; 453 421 454 422 if( away && *away ) … … 482 450 c = c->next; 483 451 } 484 485 return( 1 ); 486 } 487 488 static int irc_cmd_whois( irc_t *irc, char **cmd ) 452 } 453 454 static void irc_cmd_whois( irc_t *irc, char **cmd ) 489 455 { 490 456 char *nick = cmd[1]; … … 512 478 irc_reply( irc, 401, "%s :Nick does not exist", nick ); 513 479 } 514 515 return( 1 ); 516 } 517 518 static int irc_cmd_whowas( irc_t *irc, char **cmd ) 480 } 481 482 static void irc_cmd_whowas( irc_t *irc, char **cmd ) 519 483 { 520 484 /* For some reason irssi tries a whowas when whois fails. We can … … 525 489 irc_reply( irc, 406, "%s :Nick does not exist", cmd[1] ); 526 490 irc_reply( irc, 369, "%s :End of WHOWAS", cmd[1] ); 527 528 return( 1 ); 529 } 530 531 static int irc_cmd_nickserv( irc_t *irc, char **cmd ) 491 } 492 493 static void irc_cmd_nickserv( irc_t *irc, char **cmd ) 532 494 { 533 495 /* [SH] This aliases the NickServ command to PRIVMSG root */ 534 496 /* [TV] This aliases the NS command to PRIVMSG root as well */ 535 497 root_command( irc, cmd + 1 ); 536 537 return( 1 ); 538 } 539 540 static int irc_cmd_motd( irc_t *irc, char **cmd ) 498 } 499 500 static void irc_cmd_motd( irc_t *irc, char **cmd ) 541 501 { 542 502 irc_motd( irc ); 543 544 return( 1 ); 545 } 546 547 static int irc_cmd_pong( irc_t *irc, char **cmd ) 503 } 504 505 static void irc_cmd_pong( irc_t *irc, char **cmd ) 548 506 { 549 507 /* We could check the value we get back from the user, but in … … 551 509 irc->last_pong = gettime(); 552 510 irc->pinging = 0; 553 554 return( 1 ); 555 } 556 557 static int irc_cmd_completions( irc_t *irc, char **cmd ) 511 } 512 513 static void irc_cmd_completions( irc_t *irc, char **cmd ) 558 514 { 559 515 user_t *u = user_find( irc, irc->mynick ); … … 574 530 575 531 irc_privmsg( irc, u, "NOTICE", irc->nick, "COMPLETIONS ", "END" ); 576 577 return( 1 ); 578 } 579 580 static int irc_cmd_rehash( irc_t *irc, char **cmd ) 532 } 533 534 static void irc_cmd_rehash( irc_t *irc, char **cmd ) 581 535 { 582 536 if( global.conf->runmode == RUNMODE_INETD ) … … 586 540 587 541 irc_reply( irc, 382, "%s :Rehashing", CONF_FILE ); 588 589 return( 1 );590 542 } 591 543 … … 625 577 }; 626 578 627 intirc_exec( irc_t *irc, char *cmd[] )579 void irc_exec( irc_t *irc, char *cmd[] ) 628 580 { 629 int i , j;581 int i; 630 582 631 583 if( !cmd[0] ) 632 return ( 1 );584 return; 633 585 634 586 for( i = 0; irc_commands[i].command; i++ ) … … 638 590 { 639 591 irc_reply( irc, 462, ":Only allowed before logging in" ); 640 return( 1 ); 641 } 642 if( irc_commands[i].flags & IRC_CMD_LOGGED_IN && irc->status < USTATUS_LOGGED_IN ) 592 } 593 else if( irc_commands[i].flags & IRC_CMD_LOGGED_IN && irc->status < USTATUS_LOGGED_IN ) 643 594 { 644 595 irc_reply( irc, 451, ":Register first" ); 645 return( 1 ); 646 } 647 if( irc_commands[i].flags & IRC_CMD_OPER_ONLY && !strchr( irc->umode, 'o' ) ) 596 } 597 else if( irc_commands[i].flags & IRC_CMD_OPER_ONLY && !strchr( irc->umode, 'o' ) ) 648 598 { 649 599 irc_reply( irc, 481, ":Permission denied - You're not an IRC operator" ); 650 return( 1 ); 651 } 652 653 for( j = 1; j <= irc_commands[i].required_parameters; j ++ ) 654 if( !cmd[j] ) 655 { 656 irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); 657 return( 1 ); 658 } 659 660 if( irc_commands[i].flags & IRC_CMD_TO_MASTER ) 600 } 601 else if( !cmd[irc_commands[i].required_parameters] ) 602 { 603 irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); 604 } 605 else if( irc_commands[i].flags & IRC_CMD_TO_MASTER ) 606 { 661 607 /* IPC doesn't make sense in inetd mode, 662 608 but the function will catch that. */ 663 609 ipc_to_master( cmd ); 610 } 664 611 else 665 return irc_commands[i].execute( irc, cmd ); 666 } 667 668 return( 1 ); 669 } 612 { 613 irc_commands[i].execute( irc, cmd ); 614 } 615 616 break; 617 } 618 }
Note: See TracChangeset
for help on using the changeset viewer.