Back-port the \ulink macro to the documentation package for Python 2.1.x
since a documentation patch included \ulink.  Adding this here makes
back-porting further documentation patches easier than having to remove
\ulink from the patches.
Closes SF bug #598996.
diff --git a/Doc/perl/python.perl b/Doc/perl/python.perl
index 529ceb9..04f41d3 100644
--- a/Doc/perl/python.perl
+++ b/Doc/perl/python.perl
@@ -323,6 +323,13 @@
             . "$icon</a>" . $_);
 }
 
+sub do_cmd_ulink{
+    local($_) = @_;
+    my $text = next_argument();
+    my $url = next_argument();
+    return "<a class=\"ulink\" href=\"$url\"\n  >$text</a>" . $_;
+}
+
 sub do_cmd_citetitle{
     local($_) = @_;
     my $url = next_optional_argument();
diff --git a/Doc/texinputs/python.sty b/Doc/texinputs/python.sty
index e4c60b8..3e173f0 100644
--- a/Doc/texinputs/python.sty
+++ b/Doc/texinputs/python.sty
@@ -856,6 +856,21 @@
 % Note that \longprogramopt provides the '--'!
 \newcommand{\longprogramopt}[1]{\strong{-{}-#1}}
 
+% \ulink{link text}{URL}
+\@ifundefined{pdfannotlink}{
+  \newcommand{\ulink}[2]{#1}
+}{
+  % The \noindent here is a hack -- we're forcing pdfTeX into
+  % horizontal mode since \pdfstartlink requires that.
+  \newcommand{\ulink}[2]{\noindent{%
+    \pdfstartlink attr{/Border [0 0 0]} user{/S /URI /URI (#2)}%
+    \py@LinkColor%                              color of the link text
+    #1%
+    \py@NormalColor%                    Turn it back off; these are declarative
+    \pdfendlink}%                       and don't appear bound to the current
+  }%                                    formatting "box".
+}
+
 % cited titles:  \citetitle{Title of Work}
 %       online:  \citetitle[url-to-resource]{Title of Work}
 \newcommand{\citetitle}[2][URL]{\emph{#2}}