| 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 | }
 | 
|---|