Net-Printer
view release on metacpan or search on metacpan
lib/Net/Printer.pm view on Meta::CPAN
# socket
sub _socketOpen
{
my $sock;
my $self = shift;
# See if user wants rfc1179 compliance
if (uc($self->{rfc1179}) eq "NO") {
$sock =
IO::Socket::INET->new(Proto => 'tcp',
PeerAddr => $self->{server},
PeerPort => $self->{port},
);
} else {
# RFC 1179 says "source port be in the range 721-731"
# so iterate through each port until we can open
# one. Note this requires superuser privileges
foreach my $p (721 .. 731) {
$sock =
IO::Socket::INET->new(PeerAddr => $self->{server},
PeerPort => $self->{port},
Proto => 'tcp',
LocalPort => $p
) and last;
}
}
# return the socket
return $sock;
} # _socketOpen()
# Method: _fileCreate
#
# Purpose:
#
# Creates control file
#
# Parameters:
#
# none
#
# Returns:
#
# *Array containing following elements:*
#
# - control file
# - name of data file
# - name of control file
sub _fileCreate
{
my %chash;
my $self = shift;
my $myname = hostname();
my $snum = int(rand 1000);
# Fill up hash
$chash{'1H'} = $myname;
$chash{'2P'} = getlogin || getpwuid($<) || "nobody";
$chash{'3J'} = $self->{filename};
$chash{'4C'} = $myname;
$chash{'5f'} = sprintf("dfA%03d%s", $snum, $myname);
$chash{'6U'} = sprintf("cfA%03d%s", $snum, $myname,);
$chash{'7N'} = $self->{filename};
my $cfile = $self->_tmpfile();
my $cfh = new FileHandle "> $cfile";
# validation
unless ($cfh) {
$self->_logDebug(
"_fileCreate:Could not create file $cfile: $!");
return undef;
} # if we didn't get a proper filehandle
# iterate through each key cleaning things up
foreach my $key (sort keys %chash) {
$_ = $key;
s/(.)(.)/$2/g;
my $ccode = $_;
printf $cfh ("%s%s\n", $ccode, $chash{$key});
}
# Return what we need to
return ($cfile, $chash{'5f'}, $chash{'6U'});
} # _fileCreate()
# Method: _lpdCommand
#
# Sends command to remote lpd process, returning response if
# asked.
#
# Parameters:
#
# self - self
#
# cmd - command to send (should be pre-packed)
#
# gans - do we get an answer? (0 - no, 1 - yes)
#
# Returns:
#
# response of lpd command
sub _lpdCommand
{
my $response;
my $self = shift;
my $cmd = shift;
my $gans = shift;
$self->_logDebug(sprintf("Sending %s", $cmd));
# Send info
$self->{socket}->send($cmd);
( run in 0.532 second using v1.01-cache-2.11-cpan-df04353d9ac )