Annotation of embedaddon/rsync/packaging/cull_options, revision 1.1
1.1 ! misho 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>