summaryrefslogtreecommitdiffstats
path: root/perl-install/printer.pm
diff options
context:
space:
mode:
authorTill Kamppeter <tkamppeter@mandriva.com>2002-07-22 23:44:13 +0000
committerTill Kamppeter <tkamppeter@mandriva.com>2002-07-22 23:44:13 +0000
commit7bf28e1f15fd5da4437cb16dc671550b45f653b2 (patch)
tree938b8c429d29f69ba53397aa933251aa935dc38c /perl-install/printer.pm
parent2bd1d5bdc2840b6f2f8d49d678194aafcc453c82 (diff)
downloaddrakx-7bf28e1f15fd5da4437cb16dc671550b45f653b2.tar
drakx-7bf28e1f15fd5da4437cb16dc671550b45f653b2.tar.gz
drakx-7bf28e1f15fd5da4437cb16dc671550b45f653b2.tar.bz2
drakx-7bf28e1f15fd5da4437cb16dc671550b45f653b2.tar.xz
drakx-7bf28e1f15fd5da4437cb16dc671550b45f653b2.zip
Adapted printerdrake to CUPS 1.1.15 and Perl 5.8.0 (for Foomatic).
Let network also be started during installation when LPRng or PDQ is the spooler, so that the user can install queues to remote printers.
Diffstat (limited to 'perl-install/printer.pm')
-rw-r--r--perl-install/printer.pm41
1 files changed, 33 insertions, 8 deletions
diff --git a/perl-install/printer.pm b/perl-install/printer.pm
index 21793641e..60ac7036c 100644
--- a/perl-install/printer.pm
+++ b/perl-install/printer.pm
@@ -156,6 +156,26 @@ sub start_service ($) {
}
}
+sub start_not_running_service ($) {
+ my ($service) = @_;
+ # Exit silently if the service is not installed
+ return 1 if (!(-x "$prefix/etc/rc.d/init.d/$service"));
+ run_program::rooted($prefix, "/etc/rc.d/init.d/$service", "status");
+ # The exit status is not zero when the service is not running
+ if (($? >> 8) != 0) {
+ run_program::rooted($prefix, "/etc/rc.d/init.d/$service", "start");
+ if (($? >> 8) != 0) {
+ return 0;
+ } else {
+ # CUPS needs some time to come up.
+ wait_for_cups() if ($service eq "cups");
+ return 1;
+ }
+ } else {
+ return 1;
+ }
+}
+
sub stop_service ($) {
my ($service) = @_;
# Exit silently if the service is not installed
@@ -194,26 +214,31 @@ sub SIGHUP_daemon {
# PDQ has no daemon, exit.
if ($service eq "pdq") {return 1};
# CUPS needs auto-configuration
- run_program::rooted($prefix, "/usr/sbin/setcupsconfig") if ($service eq "cups");
+ run_program::rooted($prefix, "/usr/sbin/correctcupsconfig") if ($service eq "cups");
# Name of the daemon
my %daemons = (
"lpr" => "lpd",
- "lpd" => "lpr",
+ "lpd" => "lpd",
"lprng" => "lpd",
"cups" => "cupsd",
"devfs" => "devfsd",
);
my $daemon = $deamons{$service};
$daemon = $service if (! defined $daemon);
+# if ($service eq "cups") {
+# # The current CUPS (1.1.13) dies on SIGHUP, do the normal restart.
+# restart_service($service);
+# # CUPS needs some time to come up.
+# wait_for_cups();
+# } else {
+
+ # Send the SIGHUP
+ run_program::rooted($prefix, "/usr/bin/killall", "-HUP", $daemon);
if ($service eq "cups") {
- # The current CUPS (1.1.13) dies on SIGHUP, to the normal restart.
- restart_service($service);
# CUPS needs some time to come up.
wait_for_cups();
- } else {
- # Send the SIGHUP
- run_program::rooted($prefix, "/usr/bin/killall", "-HUP", $daemon);
}
+
return 1;
}
@@ -1042,7 +1067,7 @@ sub poll_ppd_base {
#- if cups continue to modify it (because it reads the ppd files available), the
#- poll_ppd_base program simply cores :-)
run_program::rooted($prefix, "ifconfig lo 127.0.0.1"); #- else cups will not be happy! and ifup lo don't run ?
- start_service("cups");
+ start_not_running_service("cups");
my $driversthere = scalar(keys %thedb);
foreach (1..60) {
local *PPDS; open PPDS, ($::testing ? "$prefix" : "chroot $prefix/ ") . "/usr/bin/poll_ppd_base -a |";