- my @out = DXCommandmode::run_cmd($dxchan, $l);
- if ($dxchan->can('send_ans')) {
- $dxchan->send_ans(@out);
- } else {
- dbg($_) for @out;
- }
+ $dxchan->inscript(1) if $self->{inscript};
+ push @out, DXCommandmode::run_cmd($dxchan, $l);
+ $dxchan->inscript(0) if $self->{inscript};
+ last if @out && $l =~ /^pri?v?/i;
+ }
+ }
+ if ($return_output) {
+ return @out;
+ } else {
+ if ($dxchan->can('send_ans')) {
+ $dxchan->send_ans(@out);
+ } else {
+ dbg($_) for @out;
+ }
+ }
+ return ();
+}
+
+sub inscript
+{
+ my $self = shift;
+ $self->{inscript} = shift if @_;
+ return $self->{inscript};
+}
+
+sub store
+{
+ my $call = clean(lc shift);
+ my @out;
+ my $ref = ref $_[0] ? shift : \@_;
+ my $count;
+ my $fn = "$base/$call";
+
+ rename $fn, "$fn.o" if -e $fn;
+ my $f = IO::File->new(">$fn") || return undef;
+ for (@$ref) {
+ $f->print("$_\n");
+ $count++;
+ }
+ $f->close;
+ unlink $fn unless $count;
+ return $count;
+}
+
+sub lines
+{
+ my $self = shift;
+ return @{$self->{lines}};
+}
+
+sub erase
+{
+ my $self = shift;
+ my $call = clean($self->call);
+
+ my $fn;
+ my $try;
+
+ $try = "$base/" . clean(lc $self->call);
+ if (-w $try) {
+ $fn = $try;
+ } else {
+ $try = "$base/" . clean(uc $self->call);
+ if (-w $try) {
+ $fn = $try;
+ }
+ }
+
+ if ($fn && -w $fn) {
+ unless (unlink $fn) {
+ return ($self->msg('m22'. $call));