X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/214af6ad83f3cdaa728e03180f77b0396409c2f7..0668bfe077a9e2101f8ef0fea60780f30273a826:/packaging/cull_options diff --git a/packaging/cull_options b/packaging/cull_options new file mode 100755 index 00000000..3ef470df --- /dev/null +++ b/packaging/cull_options @@ -0,0 +1,70 @@ +#!/usr/bin/perl +# This script outputs some perl code that parses all possible options +# that the code in options.c might send to the server. This perl code +# is included in the rrsync script. +use strict; + +our %short_no_arg; +our %short_with_num; +our %long_opt = ( + 'no-i-r' => 0, + 'fake-super' => 0, + 'log-file' => 3, +); +our $last_long_opt; + +open(IN, '../options.c') or die "Unable to open ../options.c: $!\n"; + +while () { + if (/\Qargstr[x++]\E = '([^.ie])'/) { + $short_no_arg{$1} = 1; + undef $last_long_opt; + } elsif (/\Qasprintf(\E[^,]+, "-([a-zA-Z0-9])\%l?[ud]"/) { + $short_with_num{$1} = 1; + undef $last_long_opt; + } elsif (/\Qargs[ac++]\E = "--([^"=]+)"/) { + $last_long_opt = $1; + $long_opt{$1} = 0; + } elsif (defined($last_long_opt) + && /\Qargs[ac++]\E = ([^["\s]+);/ && $1 ne 'dest_option') { + $long_opt{$last_long_opt} = 2; + undef $last_long_opt; + } elsif (/dest_option = "--([^"]+)"/) { + $long_opt{$1} = 2; + undef $last_long_opt; + } elsif (/\Qasprintf(\E[^,]+, "--([^"=]+)=/ || /\Qargs[ac++]\E = "--([^"=]+)=/) { + $long_opt{$1} = 1; + undef $last_long_opt; + } +} +close IN; + +my $short_no_arg = join('', sort keys %short_no_arg); +my $short_with_num = join('', sort keys %short_with_num); + +print < $val,\n"; +} + +print ");\n\n";