1 | #! /usr/bin/perl5
|
---|
2 | ##
|
---|
3 | ## This is a simple script written by Herb Lewis @ SGI <herb@samba.org>
|
---|
4 | ## for reporting which parameters are supported by loadparm.c but
|
---|
5 | ## not by SWAT I just thought it looked fun and might be of interest to others
|
---|
6 | ## --jerry@samba.org
|
---|
7 | ##
|
---|
8 | ## Here is a little info on the usage and output format so you don't have
|
---|
9 | ## to dig through the code to understand what is printed.
|
---|
10 | ##
|
---|
11 | ## Useage: swat.pl [path_to_loadparm.c]
|
---|
12 | ##
|
---|
13 | ## The output consists of 4 columns of information
|
---|
14 | ## Option Name, Global Page, Share Page, Printer Page
|
---|
15 | ## The section separaters will also be printed (preceded by 16 *) to show
|
---|
16 | ## which options are grouped in the various sections.
|
---|
17 | ##
|
---|
18 | ## If the option name is preceded by an * it means this is a deprecated option.
|
---|
19 | ## If the option name is preceded by 5 spaces it means this is an alias for the
|
---|
20 | ## previous option.
|
---|
21 | ##
|
---|
22 | ## Under the Global Page, Share Page, and Printer Page columns there will be
|
---|
23 | ## one of 3 entries, BASIC, ADVANCED, or no. "BASIC" indicates this option will
|
---|
24 | ## show in the Basic View of that page in SWAT. "ADVANCED" indicates this
|
---|
25 | ## option will show in the Advanced View of that page in SWAT. "No" indicates
|
---|
26 | ## that this option is not available on that page in SWAT.
|
---|
27 | ##
|
---|
28 | ## Under the Global Page column, if an entry begins with an * it indicates that
|
---|
29 | ## this is actually specified in Samba as a "service parameter" not a "global
|
---|
30 | ## parameter" but you can set a default value for this on the Global Page in
|
---|
31 | ## SWAT.
|
---|
32 | ##
|
---|
33 | ## --herb@samba.org
|
---|
34 |
|
---|
35 | $lastone = "nothing";
|
---|
36 |
|
---|
37 | if (@ARGV[0]) {
|
---|
38 | $filename = @ARGV[0];
|
---|
39 | } else {
|
---|
40 | $filename = "/usr3/samba20/samba/source/param/loadparm.c";
|
---|
41 | }
|
---|
42 |
|
---|
43 | open (INFILE,$filename) || die "unable to open $filename\n";
|
---|
44 | while (not eof(INFILE))
|
---|
45 | {
|
---|
46 | $_ = <INFILE>;
|
---|
47 | last if ( /^static struct parm_struct parm_table/) ;
|
---|
48 | }
|
---|
49 | print "Option Name Global Page Share Page Printer Page\n";
|
---|
50 | print "---------------------------------------------------------------------";
|
---|
51 | while (not eof(INFILE))
|
---|
52 | {
|
---|
53 | $_ = <INFILE>;
|
---|
54 | last if (/};/);
|
---|
55 | @fields = split(/,/,$_);
|
---|
56 | next if not ($fields[0] =~ /^.*{"/);
|
---|
57 | $fields[0] =~ s/.*{"//;
|
---|
58 | $fields[0] =~ s/"//;
|
---|
59 | if ($fields[3] eq $lastone) {
|
---|
60 | print " $fields[0]\n";
|
---|
61 | next;
|
---|
62 | }
|
---|
63 | $lastone = $fields[3];
|
---|
64 | $fields[2] =~ s/^\s+//;
|
---|
65 | $fields[2] =~ s/\s+$//;
|
---|
66 | $fields[2] =~ s/}.*$//;
|
---|
67 | $fields[6] =~ s/^\s+//;
|
---|
68 | $fields[6] =~ s/\s+$//;
|
---|
69 | $fields[6] =~ s/}.*$//;
|
---|
70 | if ($fields[2] =~ /P_SEPARATOR/) {
|
---|
71 | print "\n****************$fields[0]\n";
|
---|
72 | next;
|
---|
73 | }
|
---|
74 | else {
|
---|
75 | if ($fields[6] =~ /FLAG_DEPRECATED/) {
|
---|
76 | print "*$fields[0]".' 'x(31-length($fields[0]));
|
---|
77 | }
|
---|
78 | else {
|
---|
79 | print "$fields[0]".' 'x(32-length($fields[0]));
|
---|
80 | }
|
---|
81 | }
|
---|
82 | if (($fields[2] =~ /P_GLOBAL/) || ($fields[6] =~ /FLAG_GLOBAL/)) {
|
---|
83 | if ($fields[6] =~ /FLAG_GLOBAL/) {
|
---|
84 | print "*";
|
---|
85 | }
|
---|
86 | else {
|
---|
87 | print " ";
|
---|
88 | }
|
---|
89 | if ($fields[6] =~ /FLAG_BASIC/) {
|
---|
90 | print "BASIC ";
|
---|
91 | }
|
---|
92 | else {
|
---|
93 | print "ADVANCED ";
|
---|
94 | }
|
---|
95 | }
|
---|
96 | else {
|
---|
97 | print " no ";
|
---|
98 | }
|
---|
99 | if ($fields[6] =~ /FLAG_SHARE/) {
|
---|
100 | if ($fields[6] =~ /FLAG_BASIC/) {
|
---|
101 | print "BASIC ";
|
---|
102 | }
|
---|
103 | else {
|
---|
104 | print "ADVANCED ";
|
---|
105 | }
|
---|
106 | }
|
---|
107 | else {
|
---|
108 | print "no ";
|
---|
109 | }
|
---|
110 | if ($fields[6] =~ /FLAG_PRINT/) {
|
---|
111 | if ($fields[6] =~ /FLAG_BASIC/) {
|
---|
112 | print "BASIC";
|
---|
113 | }
|
---|
114 | else {
|
---|
115 | print "ADVANCED";
|
---|
116 | }
|
---|
117 | }
|
---|
118 | else {
|
---|
119 | print "no";
|
---|
120 | }
|
---|
121 | print "\n";
|
---|
122 | }
|
---|