]>
jfr.im git - irc/quakenet/newserv.git/blob - lua/luacontrol.c
1 /* Copyright (C) Chris Porter 2005 */
2 /* ALL RIGHTS RESERVED. */
3 /* Don't put this into the SVN repo. */
4 /* Copyright (C) Chris Porter 2005 */
6 #include "../control/control.h"
7 #include "../nick/nick.h"
11 int lua_inslua(void *sender
, int cargc
, char **cargv
);
12 int lua_rmlua(void *sender
, int cargc
, char **cargv
);
13 int lua_reloadlua(void *sender
, int cargc
, char **cargv
);
14 int lua_lslua(void *sender
, int cargc
, char **cargv
);
16 void lua_startcontrol(void) {
17 registercontrolhelpcmd("inslua", NO_DEVELOPER
, 1, &lua_inslua
, "Usage: inslua <script>\nLoads the supplied Lua script..");
18 registercontrolhelpcmd("rmlua", NO_DEVELOPER
, 1, &lua_rmlua
, "Usage: rmlua <script>\nUnloads the supplied Lua script.");
19 registercontrolhelpcmd("reloadlua", NO_DEVELOPER
, 1, &lua_reloadlua
, "Usage: reloadlua <script>\nReloads the supplied Lua script.");
20 registercontrolhelpcmd("lslua", NO_DEVELOPER
, 0, &lua_lslua
, "Usage: lslua\nLists all currently loaded Lua scripts and shows their memory usage.");
23 void lua_destroycontrol(void) {
24 deregistercontrolcmd("inslua", &lua_inslua
);
25 deregistercontrolcmd("rmlua", &lua_rmlua
);
26 deregistercontrolcmd("reloadlua", &lua_reloadlua
);
27 deregistercontrolcmd("lslua", &lua_lslua
);
31 int lua_inslua(void *sender
, int cargc
, char **cargv
) {
32 nick
*np
= (nick
*)sender
;
33 char *script
= cargv
[0];
36 controlreply(np
, "Usage: inslua <script>");
40 if(lua_scriptloaded(script
)) {
41 controlreply(np
, "Script %s already loaded, or name not valid.", script
);
45 if(lua_loadscript(script
)) {
46 controlreply(np
, "Script %s loaded.", script
);
49 controlreply(np
, "Unable to load script %s.", script
);
54 int lua_rmlua(void *sender
, int cargc
, char **cargv
) {
55 nick
*np
= (nick
*)sender
;
56 char *script
= cargv
[0];
60 controlreply(np
, "Usage: rmmod <script>");
64 l
= lua_scriptloaded(script
);
66 controlreply(np
, "Script %s is not loaded.", script
);
71 controlreply(np
, "Script %s unloaded.", script
);
76 int lua_reloadlua(void *sender
, int cargc
, char **cargv
) {
78 controlreply((nick
*)sender
, "Usage: reloadlua <script>");
82 lua_rmlua(sender
, cargc
, cargv
);
84 return lua_inslua(sender
, cargc
, cargv
);
87 int lua_lslua(void *sender
, int cargc
, char **cargv
) {
88 nick
*np
= (nick
*)sender
;
89 lua_list
*l
= lua_head
;
91 controlreply(np
, "Loaded scripts:");
93 for(l
=lua_head
;l
;l
=l
->next
)
94 controlreply(np
, "%s (mem: %dKb calls: %lu user: %0.2fs sys: %0.2fs)", l
->name
->content
, lua_gc(l
->l
, LUA_GCCOUNT
, 0), l
->calls
, (double)((double)l
->ru_utime
.tv_sec
+ (double)l
->ru_utime
.tv_usec
/ USEC_DIFFERENTIAL
), (double)((double)l
->ru_stime
.tv_sec
+ (double)l
->ru_stime
.tv_usec
/ USEC_DIFFERENTIAL
));
96 controlreply(np
, "Done.");