require "newgetopt.pl"; use Text::ParseWords; print DEBUG "FHOUT 6: ARGV[0]=" . $ARGV[0] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[1]=" . $ARGV[1] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[2]=" . $ARGV[2] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[3]=" . $ARGV[3] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[4]=" . $ARGV[4] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[5]=" . $ARGV[5] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[6]=" . $ARGV[6] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[7]=" . $ARGV[7] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[8]=" . $ARGV[8] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: ARGV[9]=" . $ARGV[9] . "\n" if ($debug == 1); $result = &NGetOpt ("config=s", "host=s", "disk=s", "device=s", "level=s", "index=s", "message=s", "collection", "record"); $result = $result; print DEBUG "FHOUT 6: config =" . $opt_config . "\n" if ($debug == 1); print DEBUG "FHOUT 6: disk =" . $opt_disk . "\n" if ($debug == 1); print DEBUG "FHOUT 6: host =" . $opt_host . "\n" if ($debug == 1); print DEBUG "FHOUT 6: device =" . $opt_device . "\n" if ($debug == 1); print DEBUG "FHOUT 6: level =" . $opt_level . "\n" if ($debug == 1); print DEBUG "FHOUT 6: index =" . $opt_index . "\n" if ($debug == 1); print DEBUG "FHOUT 6: message =" . $opt_message. "\n" if ($debug == 1); print DEBUG "FHOUT 6: collection=" . $opt_collection. "\n" if ($debug == 1); print DEBUG "FHOUT 6: record =" . $opt_record . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[0]=" . $ARGV[0] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[1]=" . $ARGV[1] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[2]=" . $ARGV[2] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[3]=" . $ARGV[3] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[4]=" . $ARGV[4] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[5]=" . $ARGV[5] . "\n" if ($debug == 1); print DEBUG "FHOUT 6: A-ARGV[6]=" . $ARGV[6] . "\n" if ($debug == 1); if (defined $opt_config) { $opt_config =~ /^([\_\.A-Za-z0-9]*)$/; $opt_config = $1; } if (defined $opt_host) { $opt_host =~ /^([\_\.A-Za-z0-9]*)$/; $opt_host = $1; } if (defined $opt_disk) { $opt_disk =~ /^([\/\_\:\.A-Za-z0-9]*)$/; $opt_disk = $1; } if (defined $opt_device) { $opt_device =~ /^([\/\_\:\.A-Za-z0-9]*)$/; $opt_device = $1; } if (defined $opt_level) { $opt_level =~ /^(\d)$/; $opt_level = $1; } # Read tool property $command = $ARGV[0]; %property = (); while($property_line = ) { chomp $property_line; ($prop_name, $prop_value) = shellwords($property_line); push @{$property{$prop_name}}, $prop_value; print DEBUG "$prop_name = $prop_value\n" if ($debug == 1); } if ($debug == 1) { foreach $prop_name (keys(%property)) { print DEBUG "PROPERTY: $prop_name\n"; print DEBUG " VALUE: ", join(',',@{$property{$prop_name}}) , "\n"; } } sub wrapper_support(); sub wrapper_selfcheck(); sub wrapper_estimate(); sub wrapper_backup(); sub wrapper_restore(); if ($command eq "support") { wrapper_support(); } elsif ($command eq "selfcheck") { wrapper_selfcheck(); } elsif ($command eq "estimate") { wrapper_estimate(); } elsif ($command eq "backup") { wrapper_backup(); } elsif ($command eq "restore") { wrapper_restore(); } else { printf STDERR "Unknown command `$command'.\n"; exit 1; } sub wrapper_support() { if(defined(&command_support)) { command_support($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); exit 0; } print "LEVEL 0-", $max_level , "\n" if defined($max_level); print "INDEX-LINE YES\n" if defined($index_line) && $index_line == 1; print "INDEX-XML NO\n" if defined($index_xml) && $index_xml == 1; print "MESSAGE-LINE YES\n" if defined($message_line) && $message_line == 1; print "MESSAGE-XML NO\n" if defined($message_xml) && $message_xml == 1; print "RECORD YES\n" if defined($record) && $record == 1; print "INCLUDE-FILE NO\n" if defined($include_file) && $include_file == 1; print "INCLUDE-LIST NO\n" if defined($include_list) && $include_list == 1; print "EXCLUDE-FILE NO\n" if defined($exclude_file) && $exclude_file == 1; print "EXCLUDE-LIST NO\n" if defined($exclude_list) && $exclude_list == 1; print "COLLECTION NO\n" if defined($collection) && $collection == 1; exit 1; } sub wrapper_selfcheck() { if(defined(&command_selfcheck)) { command_selfcheck($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { exit 1; } } sub wrapper_estimate() { if(defined(&command_estimate)) { command_estimate($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { exit 1; } } sub wrapper_estimate_parse() { if(defined(&command_estimate_parse)) { command_estimate_parse($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { printf STDERR "`estimate-parse' is not supported.\n"; exit 1; } } sub wrapper_backup() { if(defined(&command_backup)) { command_backup($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { print DEBUG "wrapper_backup: !defined(command_backup)\n" if ($debug == 1); exit 1; } } sub wrapper_backup_parse() { if(defined(&command_backup_parse)) { command_backup_parse($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { printf STDERR "`backup-parse' is not supported.\n"; exit 1; } } sub wrapper_index_from_output() { if(defined(&command_index_from_output)) { command_index_from_output($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { printf STDERR "`index-from-output' is not supported.\n"; exit 1; } } sub wrapper_index_from_image() { if(defined(&command_index_from_image)) { command_index_from_image($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { printf STDERR "command `index-from-image' is not supported.\n"; exit 1; } } sub wrapper_restore() { if(defined(&command_restore)) { command_restore($opt_config, $opt_host, $opt_disk, $opt_device, $opt_level); } else { printf STDERR "`restore' is not supported.\n"; exit 1; } } sub parse_options() { my($no_option) = @_; my($options, @options, $option, $name, $option_name, $value); while($no_option <= $#ARGV) { $options = $ARGV[${no_option}]; @options = split (/;/,$options); foreach $option (@options) { if( $option =~ /=/ ) { ($name,$value) = split(/=/,$option); } else { $name = $option; $value = 1; } $option_name = "option_$name"; $option_name =~ s/\-/\_/g; $$option_name = $value; } $no_option++; } } sub check_file { my($filename, $mode) = @_; stat($filename); if($mode eq "e") { if( -e _ ) { print "OK $filename exists\n"; } else { print "ERROR [can not find $filename]\n"; } } elsif($mode eq "x") { if( -x _ ) { print "OK $filename executable\n"; } else { print "ERROR [can not execute $filename]\n"; } } elsif($mode eq "r") { if( -r _ ) { print "OK $filename readable\n"; } else { print "ERROR [can not read $filename]\n"; } } elsif($mode eq "w") { if( -w _ ) { print "OK $filename writable\n"; } else { print "ERROR [can not write $filename]\n"; } } else { print "ERROR [check_file: unknow mode $mode]\n"; } } sub check_dir { } sub check_suid { } 1;