#
# hugocom.pm 1999-10-05 Fredrik Roubert <roubert@dsek.lth.se>
#

package hugocom;

require 5.002;
use strict;
use Carp;
use Socket;

my $HUGOADDR = "hugo.dsek.lth.se";
my $HUGOPORT = 1101;
my $MSGSZ    = 2048;

sub send
{
	my $RBUFSZ = 1024;
	my ($iaddr, $paddr, $proto, $n);

	$iaddr = inet_aton $HUGOADDR;
	$paddr = sockaddr_in $HUGOPORT, $iaddr;
	$proto = getprotobyname 'tcp';

	$n = 0;
	for (@_)
	{
		my ($length, $nread, $sbuf, $rbuf);

		$sbuf = $_;
		chomp $sbuf;
		$sbuf =~ tr/\r//d;
		$sbuf =~ s/\n(.)/ $1/sg;
		$sbuf =~ s/[^\n]$/$&\n/s;
		$sbuf =~ s/\t/        /g;

		next if ($length = length $sbuf) == 0 || $length > $MSGSZ;

		socket SOCK, PF_INET, SOCK_STREAM, $proto
			or croak "socket: $!";

		connect SOCK, $paddr
			or croak "connect: $!";

		$nread = sysread SOCK, $rbuf, $RBUFSZ;
		if (defined $nread || $rbuf =~ m/Enter your message/)
		{
			if ($length == syswrite SOCK, $sbuf, $length)
			{
				$nread = sysread SOCK, $rbuf, $RBUFSZ;
				if (defined $nread)
				{
					$n ++ if $rbuf =~ m/Message received/;
				}
			}
		}

		close SOCK;
	}
	return $n;
}

1; # successful loading of module

