============ Cmd_AddCommand ============ */
| 607 | ============ |
| 608 | */ |
| 609 | void Cmd_AddCommand( const char *cmd_name, xcommand_t function ) { |
| 610 | cmd_function_t *cmd; |
| 611 | |
| 612 | // fail if the command already exists |
| 613 | if( Cmd_FindCommand( cmd_name ) ) |
| 614 | { |
| 615 | // allow completion-only commands to be silently doubled |
| 616 | if ( function != NULL ) { |
| 617 | Com_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name); |
| 618 | } |
| 619 | return; |
| 620 | } |
| 621 | |
| 622 | // use a small malloc to avoid zone fragmentation |
| 623 | cmd = (struct cmd_function_s *)S_Malloc (sizeof(cmd_function_t)); |
| 624 | cmd->name = CopyString( cmd_name ); |
| 625 | cmd->function = function; |
| 626 | cmd->complete = NULL; |
| 627 | cmd->next = cmd_functions; |
| 628 | cmd_functions = cmd; |
| 629 | } |
| 630 | |
| 631 | /* |
| 632 | ============ |
no test coverage detected