diff options
Diffstat (limited to 'examples/printer-accounting/hp5-redir')
-rw-r--r-- | examples/printer-accounting/hp5-redir | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/printer-accounting/hp5-redir b/examples/printer-accounting/hp5-redir new file mode 100644 index 00000000000..98c2b72edd2 --- /dev/null +++ b/examples/printer-accounting/hp5-redir @@ -0,0 +1,43 @@ +#!/usr/bin/perl +# +# $Source: /data/src/mirror/cvs/samba/examples/printer-accounting/hp5-redir,v $ +# $Id: hp5-redir,v 1.1 1996/07/23 03:30:56 samba-bugs Exp $ +# +# 0 == stdin == docuement +# 1 == stdout == printer +# 2 == stderr == logging +# +# With redirection to another valid /etc/printcap entry +# + +umask(002); + +# -w132 -l66 -i0 -n pkelly -h master.fcp.oypi.com /var/log/lp-acct +require "getopts.pl"; +&Getopts("w:l:i:n:h:"); + +chomp($date = `date '+%Y-%m-%d.%T'`); + +($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, + $atime,$mtime,$ctime,$blksize,$blocks) + = stat(STDIN); + +# send to the real printer now. +open(P, "|lpr -Pmgmt0") || die "Can't print to hp5-real ($!)\n"; +$cnt = 0; +while (sysread(STDIN, $buf, 10240)) { + print P $buf; + # this is ugly, but it gives the approx in pages. We + # don't print graphics, so ... There must be a better way :) + $cnt += ($buf =~ /^L/g); +} +close(P); + +$acct = shift; +if (open(ACCT, ">>$acct")) { + print ACCT "$date $opt_n $opt_h $size $cnt\n"; + close(ACCT); +} else { + warn "Err: Can't account for it ($!)\n"; + warn "Log: $date $opt_n $opt_h $size $cnt\n"; +} |