- if (parc > 1) {
- struct Client *acptr;
- acptr = FindUser(parv[1]);
- if (acptr)
- parv[1] = cli_name(cli_user(acptr)->server);
- else if (!(acptr = find_match_server(parv[1])))
- return send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
-
- parv[1] = cli_name(acptr);
- if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, 0, ":%C", 1, parc, parv) != HUNTED_ISME)
- return 0;
- }
+ if (parc > 1 && match(parv[1], cli_name(&me)))
+ return send_reply(sptr, ERR_NOPRIVILEGES);
+
+ return send_admin_info(sptr);
+}
+
+/*
+ * mo_admin - oper message handler
+ *
+ * parv[0] = sender prefix
+ * parv[1] = servername
+ */
+int mo_admin(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+{
+ assert(0 != cptr);
+ assert(cptr == sptr);
+
+ if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, feature_int(FEAT_HIS_REMOTE),
+ ":%C", 1, parc, parv) != HUNTED_ISME)
+ return 0;