desktop-print-management-applet revision 6124874e2cec65f2e7a974b3833b05dbf2a7d905
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#!/usr/perl5/bin/perl
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# CDDL HEADER START
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# The contents of this file are subject to the terms of the
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# Common Development and Distribution License (the "License").
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# You may not use this file except in compliance with the License.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# or http://www.opensolaris.org/os/licensing.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# See the License for the specific language governing permissions
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# and limitations under the License.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# When distributing Covered Code, include this CDDL HEADER in each
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# If applicable, add the following below this CDDL HEADER, with the
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# fields enclosed by brackets "[]" replaced with your own identifying
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# information: Portions Copyright [yyyy] [name of copyright owner]
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# CDDL HEADER END
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync# Use is subject to license terms.
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync#
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncmy $SVC_CUPS_SCHEDULER = 'cups/scheduler';
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncmy $SVCPROP = '/usr/bin/svcprop';
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncsub svcprop {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync local ($fmri, $property) = @_;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync my $FH;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync open($FH, "$SVCPROP -C -p $property $fmri 2>/dev/null |");
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync $result = <$FH>;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync close($FH);
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync return ($result);
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncsub print_service {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync my $service;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync $service = svcprop("$SVC_CUPS_SCHEDULER:default", "general/active");
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync ($service =~ /true/) && ($service = 'cups') || ($service = 'lp');
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync return ($service);
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncsub kill_running_applets {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync # cups applet daemon
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync system("pkill -f '/system-config-printer/applet.py'");
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync # lp applet daemon
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync system("pkill ospm-applet");
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncmy $pid;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncsub handle_signal {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync kill_running_applets ();
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync$SIG{USR1} = \&handle_signal;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync$SIG{CHLD} = 'IGNORE';
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncmy $service;
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync$service = print_service();
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync$pid = fork();
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncif ($pid) {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync waitpid($pid, 0);
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync exec('/usr/bin/desktop-print-management-applet');
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsyncelse {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync if ($service eq 'lp') {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync exec('/usr/lib/lp/bin/desktop-print-management-applet');
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync }
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync else {
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync exec('/usr/lib/cups/bin/desktop-print-management-applet');
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync }
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync}
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync
41a839133aad7c96a0d55d927dc3475d0cbe9c22vboxsync