X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=46d2b1d38bd4d450f0f95b0fbda2e7b37281f274;hb=a3070f2678d8be7d44dbf2148cee77cd6a212243;hp=ffad39cf1506a6ced64cb3e948d1498a7a4605af;hpb=44fbbf60906264270ce1621ab15569162934a020;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index ffad39cf..46d2b1d3 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -79,11 +79,11 @@ sub new my $ipaddr = alias_localhost($self->hostname); DXProt::_add_thingy($main::routeroot, [$call, 0, 0, 1, undef, undef, $ipaddr], ); - # ALWAYS output the user + # ALWAYS output the user (except if the updates not enabled) my $ref = Route::User::get($call); if ($ref) { $main::me->route_pc16($main::mycall, undef, $main::routeroot, $ref); - $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref) unless $DXProt::pc92_slug_changes; + $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref) unless $DXProt::pc92_slug_changes || ! $DXProt::pc92_ad_enable; } return $self; @@ -454,7 +454,8 @@ sub send_chats my $msgid = DXProt::nextchatmsgid(); $text = "#$msgid $text"; - $main::me->normal(DXProt::pc93($target, $self->{call}, undef, $text)); + my $ipaddr = alias_localhost($self->hostname || '127.0.0.1'); + $main::me->normal(DXProt::pc93($target, $self->{call}, undef, $text, undef, $ipaddr)); } sub special_prompt @@ -669,7 +670,7 @@ sub disconnect # issue a pc17 to everybody interested $main::me->route_pc17($main::mycall, undef, $main::routeroot, $uref); - $main::me->route_pc92d($main::mycall, undef, $main::routeroot, $uref) unless $DXProt::pc92_slug_changes; + $main::me->route_pc92d($main::mycall, undef, $main::routeroot, $uref) unless $DXProt::pc92_slug_changes || ! $DXProt::pc92_ad_enable; } else { confess "trying to disconnect a non existant user $call"; } @@ -1029,41 +1030,45 @@ sub format_dx_spot $c =~ s/\t/ /g; my $comment = substr (($c || ''), 0, $clth); $comment .= ' ' x ($clth - (length($comment))); - - if (!$slot1 && $self->{user}->wantgrid) { - my $ref = DXUser::get_current($_[1]); - if ($ref && $ref->qra) { - $slot1 = ' ' . substr($ref->qra, 0, 4); + + if ($self->{user}) { # to allow the standalone program 'showdx' to work + if (!$slot1 && $self->{user}->wantgrid) { + my $ref = DXUser::get_current($_[1]); + if ($ref && $ref->qra) { + $slot1 = ' ' . substr($ref->qra, 0, 4); + } } - } - if (!$slot1 && $self->{user}->wantusstate) { - $slot1 = " $_[12]" if $_[12]; - } - unless ($slot1) { - if ($self->{user}->wantdxitu) { - $slot1 = sprintf(" %2d", $_[8]) if defined $_[8]; - } elsif ($self->{user}->wantdxcq) { - $slot1 = sprintf(" %2d", $_[9]) if defined $_[9]; + if (!$slot1 && $self->{user}->wantusstate) { + $slot1 = " $_[12]" if $_[12]; } - } - $comment = substr($comment, 0, $clth-length($slot1)) . $slot1 if $slot1; + unless ($slot1) { + if ($self->{user}->wantdxitu) { + $slot1 = sprintf(" %2d", $_[8]) if defined $_[8]; + } + elsif ($self->{user}->wantdxcq) { + $slot1 = sprintf(" %2d", $_[9]) if defined $_[9]; + } + } + $comment = substr($comment, 0, $clth-length($slot1)) . $slot1 if $slot1; - if (!$slot2 && $self->{user}->wantgrid) { - my $origin = $_[4]; - $origin =~ s/-#$//; # sigh...... - my $ref = DXUser::get_current($origin); - if ($ref && $ref->qra) { - $slot2 = ' ' . substr($ref->qra, 0, 4); + if (!$slot2 && $self->{user}->wantgrid) { + my $origin = $_[4]; + $origin =~ s/-#$//; # sigh...... + my $ref = DXUser::get_current($origin); + if ($ref && $ref->qra) { + $slot2 = ' ' . substr($ref->qra, 0, 4); + } } - } - if (!$slot2 && $self->{user}->wantusstate) { - $slot2 = " $_[13]" if $_[13]; - } - unless ($slot2) { - if ($self->{user}->wantdxitu) { - $slot2 = sprintf(" %2d", $_[10]) if defined $_[10]; - } elsif ($self->{user}->wantdxcq) { - $slot2 = sprintf(" %2d", $_[11]) if defined $_[11]; + if (!$slot2 && $self->{user}->wantusstate) { + $slot2 = " $_[13]" if $_[13]; + } + unless ($slot2) { + if ($self->{user}->wantdxitu) { + $slot2 = sprintf(" %2d", $_[10]) if defined $_[10]; + } + elsif ($self->{user}->wantdxcq) { + $slot2 = sprintf(" %2d", $_[11]) if defined $_[11]; + } } } @@ -1374,7 +1379,7 @@ sub spawn_cmd no strict 'refs'; # just behave normally if something has set the "one-shot" _nospawn in the channel - if ($self->{_nospawn}) { + if ($self->{_nospawn} || $main::is_win == 1) { eval { @out = $cmdref->(@$args); }; if ($@) { DXDebug::dbgprintring(25);