#!/usr/bin/perl -w use English; use strict; use constant REQUEST_DIR => "/var/spool/lp/request"; use constant STALE_TIME => (3 * 60 * 60); sub assign_errno { my $retn = ($OS_ERROR != 0) ? $OS_ERROR : $_[0]; return($retn); } # assign_errno sub get_stale_requests { my $cc = 0; my $dirname = REQUEST_DIR; my $stale_time = $_[0]; my $now = time(); if (opendir(D1,$dirname)) { my @arry1 = grep !/^\./, readdir(D1); closedir(D1); chomp(@arry1); my $i = 0; while (($i <= $#arry1) && ($cc == 0)) { my $dirname2 = sprintf("%s/%s",$dirname,$arry1[$i]); if (opendir(D2,$dirname2)) { my @arry2 = grep !/^\./, grep /^c/, readdir(D2); closedir(D2); chomp(@arry2); my $j = 0; while ($j <= $#arry2) { my $fullname = sprintf("%s/%s",$dirname2,$arry2[$j]); my ($dev,$ino,$fmode,$nlink,$uid,$gid, $rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($fullname); if ($now > ($mtime + $stale_time)) { print $fullname,"\t",scalar localtime($mtime),"\n"; } ++$j; } } else { $cc = assign_errno(-2); printf STDERR ("Can't open directory %s (%d)\n",$dirname2,$cc); } ++$i; } } else { $cc = assign_errno(-1); printf STDERR ("Can't open directory %s (%d)\n",$dirname,$cc); } return($cc); } # get_stale_requests get_stale_requests(STALE_TIME);