File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / packaging / cull_options
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Fri Feb 17 15:09:30 2012 UTC (12 years, 4 months ago) by misho
Branches: rsync, MAIN
CVS tags: rsync3_0_9p0, RSYNC3_1_0, RSYNC3_0_9, HEAD
rsync

    1: #!/usr/bin/perl
    2: # This script outputs some perl code that parses all possible options
    3: # that the code in options.c might send to the server.  This perl code
    4: # is included in the rrsync script.
    5: use strict;
    6: 
    7: our %short_no_arg;
    8: our %short_with_num;
    9: our %long_opt = (
   10:     'daemon' => -1,
   11:     'fake-super' => 0,
   12:     'log-file' => 3,
   13: );
   14: our $last_long_opt;
   15: 
   16: open(IN, '../options.c') or die "Unable to open ../options.c: $!\n";
   17: 
   18: while (<IN>) {
   19:     if (/\Qargstr[x++]\E = '([^.ie])'/) {
   20: 	$short_no_arg{$1} = 1;
   21: 	undef $last_long_opt;
   22:     } elsif (/\Qasprintf(\E[^,]+, "-([a-zA-Z0-9])\%l?[ud]"/) {
   23: 	$short_with_num{$1} = 1;
   24: 	undef $last_long_opt;
   25:     } elsif (/\Qargs[ac++]\E = "--([^"=]+)"/) {
   26: 	$last_long_opt = $1;
   27: 	$long_opt{$1} = 0 unless exists $long_opt{$1};
   28:     } elsif (defined($last_long_opt)
   29: 	&& /\Qargs[ac++]\E = ([^["\s]+);/ && $1 ne 'dest_option') {
   30: 	$long_opt{$last_long_opt} = 2;
   31: 	undef $last_long_opt;
   32:     } elsif (/dest_option = "--([^"]+)"/) {
   33: 	$long_opt{$1} = 2;
   34: 	undef $last_long_opt;
   35:     } elsif (/\Qasprintf(\E[^,]+, "--([^"=]+)=/ || /\Qargs[ac++]\E = "--([^"=]+)=/) {
   36: 	$long_opt{$1} = 1;
   37: 	undef $last_long_opt;
   38:     }
   39: }
   40: close IN;
   41: 
   42: my $short_no_arg = join('', sort keys %short_no_arg);
   43: my $short_with_num = join('', sort keys %short_with_num);
   44: 
   45: print <<EOT;
   46: 
   47: # These options are the only options that rsync might send to the server,
   48: # and only in the option format that the stock rsync produces.
   49: 
   50: # To disable a short-named option, add its letter to this string:
   51: our \$short_disabled = 's';
   52: 
   53: our \$short_no_arg = '$short_no_arg'; # DO NOT REMOVE ANY
   54: our \$short_with_num = '$short_with_num'; # DO NOT REMOVE ANY
   55: 
   56: # To disable a long-named option, change its value to a -1.  The values mean:
   57: # 0 = the option has no arg; 1 = the arg doesn't need any checking; 2 = only
   58: # check the arg when receiving; and 3 = always check the arg.
   59: our \%long_opt = (
   60: EOT
   61: 
   62: foreach my $opt (sort keys %long_opt) {
   63:     my $val = $long_opt{$opt};
   64:     $val = 1 if $opt =~ /^(max-|min-)/;
   65:     $val = 3 if $opt eq 'files-from';
   66:     $val = '$ro ? -1 : ' . $val if $opt =~ /^remove-/;
   67:     print "  '$opt' => $val,\n";
   68: }
   69: 
   70: print ");\n\n";

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>