binblog
By: a guest | Oct 7th, 2008 | Syntax:
Perl | Size: 1.46 KB | Hits: 195 | Expires: Never
#!/usr/bin/perl -w
use strict;
use diagnostics;
use Time
::HiRes qw(usleep
);
use File::Find;
my $cupsq = "/var/spool/cups";
my @ledidle = (1, 0, 0, 0);
my @ledstate = @ledidle;
my @ledsaved;
if (1){
open STDIN, "/dev/null" or die "STDIN </dev/null: $!\n";
open STDOUT, ">/dev/null" or die "STDOUT >/dev/null: $!\n";
open STDERR, ">/dev/null" or die "STDERR >/dev/null: $!\n";
setsid();
}
my $killed = 0;
$SIG{TERM} = sub { $killed = 1; };
$SIG{INT} = sub { $killed = 1; };
while (1){
my $jobcount = 0;
find
( sub { $jobcount++ if ("d" eq substr($_,0
,1
)) }, $cupsq);
if ($jobcount > 0){
my $popped = pop @ledstate;
}else{
@ledstate = @ledidle;
}
if ($killed){
@ledstate = @ledidle;
}
unless ("@ledstate" eq "@ledsaved"){
set_led (1, $ledstate[0]);
set_led (2, $ledstate[1]);
set_led (3, $ledstate[2]);
@ledsaved = @ledstate;
}
last if $killed;
usleep 100000;
}
sub set_led{
my $sysfile = "/sys/class/leds/alix:$led/brightness";
open my $fh_out, ">$sysfile" or die "$sysfile: $!\n";
print $fh_out "$state\n";
}