X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtout.pm;h=b31eacdfe111942ded8607bc9759d85e1179a56c;hb=2ffd50e69be8f5e17e8ac3f8735139af7316195a;hp=80b1a5d6eeb916b94fd45bfc1f215bedd627746c;hpb=5c15f6e5521944f56427ef069f449739ce84ce9f;p=spider.git diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index 80b1a5d6..b31eacdf 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -25,6 +25,10 @@ $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)) $main::build += $VERSION; $main::branch += $BRANCH; +use vars qw($sentencelth); + +$sentencelth = 180; + # # All the PCxx generation routines # @@ -62,14 +66,15 @@ sub pc11 # create an announce message sub pc12 { - my ($call, $text, $tonode, $sysop, $wx) = @_; + my ($call, $text, $tonode, $sysop, $wx, $origin) = @_; my $hops = get_hops(12); - $sysop = ' ' if !$sysop; - $text = ' ' if !$text; - $wx = '0' if !$wx; - $tonode = '*' if !$tonode; + $origin ||= $main::mycall; + $sysop ||= ' '; + $text ||= ' '; + $wx ||= '0'; + $tonode ||= '*'; $text =~ s/\^/%5E/g; - return "PC12^$call^$tonode^$text^$sysop^$main::mycall^$wx^$hops^~"; + return "PC12^$call^$tonode^$text^$sysop^$origin^$wx^$hops^~"; } # @@ -85,15 +90,18 @@ sub pc16 my $ncall = $node->call; my @out; - while (@_) { - my $str = "PC16^$ncall"; - for ( ; @_ && length $str < 200; ) { - my $ref = shift; - $str .= sprintf "^%s %s %d", $ref->call, $ref->conf ? '*' : '-', $ref->here; + my $s = ""; + for (@_) { + next unless $_; + my $ref = $_; + my $str = sprintf "^%s %s %d", $ref->call, $ref->conf ? '*' : '-', $ref->here; + if (length($s) + length($str) > $sentencelth) { + push @out, "PC16^$ncall" . $s . sprintf "^%s^", get_hops(16); + $s = ""; } - $str .= sprintf "^%s^", get_hops(16); - push @out, $str; + $s .= $str; } + push @out, "PC16^$ncall" . $s . sprintf "^%s^", get_hops(16); return @out; } @@ -124,20 +132,24 @@ sub pc18 sub pc19 { my @out; - - while(@_) { - my $str = "PC19"; - for (; @_ && length $str < 200;) { - my $ref = shift; - my $call = $ref->call; - my $here = $ref->here; - my $conf = $ref->conf; - my $version = $ref->version; - $str .= "^$here^$call^$conf^$version"; + my @in; + + my $s = ""; + for (@_) { + next unless $_; + my $ref = $_; + my $call = $ref->call; + my $here = $ref->here; + my $conf = $ref->conf; + my $version = $ref->version; + my $str = "^$here^$call^$conf^$version"; + if (length($s) + length($str) > $sentencelth) { + push @out, "PC19" . $s . sprintf "^%s^", get_hops(19); + $s = ""; } - $str .= sprintf "^%s^", get_hops(19); - push @out, $str; + $s .= $str; } + push @out, "PC19" . $s . sprintf "^%s^", get_hops(19); return @out; }