65 lines
2.0 KiB
Perl
Executable File
65 lines
2.0 KiB
Perl
Executable File
#!/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, %short_with_num, %long_opt);
|
|
our $last_long_opt;
|
|
|
|
open(IN, '../options.c') or die "Unable to open ../options.c: $!\n";
|
|
|
|
while (<IN>) {
|
|
if (/\Qargstr[x++]\E = '(.)'/) {
|
|
$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 <<EOT;
|
|
|
|
# These options are the only options that rsync might send to the server,
|
|
# and only in the option format that the stock rsync produces.
|
|
|
|
# To disable a short-named option, add its letter to this string:
|
|
our \$short_disabled = 's';
|
|
|
|
our \$short_no_arg = '$short_no_arg'; # DO NOT REMOVE ANY
|
|
our \$short_with_num = '$short_with_num'; # DO NOT REMOVE ANY
|
|
|
|
# To disable a long-named option, change its value to a -1. The values mean:
|
|
# 0 = the option has no arg; 1 = the arg doesn't need any checking; 2 = only
|
|
# check the arg when receiving; and 3 = always check the arg.
|
|
our \%long_opt = (
|
|
EOT
|
|
|
|
foreach my $opt (sort keys %long_opt) {
|
|
my $val = $long_opt{$opt};
|
|
$val = 1 if $opt =~ /^(max-|min-)/;
|
|
$val = 3 if $opt eq 'files-from';
|
|
$val = '$ro ? -1 : ' . $val if $opt =~ /^remove-/;
|
|
print " '$opt' => $val,\n";
|
|
}
|
|
|
|
print ");\n\n";
|