add help text for watchdbg and grepdbg

This commit is contained in:
Dirk Koopman 2022-02-03 15:03:14 +00:00
parent cefb965615
commit 2fc6c64fec
4 changed files with 49 additions and 11 deletions

View File

@ -1,3 +1,5 @@
03Feb22=======================================================================
1. Improve/add the help text for grepdbg and watchdbg.
28Jan22=======================================================================
1. Fixed duplicate spot display.
2. Add "Capabilities:" line on startup (3rd line of output).

View File

@ -556,8 +556,8 @@ sub send_dx_spot
# taking into account filtering and so on
foreach $dxchan (@dxchan) {
next if $dxchan == $main::me;
next if $dxchan == $self && $self->is_node;
next if $dxchan == $self;
# next if $dxchan == $self && $self->is_node;
next if $dxchan == $self; # the spot is sent back to me by dx command
if ($line =~ /PC61/ && !($dxchan->is_spider || $dxchan->is_user)) {
unless ($pc11) {

View File

@ -8,8 +8,9 @@
# nn - is the day you what to look at: 1 is yesterday, 0 is today
# and is optional if there is only one argument
#
# -mmm - print the mmm lines before the match. So -10 will print
# ten lines including the line matching the regular expression.
# -mmm - print the mmm lines before the match. So -3 will print
# 4 lines altogether, the 3 lines before the line matching
# the regular expression.
#
# <regexp> is the regular expression you are searching for,
# a caseless search is done. There can be more than one <regexp>
@ -60,7 +61,7 @@ foreach my $arg (@ARGV) {
usage();
exit(0);
}
$nolines = $arg if $arg =~ /^\d+$/;
$nolines += $arg if $arg =~ /^\d+$/;
} elsif ($arg =~ /^\d+$/) {
push @days, $arg;
} elsif ($arg =~ /\.pm$/) {
@ -136,7 +137,7 @@ sub usage
{
print << "XXX";
usage: grepdbg [nn days before] [-nnn lines before] [<perl file name>] [<regexp>|!<regexp>]...
usage: grepdbg [nn days before] [-nnn lines before] [<perl filter module>] [<regexp>|!<regexp>]...
You can have more than one <regexp> with an implicit 'and' between them. All
<regexes> are caseless. It's recommended to put 'not' (!<regex>) first in any list.
@ -150,8 +151,13 @@ sub usage
is a handy way of scrolling through the debug log.
grepdbg -2 progress
will display any line containing 'progress' and also the two lines before that.
You can install your own content and display arrangement (useful for filtering data
in some complicated way). You call it like this (assuming it is called 'filter.pm').
This is what is meant by <perl filter module>.
grepdbg filter.pm
@ -174,8 +180,11 @@ sub usage
You can also add a 'sub total {...}' which executes after the last line is
printed and grepdbg exits.
Read the code of this program and copy'n'paste the 'sub process' code and change
its name to 'sub handle'. Modify it to your requirements...
Read the code of this program and copy'n'paste the 'sub
process' code into a new file. Then change 'sub process'
to 'sub handle'. Add the line 'package main;' at the beginning
of the file and a line '1;' at the end and then modify it to
your requirements...
XXX
}

View File

@ -37,11 +37,20 @@ my $fp = DXLog::new('debug', 'dat', 'd');
my $today = $fp->unixtoj(time());
my $fh = $fp->open($today) or die $!;
my $nolines = 1;
$nolines = shift if $ARGV[0] =~ /^-?\d+$/;
$nolines = abs $nolines if $nolines < 0;
my @patt = @ARGV;
my @patt;
my @prev;
while (@ARGV) {
my $arg = shift;
if ($arg =~ /^-+(\d+)/) {
$nolines += $1;
next;
}
usage(), exit(0) if $arg =~ /^-+[h\?]/i;
push @patt, $arg;
}
# seek to end of file
$fh->seek(0, 2);
for (;;) {
@ -98,3 +107,21 @@ sub printit
}
}
exit(0);
sub usage
{
print << "XXX";
usage: watchdbg [-nnn lines before] [<regexp>|!<regexp>]...
You can have more than one <regexp> with an implicit 'and' between them. All
<regexes> are caseless. It's recommended to put 'not' (!<regex>) first in any list.
Don't forget that you are doing this in a shell and you may need to quote your
<regex>s.
watchdbg -2 progress
will display any line containing 'progress' and also the two lines before that.
XXX
}