]>
Commit | Line | Data |
---|---|---|
2da56f0d CP |
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 */ | |
5 | ||
6 | #include "../control/control.h" | |
7 | #include "../nick/nick.h" | |
8 | ||
9 | #include "lua.h" | |
10 | ||
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); | |
15 | ||
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."); | |
d0d1e2a3 | 20 | registercontrolhelpcmd("lslua", NO_DEVELOPER, 0, &lua_lslua, "Usage: lslua\nLists all currently loaded Lua scripts and shows their memory usage."); |
2da56f0d CP |
21 | } |
22 | ||
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); | |
28 | } | |
29 | ||
30 | ||
31 | int lua_inslua(void *sender, int cargc, char **cargv) { | |
32 | nick *np = (nick *)sender; | |
33 | char *script = cargv[0]; | |
34 | ||
35 | if(cargc < 1) { | |
36 | controlreply(np, "Usage: inslua <script>"); | |
37 | return CMD_ERROR; | |
38 | } | |
39 | ||
40 | if(lua_scriptloaded(script)) { | |
41 | controlreply(np, "Script %s already loaded, or name not valid.", script); | |
42 | return CMD_ERROR; | |
43 | } | |
44 | ||
45 | if(lua_loadscript(script)) { | |
46 | controlreply(np, "Script %s loaded.", script); | |
47 | return CMD_OK; | |
48 | } else { | |
49 | controlreply(np, "Unable to load script %s.", script); | |
50 | return CMD_ERROR; | |
51 | } | |
52 | } | |
53 | ||
54 | int lua_rmlua(void *sender, int cargc, char **cargv) { | |
55 | nick *np = (nick *)sender; | |
56 | char *script = cargv[0]; | |
57 | lua_list *l; | |
58 | ||
59 | if(cargc < 1) { | |
60 | controlreply(np, "Usage: rmmod <script>"); | |
61 | return CMD_ERROR; | |
62 | } | |
63 | ||
64 | l = lua_scriptloaded(script); | |
65 | if(!l) { | |
66 | controlreply(np, "Script %s is not loaded.", script); | |
67 | return CMD_ERROR; | |
68 | } | |
69 | ||
70 | lua_unloadscript(l); | |
71 | controlreply(np, "Script %s unloaded.", script); | |
72 | ||
73 | return CMD_OK; | |
74 | } | |
75 | ||
76 | int lua_reloadlua(void *sender, int cargc, char **cargv) { | |
77 | if(cargc < 1) { | |
78 | controlreply((nick *)sender, "Usage: reloadlua <script>"); | |
79 | return CMD_ERROR; | |
80 | } | |
81 | ||
82 | lua_rmlua(sender, cargc, cargv); | |
83 | ||
84 | return lua_inslua(sender, cargc, cargv); | |
85 | } | |
86 | ||
87 | int lua_lslua(void *sender, int cargc, char **cargv) { | |
88 | nick *np = (nick *)sender; | |
89 | lua_list *l = lua_head; | |
90 | ||
91 | controlreply(np, "Loaded scripts:"); | |
92 | ||
93 | for(l=lua_head;l;l=l->next) | |
fe0f6b25 | 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)); |
2da56f0d CP |
95 | |
96 | controlreply(np, "Done."); | |
97 | ||
98 | return CMD_OK; | |
99 | } | |
100 |