2021-03-03 14:41:42 +00:00
|
|
|
#!/usr/bin/env perl
|
|
|
|
#
|
|
|
|
# Generate tags for lsquic project
|
|
|
|
#
|
|
|
|
# If your `ctags' is not Universal Ctags, set UCTAGS environment variable to
|
|
|
|
# point to it.
|
|
|
|
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use Getopt::Long;
|
|
|
|
|
|
|
|
GetOptions("docs!" => \my $do_docs);
|
|
|
|
|
|
|
|
$tmpfile = '.tags.' . $$ . rand;
|
|
|
|
$ctags = $ENV{UCTAGS} || 'ctags';
|
|
|
|
$queue_h = '/usr/include/sys/queue.h';
|
|
|
|
|
|
|
|
@dirs = qw(include bin tests src/lshpack src/liblsquic);
|
|
|
|
|
|
|
|
system($ctags, '-f', $tmpfile,
|
|
|
|
('--kinds-c=+p') x !!$do_docs, # Index function prototypes
|
|
|
|
qw(-R -I SLIST_ENTRY+=void -I LIST_ENTRY+=void
|
|
|
|
-I STAILQ_ENTRY+=void -I TAILQ_ENTRY+=void -I CIRCLEQ_ENTRY+=void
|
|
|
|
-I TAILQ_ENTRY+=void -I SLIST_HEAD+=void -I LIST_HEAD+=void
|
|
|
|
-I STAILQ_HEAD+=void -I TAILQ_HEAD+=void -I CIRCLEQ_HEAD+=void
|
|
|
|
-I TAILQ_HEAD+=void), @dirs)
|
|
|
|
and die "ctags failed";
|
|
|
|
|
|
|
|
-f $queue_h
|
|
|
|
and system($ctags, '-f', $tmpfile, '-a', $queue_h)
|
|
|
|
and die "ctags $queue_h failed";
|
|
|
|
|
|
|
|
if ($do_docs) {
|
|
|
|
@rst = glob("docs/*.rst");
|
|
|
|
if (@rst) {
|
|
|
|
system("$^X tools/gen-rst-tags.pl @rst >> $tmpfile")
|
|
|
|
and die "cannot run tools/gen-rst-tags.pl";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
END { unlink $tmpfile }
|
|
|
|
|
|
|
|
open TMPFILE, "<", $tmpfile
|
|
|
|
or die "cannot open $tmpfile for reading: $!";
|
|
|
|
while (<TMPFILE>)
|
|
|
|
{
|
|
|
|
push @lines, $_;
|
|
|
|
if (
|
|
|
|
s/^(mini|full|ietf_full|ietf_mini|evanescent)_conn_ci_/ci_/
|
|
|
|
or s/^(nocopy|hash|error)_di_/di_/
|
|
|
|
or s/^(gquic)_(be|Q046|Q050)_/pf_/
|
|
|
|
or s/^ietf_v[0-9][0-9]*_/pf_/
|
|
|
|
or s/^stock_shi_/shi_/
|
|
|
|
or s/^iquic_esf_/esf_/
|
|
|
|
or s/^gquic[0-9]?_esf_/esf_/
|
|
|
|
or s/^iquic_esfi_/esfi_/
|
2021-03-31 13:38:32 +00:00
|
|
|
or s/^lsquic_[sh]pi_/pii_/
|
2021-03-03 14:41:42 +00:00
|
|
|
or s/^(lsquic_cubic|lsquic_bbr)_/cci_/
|
|
|
|
)
|
|
|
|
{
|
|
|
|
push @lines, $_;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
open TMPFILE, ">", $tmpfile
|
|
|
|
or die "cannot open $tmpfile for writing: $!";
|
|
|
|
print TMPFILE sort @lines;
|
|
|
|
close TMPFILE;
|
|
|
|
rename $tmpfile, 'tags';
|