Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use diagnostics;
- use POSIX qw(setsid);
- 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){
- fork && exit;
- 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;
- unshift @ledstate, $popped;
- }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 $led = shift;
- my $state = shift;
- my $sysfile = "/sys/class/leds/alix:$led/brightness";
- open my $fh_out, ">$sysfile" or die "$sysfile: $!\n";
- print $fh_out "$state\n";
- close $fh_out;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement