diff options
Diffstat (limited to 'share/examples/printing/netprint')
-rw-r--r-- | share/examples/printing/netprint | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/share/examples/printing/netprint b/share/examples/printing/netprint new file mode 100644 index 000000000000..9b5010cc8cc5 --- /dev/null +++ b/share/examples/printing/netprint @@ -0,0 +1,24 @@ +#!/usr/bin/perl +# +# netprint - Text filter for printer attached to network +# Installed in /usr/local/libexec/netprint +# + +$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; + +$printer_host = $ARGV[0]; +$printer_port = $ARGV[1]; + +require 'sys/socket.ph'; + +($ignore, $ignore, $protocol) = getprotobyname('tcp'); +($ignore, $ignore, $ignore, $ignore, $address) + = gethostbyname($printer_host); + +$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); + +socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) + || die "Can't create TCP/IP stream socket: $!"; +connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; +while (<STDIN>) { print PRINTER; } +exit 0; |