| line |
true |
false |
branch |
|
198
|
0 |
0 |
unless $stream |
|
207
|
0 |
0 |
if $err |
|
210
|
0 |
0 |
if $err |
|
211
|
0 |
0 |
if $ipaddr |
|
231
|
0 |
0 |
if (keys %{$$server{'host'};} > 1) { } |
|
|
0 |
0 |
elsif (@{$App::Phoebe::server->{'wiki_space'};}) { } |
|
256
|
0 |
0 |
if ($lang) { } |
|
275
|
0 |
0 |
unless $data->{'upload'} ||= is_upload($stream, $data->{'request'}) |
|
278
|
0 |
0 |
if ($actual == $size) { } |
|
|
0 |
0 |
elsif ($actual > $size) { } |
|
297
|
0 |
0 |
if (run_extensions($stream, $request, $upload, $buffer, $size)) { } |
|
307
|
0 |
0 |
unless $@ |
|
323
|
0 |
0 |
if ($type ne 'text/plain' and $type ne 'text/gemini') { } |
|
|
0 |
0 |
elsif ($length == 0) { } |
|
|
0 |
0 |
elsif (utf8::decode($data)) { } |
|
324
|
0 |
0 |
if ($length == 0) { } |
|
367
|
0 |
0 |
if (-e $lock) |
|
370
|
0 |
0 |
if -e $lock and $age > 5 |
|
372
|
0 |
0 |
if (mkdir $lock) { } |
|
|
0 |
0 |
elsif ($count > 25) { } |
|
375
|
0 |
0 |
if ($@) |
|
405
|
0 |
0 |
if (-e $file) { } |
|
407
|
0 |
0 |
if ($old eq $text) |
|
412
|
0 |
0 |
unless -d "$dir/keep" |
|
413
|
0 |
0 |
if (-d "$dir/keep/$id") { } |
|
415
|
0 |
0 |
if /^(\d+)\.gmi$/u and $1 > $revision |
|
425
|
0 |
0 |
if (not open(my $fh, '>>:encoding(UTF-8)', $index)) { } |
|
435
|
0 |
0 |
if (not open(my $fh, '>>:encoding(UTF-8)', $changes)) { } |
|
444
|
0 |
0 |
unless -d "$dir/page" |
|
446
|
0 |
0 |
if ($@) { } |
|
463
|
0 |
0 |
if (-e $file) |
|
465
|
0 |
0 |
unless -d "$dir/keep" |
|
466
|
0 |
0 |
if (-d "$dir/keep/$id") { } |
|
468
|
0 |
0 |
if /^(\d+)\.gmi$/u and $1 > $revision |
|
479
|
0 |
0 |
if (-f $index) |
|
485
|
0 |
0 |
if (not open(my $fh, '>>:encoding(UTF-8)', $changes)) { } |
|
503
|
0 |
0 |
if $data->{'buffer'} |
|
524
|
0 |
0 |
if (run_extensions($stream, $url)) { } |
|
|
0 |
0 |
elsif (not $url) { } |
|
|
0 |
0 |
elsif (length $url > 1024) { } |
|
|
0 |
0 |
elsif (($host, $n, $space) = $url =~ m[^(?:gemini:)?//($hosts)(:$port)?(?:/($spaces))?/(?:$reserved)$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $n) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/more(?:/(\d+))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/index$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/files$]u) { } |
|
|
0 |
0 |
elsif (($host) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/spaces$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/data$]u) { } |
|
|
0 |
0 |
elsif ($url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/match$]u) { } |
|
|
0 |
0 |
elsif ($query and ($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/match\?]u) { } |
|
|
0 |
0 |
elsif ($url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/search$]u) { } |
|
|
0 |
0 |
elsif ($query and ($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/search\?]u) { } |
|
|
0 |
0 |
elsif ($url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/new$]u) { } |
|
|
0 |
0 |
elsif ($query and ($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/new\?]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $n, $style) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/changes(?:/(\d+))?(?:/(colour|fancy))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $filter, $n, $style) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?/do/all(?:/(latest))?/changes(?:/(\d+))?(?:/(colour|fancy))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/rss$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/blog/rss$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/atom$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/blog/atom$]u) { } |
|
|
0 |
0 |
elsif (($host, $space) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/do/all/atom$]u) { } |
|
|
0 |
0 |
elsif (($host) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?/robots.txt(?:[#?].*)?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id, $n, $style) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/history/([^/]*)(?:/(\d+))?(?:/(colour|fancy))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id, $n, $style) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/diff/([^/]*)(?:/(\d+))?(?:/(colour))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id, $n) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/raw/([^/]*)(?:/(\d+))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id, $n) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/html/([^/]*)(?:/(\d+))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id, $n) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/page/([^/]+)(?:/(\d+))?$]u) { } |
|
|
0 |
0 |
elsif (($host, $space, $id) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(?:/($spaces))?/file/([^/]+)?$]u) { } |
|
|
0 |
0 |
elsif (($host) = $url =~ m[^(?:gemini:)?//($hosts)(?::$port)?(/|$)]u) { } |
|
|
0 |
0 |
elsif ($authority) { } |
|
536
|
0 |
0 |
$n ? : |
|
561
|
0 |
0 |
if ($space) { } |
|
606
|
0 |
0 |
if $@ |
|
613
|
0 |
0 |
unless $query |
|
621
|
0 |
0 |
if &$sub(@_) |
|
633
|
0 |
0 |
if ($page) { } |
|
654
|
0 |
0 |
if @{$App::Phoebe::server->{'wiki_space'};} or keys %{$$server{"host"};} > 1 |
|
664
|
0 |
0 |
if ($data->{'buffer'} =~ /^(.*)\r\n/u) { } |
|
670
|
0 |
0 |
if ($data->{'request'} =~ /$re/iu) |
|
691
|
0 |
0 |
if $data->{'buffer'} |
|
704
|
0 |
0 |
if ($space) |
|
705
|
0 |
0 |
if $space eq $host |
|
712
|
0 |
0 |
$space ? : |
|
721
|
0 |
0 |
unless ($id) |
|
724
|
0 |
0 |
if $id =~ /^$full_url_regex$/u |
|
754
|
0 |
0 |
unless (-f $index) |
|
755
|
0 |
0 |
unless -d "$dir/page" |
|
761
|
0 |
0 |
if $re |
|
779
|
0 |
0 |
unless @blog |
|
785
|
0 |
0 |
if @blog > $n |
|
786
|
0 |
0 |
if $n == 10 |
|
787
|
0 |
0 |
if $n == 10 |
|
809
|
0 |
0 |
unless (@blog) |
|
817
|
0 |
0 |
if @blog > $n |
|
828
|
0 |
0 |
unless @pages |
|
841
|
0 |
0 |
unless -d $dir |
|
843
|
0 |
0 |
if $re |
|
855
|
0 |
0 |
unless @files |
|
881
|
0 |
0 |
if (-e $file and time - modified($file) <= 300) { } |
|
893
|
0 |
0 |
if (system(@command) == 0) { } |
|
909
|
0 |
0 |
unless ($match) |
|
918
|
0 |
0 |
unless @pages |
|
929
|
0 |
0 |
unless ($str) |
|
937
|
0 |
0 |
if (not search($stream, $host, $space, $str, sub {
highlight($stream, @_);
}
)) |
|
949
|
0 |
0 |
unless @pages |
|
953
|
0 |
0 |
if ($id =~ /$str/iu or $text =~ /$str/iu) |
|
977
|
0 |
0 |
if (($j = index($text, $1)) > -1) |
|
980
|
0 |
0 |
if $start == -1 |
|
982
|
0 |
0 |
if $end == -1 |
|
1002
|
0 |
0 |
if (not $style) { } |
|
|
0 |
0 |
elsif ($style eq 'colour') { } |
|
|
0 |
0 |
elsif ($style eq 'fancy') { } |
|
1006
|
0 |
0 |
if @{$App::Phoebe::server->{'wiki_space'};} |
|
1011
|
0 |
0 |
unless (-e $log) |
|
1024
|
0 |
0 |
unless $_ = &decode_utf8(scalar $fh->readline) |
|
1029
|
0 |
0 |
unless changes($stream, $n, sub {
$stream->write(&encode_utf8("## " . (shift()) . "\n"));
}
, sub {
$stream->write((shift()) . " by " . colourize($stream, shift(), $style) . "\n");
}
, sub {
print_link($stream, @_);
}
, sub {
$stream->write(&encode_utf8(join("\n", @_, "")));
}
, sub {
return unless $_ = &decode_utf8(scalar $fh->readline);
chomp $_;
split(/\x1f/u, $_, 0), $host, $space, 0;
}
, undef, undef, $style) |
|
1031
|
0 |
0 |
$style ? : |
|
1040
|
0 |
0 |
$filter ? : |
|
1045
|
0 |
0 |
unless (@$log) |
|
1049
|
0 |
0 |
$filter ? : |
|
1050
|
0 |
0 |
$style ? : |
|
1051
|
0 |
0 |
if (not $style) { } |
|
|
0 |
0 |
elsif ($style eq 'colour') { } |
|
|
0 |
0 |
elsif ($style eq 'fancy') { } |
|
1054
|
0 |
0 |
if ($filter) { } |
|
1058
|
0 |
0 |
$filter ? : |
|
1066
|
0 |
0 |
if @$log |
|
1068
|
0 |
0 |
unless changes($stream, $n, sub {
$stream->write("## " . (shift()) . "\n");
}
, sub {
$stream->write((shift()) . " by " . colourize($stream, shift(), $style) . "\n");
}
, sub {
print_link($stream, @_);
}
, sub {
$stream->write(&encode_utf8(join("\n", @_, "")));
}
, sub {
@{shift @$log;}, 1 if @$log;
}
, undef, $filter, $style) |
|
1071
|
0 |
0 |
$style ? : |
|
1085
|
0 |
0 |
if $space |
|
1087
|
0 |
0 |
unless -f $changes |
|
1089
|
0 |
0 |
unless my $fh = "File::ReadBackwards"->new($changes) |
|
1090
|
0 |
0 |
if (keys %{$$server{'host'};} > 1) { } |
|
1111
|
0 |
0 |
unless $_ and $_ ne "\n" |
|
1112
|
0 |
0 |
if $filter and not /$filter/u |
|
1156
|
0 |
0 |
unless $ts and $id |
|
1158
|
0 |
0 |
if $filter eq "latest" and $seen{$name} |
|
1160
|
0 |
0 |
if ($day ne $last_day) |
|
1165
|
0 |
0 |
if ($revision eq "\x{1f5b9}") { } |
|
|
0 |
0 |
elsif ($revision eq "\x{1f5bb}") { } |
|
|
0 |
0 |
elsif ($revision > 0) { } |
|
1168
|
0 |
0 |
$style ? : |
|
1176
|
0 |
0 |
if ($seen{$name}) { } |
|
|
0 |
0 |
elsif ($filter eq 'latest') { } |
|
1179
|
0 |
0 |
$style ? : |
|
|
0 |
0 |
if &$kept($host, $space, $id, $revision) |
|
1187
|
0 |
0 |
$style ? : |
|
1192
|
0 |
0 |
if ($seen{$name . "\034"}) { } |
|
1209
|
0 |
0 |
if ($show_space) |
|
1210
|
0 |
0 |
if (keys %{$$server{'host'};} > 1) { } |
|
|
0 |
0 |
elsif ($space) { } |
|
1211
|
0 |
0 |
if ($space) { } |
|
1228
|
0 |
0 |
unless $style |
|
1229
|
0 |
0 |
if ($style eq 'colour') { } |
|
|
0 |
0 |
elsif ($style eq 'fancy') { } |
|
1274
|
0 |
0 |
if (-e $log and my $fh = "File::ReadBackwards"->new($log)) |
|
1277
|
0 |
0 |
unless $_ = &decode_utf8(scalar $fh->readline) |
|
1280
|
0 |
0 |
if $seen{$id} |
|
1353
|
0 |
0 |
if (-e $log and my $fh = "File::ReadBackwards"->new($log)) |
|
1355
|
0 |
0 |
unless $_ = &decode_utf8(scalar $fh->readline) |
|
1358
|
0 |
0 |
if (&any(sub {
$_ eq $id;
}
, @ids)) |
|
1377
|
0 |
0 |
unless $_ = &decode_utf8(scalar $fh->readline) |
|
1389
|
0 |
0 |
if @$log |
|
1421
|
0 |
0 |
unless $ts and $id |
|
1423
|
0 |
0 |
if ($revision eq "\x{1f5b9}") { } |
|
|
0 |
0 |
elsif ($revision eq "\x{1f5bb}") { } |
|
|
0 |
0 |
elsif ($revision > 0) { } |
|
1424
|
0 |
0 |
if $seen{$name} |
|
1431
|
0 |
0 |
if $seen{$name . "\34"} |
|
1437
|
0 |
0 |
if $seen{$name} |
|
1447
|
0 |
0 |
if $seen{$name . "\34"} |
|
1458
|
0 |
0 |
if $ts gt $feed_ts |
|
1506
|
0 |
0 |
if $ts gt $feed_ts |
|
1534
|
0 |
0 |
if (not $style) { } |
|
1539
|
0 |
0 |
if (not $style) { } |
|
1542
|
0 |
0 |
unless $_ |
|
1543
|
0 |
0 |
unless $_ |
|
1548
|
0 |
0 |
unless $_ |
|
1549
|
0 |
0 |
unless $_ |
|
1567
|
0 |
0 |
if $diff->Same |
|
1570
|
0 |
0 |
if ($diff->Diff == 3) { } |
|
|
0 |
0 |
elsif ($diff->Diff == 2) { } |
|
|
0 |
0 |
elsif ($diff->Diff == 1) { } |
|
1572
|
0 |
0 |
$min1 == $max1 ? : |
|
1574
|
0 |
0 |
$min2 == $max2 ? : |
|
1577
|
0 |
0 |
$min2 == $max2 ? : |
|
1580
|
0 |
0 |
$min1 == $max1 ? : |
|
1597
|
0 |
0 |
if (my(@list) = $diff->Same) { } |
|
1602
|
0 |
0 |
$_ ? : |
|
1603
|
0 |
0 |
$_ ? : |
|
1650
|
0 |
0 |
if (/^```(?:type=([a-z]+))?/u) { } |
|
|
0 |
0 |
elsif ($code) { } |
|
|
0 |
0 |
elsif (/^\* +(.*)/u) { } |
|
|
0 |
0 |
elsif (my($url, $text) = /^=>\s*(\S+)\s*(.*)/u) { } |
|
|
0 |
0 |
elsif (/^(#{1,6})\s*(.*)/u) { } |
|
|
0 |
0 |
elsif (/^>\s*(.*)/u) { } |
|
1652
|
0 |
0 |
if ($code) { } |
|
1656
|
0 |
0 |
if $list |
|
1664
|
0 |
0 |
unless $list |
|
1668
|
0 |
0 |
unless $list |
|
1673
|
0 |
0 |
if $list |
|
1678
|
0 |
0 |
if $list |
|
1682
|
0 |
0 |
if $list |
|
1687
|
0 |
0 |
if $code |
|
1688
|
0 |
0 |
if $list |
|
1701
|
0 |
0 |
if $html =~ /\S/u |
|
1732
|
0 |
0 |
if (not $style) { } |
|
|
0 |
0 |
elsif ($style eq 'colour') { } |
|
|
0 |
0 |
elsif ($style eq 'fancy') { } |
|
1737
|
0 |
0 |
unless (-e $log) |
|
1750
|
0 |
0 |
unless $_ = &decode_utf8(scalar $fh->readline) |
|
1754
|
0 |
0 |
if $id_log ne $id |
|
1758
|
0 |
0 |
unless changes($stream, $n, sub {
$stream->write("## " . (shift()) . "\n");
}
, sub {
$stream->write((shift()) . " by " . colourize($stream, shift(), $style) . "\n");
}
, sub {
print_link($stream, @_);
}
, sub {
$stream->write(join("\n", @_, ""));
}
, sub {
READ: return unless $_ = &decode_utf8(scalar $fh->readline);
chomp $_;
my($ts, $id_log, $revision, $code) = split(/\x1f/u, $_, 5);
goto READ if $id_log ne $id;
$ts, $id_log, $revision, $code, $host, $space, 0;
}
, undef, undef, $style) |
|
1760
|
0 |
0 |
$style ? : |
|
1797
|
0 |
0 |
if $revision and -f "$dir/keep/$id/$revision.gmi" |
|
1798
|
0 |
0 |
if -f "$dir/page/$id.gmi" |
|
1799
|
0 |
0 |
if $id eq "robots" and not $space |
|
1800
|
0 |
0 |
if $revision |
|
1846
|
0 |
0 |
if (not -f $file) { } |
|
|
0 |
0 |
elsif (not -f $meta) { } |
|
1854
|
0 |
0 |
unless ($meta{'content-type'}) |
|
1864
|
0 |
0 |
unless $str |
|
1881
|
0 |
0 |
if (-e $file) |
|
1883
|
0 |
0 |
if ($old eq $data) |
|
1890
|
0 |
0 |
if (not open(my $fh, '>>:encoding(UTF-8)', $changes)) { } |
|
1899
|
0 |
0 |
unless -d "$dir/file" |
|
1901
|
0 |
0 |
if ($@) |
|
1905
|
0 |
0 |
unless -d "$dir/meta" |
|
1907
|
0 |
0 |
if ($@) |
|
1924
|
0 |
0 |
if (not open(my $fh, '>>:encoding(UTF-8)', $changes)) { } |
|
1949
|
0 |
0 |
if (keys %{$$server{"host"};} > 1) |
|
1951
|
0 |
0 |
unless -d $dir |
|
1953
|
0 |
0 |
if $space |
|
1954
|
0 |
0 |
unless -d $dir |
|
1964
|
0 |
0 |
if $space |
|
1965
|
0 |
0 |
if (keys %{$$server{"host"};} > 1) |
|
1966
|
0 |
0 |
unless $space |
|
1967
|
0 |
0 |
if grep {$_ eq "$host/$space";} @{$$server{"wiki_space"};} |
|
1979
|
0 |
0 |
if (keys %{$$server{'host'};} > 1) { } |
|
1997
|
0 |
0 |
if (keys %{$$server{'host'};} > 1) { } |
|
|
0 |
0 |
elsif (@{$App::Phoebe::server->{'wiki_space'};}) { } |
|
2021
|
0 |
0 |
if ($request =~ m[^titan://($hosts)(?::$port)?]u) |
|
2025
|
0 |
0 |
if ($path =~ m[^(?:/($spaces_regex))?(?:/raw|/page|/file)?/([^/;=&]+(?:;\w+=[^;=&]+)+)]u) { } |
|
2029
|
0 |
0 |
if (valid_params($stream, $host, $space, $id, $params)) |
|
2052
|
0 |
0 |
unless valid_id($stream, $host, $space, $id, $params) |
|
2053
|
0 |
0 |
unless valid_token($stream, $host, $space, $id, $params) |
|
2054
|
0 |
0 |
unless valid_mime_type($stream, $host, $space, $id, $params) |
|
2055
|
0 |
0 |
unless valid_size($stream, $host, $space, $id, $params) |
|
2064
|
0 |
0 |
if (not $id) { } |
|
|
0 |
0 |
elsif ($id =~ /[[:cntrl:]]/u) { } |
|
2087
|
0 |
0 |
if $space and $App::Phoebe::server->{'wiki_space_token'}{$space} |
|
2090
|
0 |
0 |
if (not $token and @tokens) { } |
|
|
0 |
0 |
elsif (not grep(/^$token$/u, @tokens)) { } |
|
2114
|
0 |
0 |
if ($type eq 'text/plain' or $type eq 'text/gemini') { } |
|
|
0 |
0 |
elsif (not @types) { } |
|
|
0 |
0 |
elsif (not grep(/^$type$/u, @types) || grep(/^$main_type$/u, @types)) { } |
|
2137
|
0 |
0 |
if (not $size =~ /^\d+$/u) { } |
|
|
0 |
0 |
elsif ($size > $App::Phoebe::server->{'wiki_page_size_limit'}) { } |