~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to librpc/tables.pl

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl -w
 
2
 
 
3
###################################################
 
4
# package to produce a table of all idl parsers
 
5
# Copyright tridge@samba.org 2003
 
6
# Copyright jelmer@samba.org 2005
 
7
# released under the GNU GPL
 
8
 
 
9
use strict;
 
10
 
 
11
use Getopt::Long;
 
12
use File::Basename;
 
13
 
 
14
my $opt_output = 'librpc/gen_ndr/tables.c';
 
15
my $opt_help  = 0;
 
16
 
 
17
 
 
18
#########################################
 
19
# display help text
 
20
sub ShowHelp()
 
21
{
 
22
    print "
 
23
           perl NDR interface table generator
 
24
           Copyright (C) tridge\@samba.org
 
25
 
 
26
           Usage: tables.pl [options] <idlfile>
 
27
 
 
28
           \n";
 
29
    exit(0);
 
30
}
 
31
 
 
32
# main program
 
33
GetOptions (
 
34
            'help|h|?' => \$opt_help, 
 
35
            'output=s' => \$opt_output,
 
36
            );
 
37
 
 
38
if ($opt_help) {
 
39
    ShowHelp();
 
40
    exit(0);
 
41
}
 
42
 
 
43
my $init_fns = "";
 
44
 
 
45
###################################
 
46
# extract table entries from 1 file
 
47
sub process_file($)
 
48
{
 
49
        my $filename = shift;
 
50
        open(FILE, $filename) || die "unable to open $filename\n";
 
51
        my $found = 0;
 
52
 
 
53
        while (my $line = <FILE>) {
 
54
                if ($line =~ /extern const struct ndr_interface_table (\w+);/) {
 
55
                        $found = 1;
 
56
                        $init_fns.="\tstatus = ndr_table_register(&$1);\n";
 
57
                        $init_fns.="\tif (NT_STATUS_IS_ERR(status)) return status;\n\n";
 
58
                }
 
59
        }
 
60
 
 
61
        if ($found) {
 
62
                print "#include \"$filename\"\n";
 
63
        }
 
64
 
 
65
        close(FILE);
 
66
}
 
67
 
 
68
print <<EOF;
 
69
 
 
70
/* Automatically generated by tables.pl. DO NOT EDIT */
 
71
 
 
72
#include "includes.h"
 
73
#include "librpc/ndr/libndr.h"
 
74
#include "librpc/ndr/ndr_table.h"
 
75
EOF
 
76
 
 
77
process_file($_) foreach (@ARGV);
 
78
 
 
79
print <<EOF;
 
80
 
 
81
NTSTATUS ndr_table_register_builtin_tables(void)
 
82
{
 
83
        NTSTATUS status;
 
84
 
 
85
$init_fns
 
86
        
 
87
        return NT_STATUS_OK;
 
88
}
 
89
EOF