Net-LPR
view release on metacpan or search on metacpan
$self->{Socket}->flush() or do {
$self->_report("Error flushing buffer ($!)");
return undef;
};
my $result;
$result = $self->{Socket}->getc();
if (length($result)) {
$result = unpack("C", $result);
} else {
$self->_report("Error getting result ($!)");
return undef;
};
if ($result != 0) {
$self->_report("Printer reported an error ($result)");
return undef;
}
return 1;
}
my $g_job_id = 0;
sub new_job {
croak 'Usage: $jobkey = $lp->new_job([$jobid [, $jobhostname]])' if (@_ < 1 || @_ > 3);
my $self = shift;
my $jobid = shift;
$jobid = $g_job_id unless (defined($jobid));
if ($jobid !~ /^\d+$/ || $jobid > 999) {
$self->_report("Invalid Job ID specified");
return undef;
}
$g_job_id = ($jobid + 1) % 1000;
my $jobname = shift;
$jobname = hostname() unless (defined($jobname));
$jobname =~ s/[\000-\040\200-\377]//g;
my $jobkey = sprintf('%03d%s', $jobid, $jobname);
if (exists($self->{Jobs}->{$jobkey})) {
$self->_report("Duplicate Job ID specified");
return undef;
}
my $user;
if ($^O eq 'MSWin32') {
$user = getlogin();
} else {
$user = scalar(getpwuid($>));
}
$self->{Jobs}->{$jobkey} = {
JobID => $jobid,
Jobname => $jobname,
SentControl => 0,
SentData => 0,
UsedDataFileName => 0,
ControlFileName => "cfA$jobkey",
DataFileName => "dfA$jobkey",
PrintingMode => '',
DataSize => 0,
DataSent => 0,
CE => {
H => hostname(),
P => $user,
},
};
return $jobkey;
}
sub job_get_data_filename {
croak 'Usage: $lp->job_get_data_filename($jobkey)' unless (@_ == 2);
my $self = shift;
my $jobkey = shift;
unless (exists($self->{Jobs}->{$jobkey})) {
$self->_report("Nonexistant Job Key '$jobkey'");
return undef;
}
return $self->{Jobs}->{$jobkey}->{DataFileName};
}
sub job_set_data_filename {
croak 'Usage: $lp->job_set_data_filename($jobkey, $filename)' unless (@_ == 3);
my $self = shift;
my $jobkey = shift;
unless (exists($self->{Jobs}->{$jobkey})) {
$self->_report("Nonexistant Job Key '$jobkey'");
return undef;
}
if ($self->{Jobs}->{$jobkey}->{SentControl}) {
$self->_report("Already sent control file for '$jobkey'");
return undef;
}
if ($self->{Jobs}->{$jobkey}->{SentData}) {
$self->_report("Already sent data file for '$jobkey'");
return undef;
}
if ($self->{Jobs}->{$jobkey}->{UsedDataFileName}) {
( run in 1.488 second using v1.01-cache-2.11-cpan-df04353d9ac )