#!wml https://gitweb.torproject.org/tor.git/plain/ ?id=tor-0.2.5.10 https://gitweb.torproject.org/tor.git?a=tree;hb=HEAD;f= https://gitweb.torproject.org/tor.git?a=tree;hb=HEAD https://svn.torproject.org/svn/website/trunk/ https://svn.torproject.org/svn/projects/ https://trac.torproject.org/projects/tor/wiki/ https://trac.torproject.org/projects/tor/wiki/doc/TorFAQ https://blog.torproject.org/blog/ https://gitweb.torproject.org/torbrowser.git/blob_plain/HEAD: https://gitweb.torproject.org/torspec.git/tree/ https://gitweb.torproject.org/torspec.git?a=tree;hb=HEAD;f= https://doxygen.torproject.org/ # Xinclude "locallinks.wmi" # Xinclude "langlocallinks.$(LANG).wmi" <: sub stripDotSlashs($) { my ($s) = @_; 1 while ($s =~ s|/\./|/|); 1 while ($s =~ s|^\./||); return $s; }; :> <: sub pageToURL($$) { my ($page, $lang) = @_; my ($dir, $base) = $page =~ m,^(?:(.*)/)?(.*?)$,; $dir = '.' unless defined $dir; if (-e "$(DOCROOT)/$dir/$lang/$base.wml") { return stripDotSlashs("$(DOCROOT)/$dir/$base.html.$lang"); } elsif (-e "$(DOCROOT)/$dir/en/$base.wml") { return stripDotSlashs("$(DOCROOT)/$dir/$base.html.en"); } elsif ($page =~ /^http/) { return $page; } else { warn "$WML_SRC_FILENAME has a [page $page] (parses to docdir: $(DOCROOT)/; dir: $dir; base: $base -> $(DOCROOT)/$dir/$lang/$base.wml), but that doesn't exist."; }; } :> <:{ my $page="%0"; my $lang="$(LANG)"; my ($dir, $base) = $page =~ m,^(?:(.*)/)?(.*?)$,; $dir = '.' unless defined $dir; if (-e "$(DOCROOT)/$dir/$lang/$base.wml") { print stripDotSlashs("$(DOCROOT)/$dir/$base.html.$lang"); } elsif (-e "$(DOCROOT)/$dir/en/$base.wml") { print stripDotSlashs("$(DOCROOT)/$dir/$base.html"); } else { warn "$WML_SRC_FILENAME has a [page $page] (parses to docdir: $(DOCROOT)/; dir: $dir; base: $base -> $(DOCROOT)/$dir/$lang/$base.wml), but that doesn't exist."; }; }:>