- /* These three are special (can occur without
- * full user registration) and so are saved
- * for later use.
- */
- command_user = new cmd_user(ServerInstance);
- command_nick = new cmd_nick(ServerInstance);
- command_pass = new cmd_pass(ServerInstance);
- this->CreateCommand(command_user);
- this->CreateCommand(command_nick);
- this->CreateCommand(command_pass);
-
- /* The rest of these arent special. boo hoo.
- */
- this->CreateCommand(new cmd_quit(ServerInstance));
- this->CreateCommand(new cmd_version(ServerInstance));
- this->CreateCommand(new cmd_ping(ServerInstance));
- this->CreateCommand(new cmd_pong(ServerInstance));
- this->CreateCommand(new cmd_admin(ServerInstance));
- this->CreateCommand(new cmd_privmsg(ServerInstance));
- this->CreateCommand(new cmd_info(ServerInstance));
- this->CreateCommand(new cmd_time(ServerInstance));
- this->CreateCommand(new cmd_whois(ServerInstance));
- this->CreateCommand(new cmd_wallops(ServerInstance));
- this->CreateCommand(new cmd_notice(ServerInstance));
- this->CreateCommand(new cmd_join(ServerInstance));
- this->CreateCommand(new cmd_names(ServerInstance));
- this->CreateCommand(new cmd_part(ServerInstance));
- this->CreateCommand(new cmd_kick(ServerInstance));
- this->CreateCommand(new cmd_mode(ServerInstance));
- this->CreateCommand(new cmd_topic(ServerInstance));
- this->CreateCommand(new cmd_who(ServerInstance));
- this->CreateCommand(new cmd_motd(ServerInstance));
- this->CreateCommand(new cmd_rules(ServerInstance));
- this->CreateCommand(new cmd_oper(ServerInstance));
- this->CreateCommand(new cmd_list(ServerInstance));
- this->CreateCommand(new cmd_die(ServerInstance));
- this->CreateCommand(new cmd_restart(ServerInstance));
- this->CreateCommand(new cmd_kill(ServerInstance));
- this->CreateCommand(new cmd_rehash(ServerInstance));
- this->CreateCommand(new cmd_lusers(ServerInstance));
- this->CreateCommand(new cmd_stats(ServerInstance));
- this->CreateCommand(new cmd_userhost(ServerInstance));
- this->CreateCommand(new cmd_away(ServerInstance));
- this->CreateCommand(new cmd_ison(ServerInstance));
- this->CreateCommand(new cmd_summon(ServerInstance));
- this->CreateCommand(new cmd_users(ServerInstance));
- this->CreateCommand(new cmd_invite(ServerInstance));
- this->CreateCommand(new cmd_trace(ServerInstance));
- this->CreateCommand(new cmd_whowas(ServerInstance));
- this->CreateCommand(new cmd_connect(ServerInstance));
- this->CreateCommand(new cmd_squit(ServerInstance));
- this->CreateCommand(new cmd_modules(ServerInstance));
- this->CreateCommand(new cmd_links(ServerInstance));
- this->CreateCommand(new cmd_map(ServerInstance));
- this->CreateCommand(new cmd_kline(ServerInstance));
- this->CreateCommand(new cmd_gline(ServerInstance));
- this->CreateCommand(new cmd_zline(ServerInstance));
- this->CreateCommand(new cmd_qline(ServerInstance));
- this->CreateCommand(new cmd_eline(ServerInstance));
- this->CreateCommand(new cmd_loadmodule(ServerInstance));
- this->CreateCommand(new cmd_unloadmodule(ServerInstance));
- this->CreateCommand(new cmd_server(ServerInstance));
- this->CreateCommand(new cmd_commands(ServerInstance));
+ printf("\nLoading core commands");
+ fflush(stdout);
+
+ DIR* library = opendir(LIBRARYDIR);
+ if (library)
+ {
+ dirent* entry = NULL;
+ while (0 != (entry = readdir(library)))
+ {
+ if (InspIRCd::Match(entry->d_name, "cmd_*.so", ascii_case_insensitive_map))
+ {
+ printf(".");
+ fflush(stdout);
+
+ const char* err = this->LoadCommand(entry->d_name);
+ if (err)
+ {
+ printf("Error loading %s: %s", entry->d_name, err);
+ exit(EXIT_STATUS_BADHANDLER);
+ }
+ }
+ }
+ closedir(library);
+ printf("\n");
+ }
+
+ if (cmdlist.find("RELOAD") == cmdlist.end())
+ this->CreateCommand(new CommandReload(ServerInstance));