ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/ermyth/modules/operserv/modinspect.C
Revision: 1.3
Committed: Sat Jul 21 13:23:21 2007 UTC (19 years, 3 months ago) by pippijn
Content type: text/plain
Branch: MAIN
Changes since 1.2: +2 -2 lines
Log Message:
- added rcsid to some files
- more documentation tweaks
- made most protocol commands local to phandler.C
- added ircd metadata (inspircd only for now)
- added inspircd swhois support

File Contents

# User Rev Content
1 pippijn 1.1 /*
2     * Copyright © 2005-2006 Atheme Development Group
3 pippijn 1.2 * Rights to this code are as documented in doc/pod/license.pod.
4 pippijn 1.1 *
5     * A simple module inspector.
6     *
7 pippijn 1.3 * $Id: modinspect.C,v 1.2 2007-07-21 01:29:09 pippijn Exp $
8 pippijn 1.1 */
9    
10     #include "atheme.h"
11    
12 pippijn 1.3 static char const rcsid[] = "$Id$";
13 pippijn 1.1
14     struct os_modinspect_listeners : callback::has_listeners
15     {
16     };
17    
18     os_modinspect_listeners listeners;
19    
20     DECLARE_MODULE_V1 ("operserv/modinspect", false, _modinit, _moddeinit, rcsid, "The Ermyth Team <http://ermyth.schmorp.de>");
21    
22     static void os_cmd_modinspect (sourceinfo_t *si, int parc, char *parv[]);
23    
24     cmdvec *os_cmdtree;
25     helpvec *os_helptree;
26    
27     command_t os_modinspect = { "MODINSPECT", N_("Displays information about loaded modules."),
28     PRIV_SERVER_AUSPEX, 1, os_cmd_modinspect
29     };
30    
31     void
32     _modinit (module_t *m)
33     {
34     MODULE_USE_SYMBOL_T (os_cmdtree, cmdvec, "operserv/main", "os_cmdtree");
35     MODULE_USE_SYMBOL_T (os_helptree, helpvec, "operserv/main", "os_helptree");
36    
37     os_cmdtree << os_modinspect;
38     help_addentry (os_helptree, "MODINSPECT", "help/oservice/modinspect", NULL);
39     }
40    
41     void
42     _moddeinit (void)
43     {
44     os_cmdtree >> os_modinspect;
45     help_delentry (os_helptree, "MODINSPECT");
46     }
47    
48     static void
49     os_cmd_modinspect (sourceinfo_t *si, int parc, char *parv[])
50     {
51     char *mname = parv[0];
52     module_t *m;
53    
54     if (!mname)
55     {
56     command_fail (si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "MODINSPECT");
57     command_fail (si, fault_needmoreparams, _("Syntax: MODINSPECT <module>"));
58     return;
59     }
60    
61     logcommand (si, CMDLOG_GET, "MODINSPECT %s", mname);
62    
63     m = module_find_published (mname);
64    
65     if (!m)
66     {
67     command_fail (si, fault_nosuch_target, _("\2%s\2 is not loaded."), mname);
68     return;
69     }
70    
71     /* Is there a header? */
72     if (!m->header)
73     {
74     command_fail (si, fault_unimplemented, _("\2%s\2 cannot be inspected."), mname);
75     return;
76     }
77    
78     command_success_nodata (si, _("Information on \2%s\2:"), mname);
79     command_success_nodata (si, _("Name : %s"), m->header->name);
80     command_success_nodata (si, _("Address : %p"), m->address);
81     command_success_nodata (si, _("Entry point: %p"), m->header->modinit);
82     command_success_nodata (si, _("Exit point : %p"), m->header->deinit);
83     command_success_nodata (si, _("Version : %s"), m->header->version);
84     command_success_nodata (si, _("Vendor : %s"), m->header->vendor);
85     command_success_nodata (si, _("*** \2End of Info\2 ***"));
86     }
87    
88     /* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
89     * vim:ts=8
90     * vim:sw=8
91     * vim:noexpandtab
92     */