linuxOS_AP05/debian/test/usr/share/system-tools-backends-2.0/scripts/Utils/Backend.pm

168 lines
4.3 KiB
Perl
Raw Normal View History

2025-09-26 01:40:02 +00:00
#!/usr/bin/perl
#-*- Mode: perl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
# Common stuff for the ximian-setup-tools backends.
#
# Copyright (C) 2000-2001 Ximian, Inc.
#
# Authors: Hans Petter Jansson <hpj@ximian.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
package Utils::Backend;
use Utils::Report;
use Utils::Platform;
our $DBUS_PREFIX = "org.freedesktop.SystemToolsBackends";
our $DBUS_PATH = "/org/freedesktop/SystemToolsBackends";
our $localstatedir;
our $tool;
# --- Operation modifying variables --- #
# if $exit_code is provided (ne undef), exit with that code at the end.
sub print_usage
{
my ($tool, $exit_code) = @_;
my $usage_text =<< "end_of_usage_text;";
NOTE: You should not be running this directly, this is only
recomended for debugging purposes.
Usage: SystemToolsBackends.pl options
Options:
-h --help Show help options.
--platform <name-ver> Overrides the detection of your platform\'s
name and version, e.g. redhat-6.2. Use with care.
--module <module> Defines the configuration module to load:
GroupsConfig, HostsConfig, IfacesConfig, NFSConfig,
NTPConfig, ServicesConfig, SMBConfig, TimeConfig
or UsersConfig.
-v --verbose Prints human-readable diagnostic messages to standard
error.
--disable-shutdown Disable default shutdown timeout of 180 seconds.
--list-platforms List available platforms.
end_of_usage_text;
print STDERR $usage_text;
exit $exit_code if $exit_code ne undef;
}
sub print_platform_list
{
my ($platforms) = &Utils::Platform::get_platform_info ();
foreach $platform (keys %$platforms)
{
my $value = $$platforms{$platform};
my $desc = join (" ", @$value);
printf ("%s\t- %s\n", $platform, $desc);
}
exit 0;
}
# --- Initialization and finalization --- #
sub set_with_param
{
my ($tool, $arg_name, $value) = @_;
if ($$tool{$arg_name} ne "")
{
print STDERR "Error: You may specify --$arg_name only once.\n\n";
&print_usage ($tool, 1);
}
if ($value eq "")
{
print STDERR "Error: You must specify an argument to the --$arg_name option.\n\n";
&print_usage ($tool, 1);
}
$$tool{$arg_name} = $value;
}
sub set_disable_shutdown
{
my ($tool) = @_;
&set_with_param ($tool, "no-shutdown", 1);
}
sub set_module
{
my ($tool, $module) = @_;
&set_with_param ($tool, "module", "$module.pm");
}
sub set_prefix
{
my ($tool, $prefix) = @_;
&set_with_param ($tool, "prefix", $prefix);
$gst_prefix = $prefix;
}
sub set_dist
{
my ($tool, $dist) = @_;
&set_with_param ($tool, "platform", $dist);
}
sub init
{
my (@args) = @_;
my ($arg);
# Set the output autoflush.
$old_fh = select (STDOUT); $| = 1; select ($old_fh);
$old_fh = select (STDERR); $| = 1; select ($old_fh);
# Parse arguments.
while ($arg = shift (@args))
{
if ($arg eq "--help" || $arg eq "-h") { &print_usage (\%tool, 0); }
elsif ($arg eq "--module" || $arg eq "-m") { &set_module (\%tool, shift @args); }
elsif ($arg eq "--platform") { &set_dist (\%tool, shift @args); }
elsif ($arg eq "--disable-shutdown") { &set_disable_shutdown (\%tool); }
elsif ($arg eq "--verbose" || $arg eq "-v") { &set_with_param (\%tool, "do_verbose", 1); }
elsif ($arg eq "--list-platforms") { &print_platform_list (\%tool) }
else
{
print STDERR "Error: Unrecognized option '$arg'.\n\n";
&print_usage (\%tool, 1);
}
}
# Set up subsystems.
&Utils::Report::begin ();
&Utils::Platform::get_system ();
return \%tool;
}
1;