]>
jfr.im git - irc/quakenet/newserv.git/blob - splitlist/splitlist_commands.c
1 /* oper commands for the splitlist */
3 #include "../lib/irc_string.h"
4 #include "../irc/irc.h"
5 #include "../splitlist/splitlist.h"
6 #include "../serverlist/serverlist.h"
7 #include "../control/control.h"
8 #include "../lib/version.h"
12 int spcmd_splitlist(void *source
, int cargc
, char **cargv
);
13 int spcmd_splitdel(void *source
, int cargc
, char **cargv
);
16 registercontrolhelpcmd("splitlist", NO_STAFF
, 0, &spcmd_splitlist
, "Usage: splitlist\nLists servers currently split from the network.");
17 registercontrolcmd("splitdel", 10, 1, &spcmd_splitdel
);
21 deregistercontrolcmd("splitlist", &spcmd_splitlist
);
22 deregistercontrolcmd("splitdel", &spcmd_splitdel
);
25 /* todo: add RELINK status */
26 int spcmd_splitlist(void *source
, int cargc
, char **cargv
) {
27 nick
*np
= (nick
*)source
;
31 if (splitlist
.cursi
== 0) {
32 controlreply(np
, "There currently aren't any registered splits.");
37 controlreply(np
, "Server Status Split for");
39 for (i
= 0; i
< splitlist
.cursi
; i
++) {
40 srv
= ((splitserver
*)splitlist
.content
)[i
];
42 controlreply(np
, "%s M.I.A. %s (%s)", srv
.name
->content
, longtoduration(getnettime() - srv
.ts
, 1), printflags(srv
.type
, servertypeflags
));
45 controlreply(np
, "--- End of splitlist");
50 int spcmd_splitdel(void *source
, int cargc
, char **cargv
) {
51 nick
*np
= (nick
*)source
;
56 controlreply(np
, "Syntax: splitdel <pattern>");
63 for (i
= splitlist
.cursi
- 1; i
>= 0; i
--) {
64 srv
= ((splitserver
*)splitlist
.content
)[i
];
66 if (match2strings(cargv
[0], srv
.name
->content
)) {
67 sp_deletesplit(srv
.name
->content
); /* inefficient .. but it doesn't matter */
72 controlreply(np
, "%d %s deleted.", count
, count
!= 1 ? "splits" : "split");