]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/mkcommandlist.pl
tidy warnings
[irc/quakenet/newserv.git] / chanserv / mkcommandlist.pl
CommitLineData
1dd6d55d 1#!/usr/bin/perl -w
2
3use strict;
4
5my @cmdnames;
6my @cmdlevels;
7my @cmdargs;
8my @cmddesc;
9my @cmdfunc;
10my @protos;
11my @files;
35227ed4 12my @help;
1dd6d55d 13
14my @filelist = <*.c>;
15
16my $modname;
17
18unless (@ARGV) {
19 print "Usage: $0 <module name>\n";
20 exit(0);
21} else {
22 $modname=$ARGV[0];
23}
24
b3565978
CP
25my $smallname;
26$smallname=$modname;
b3565978
CP
27$smallname=~s/\.so$//;
28
4bad6412
CP
29my $cname;
30$cname=$smallname . ".c";
31$smallname=~s/^chanserv_//;
32
33
1dd6d55d 34for (@filelist) {
35 next if (/commandlist.c/);
4bad6412 36 next if ($_ eq $cname);
1dd6d55d 37
38 my $fname = $_;
35227ed4 39 my ($cn, $cl, $ca, $cd, $cf, $cp, $ch);
40 $ch="";
1dd6d55d 41
42 open INFILE,"<$fname";
43
44 while(<INFILE>) {
45 chomp;
46
47 if (/CMDNAME: (.*)/) {
48 $cn=$1;
49 }
50
51 if (/CMDLEVEL: (.*)/) {
52 $cl=$1;
53 }
54
55 if (/CMDARGS: (.*)/) {
56 $ca=$1;
57 }
58
59 if (/CMDDESC: (.*)/) {
60 $cd=$1;
61 }
62
63 if (/CMDFUNC: (.*)/) {
64 $cf=$1;
65 }
66
67 if (/CMDPROTO: (.*)/) {
68 $cp=$1;
69 }
35227ed4 70
71 if (/CMDHELP: (.*)/) {
72 $ch.=$1."\\n";
73 }
1dd6d55d 74 }
75
76 if (defined $cn and defined $cl and defined $ca and defined $cd and defined $cf and defined $cp) {
77 # valid command found
78 push @files, $fname;
79 push @cmdnames, $cn;
80 push @cmdlevels, $cl;
81 push @cmdargs, $ca;
82 push @cmddesc, $cd;
83 push @cmdfunc, $cf;
84 push @protos, $cp;
35227ed4 85 push @help, $ch;
1dd6d55d 86 } else {
87 print "Warning: found source file $fname without complete tags, skipping...\n";
88 }
89}
90
91if (@files < 1) {
92 print "No commands found - are you in the right directory?\n";
93 print "Exiting before I destroy something important.\n";
94 exit(0);
95}
96
97
98open CL, ">commandlist.c";
99
100print CL "/* Automatically generated by mkcommandlist.pl, do not edit. */\n\n";
101print CL "#include \"../chanserv.h\"\n\n";
102
103# Print prototypes
104print CL "/* Prototypes */\n";
105foreach (@protos) {
106 print CL "$_\n";
107}
108
109my @names2 = @cmdnames;
110my @func2 = @cmdfunc;
111
b3565978
CP
112print CL "void ".$smallname."_init(void);\n";
113print CL "void ".$smallname."_fini(void);\n\n";
114
1dd6d55d 115print CL "\nvoid _init() {\n";
b3565978 116print CL " ".$smallname."_init();\n";
1dd6d55d 117
118while (my $cn = shift @cmdnames) {
119 print CL " chanservaddcommand(\"".$cn."\", ".(shift @cmdlevels).", ".(shift @cmdargs).", ";
35227ed4 120 print CL (shift @cmdfunc).", \"".(shift @cmddesc)."\", \"".(shift @help),"\");\n";
1dd6d55d 121}
122
123print CL "}\n\nvoid _fini() {\n";
b3565978 124print CL " ".$smallname."_fini();\n";
1dd6d55d 125
126while (my $cn = shift @names2) {
127 print CL " chanservremovecommand(\"".$cn."\", ".(shift @func2).");\n";
128}
129
130print CL "}\n";
131
132close CL;
133
4bad6412 134open MF,">autobuild.mk";
1dd6d55d 135
4bad6412 136print MF "# Automatically generated Makefile, do not edit.\n";
1dd6d55d 137
138print MF "\n$modname: ";
139
140push @files,"commandlist.c";
4bad6412
CP
141
142push @files,$cname;
1dd6d55d 143
144foreach (@files) {
145 s/.c$/.o/;
146 print MF "$_ ";
147}
148
149print MF "\n";
1dd6d55d 150
151close MF;