Added the undofile() function.  Updated runtime files.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 08b79bb..4d983bf 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1943,6 +1943,7 @@
 					to chars in {tostr}
 trunc( {expr}			Float	truncate Float {expr}
 type( {name})			Number	type of variable {name}
+undofile( {name})		String	undo file name for {name}
 values( {dict})			List	values in {dict}
 virtcol( {expr})		Number	screen column of cursor or mark
 visualmode( [expr])		String	last visual mode used
@@ -5767,6 +5768,15 @@
 			:if type(myvar) == type({})
 			:if type(myvar) == type(0.0)
 
+undofile({name})					*undofile()*
+		Return the name of the undo file that would be used for a file
+		with name {name} when writing.  This uses the 'undodir'
+		option, finding directories that exist.  It does not check if
+		the undo file exist.
+		Useful in combination with |:wundo| and |:rundo|.
+		When compiled without the +persistent_undo option this always
+		returns an empty string.
+
 values({dict})						*values()*
 		Return a |List| with all the values of {dict}.	The |List| is
 		in arbitrary order.
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 13dfc59..96b5b4d 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -775,7 +775,7 @@
   For Chinese, there's a great XIM server named "xcin", you can input both
   Traditional and Simplified Chinese characters.  And it can accept other
   locale if you make a correct input table.  Xcin can be found at:
-  http://xcin.linux.org.tw/
+  http://cle.linux.org.tw/xcin/
   Others are scim: http://scim.freedesktop.org/ and fcitx:
   http://www.fcitx.org/
 
@@ -963,10 +963,10 @@
     language version of Global IME at same place.
 
     - Global IME detailed information.
-	http://www.microsoft.com/windows/ie/features/ime.asp
+	http://search.microsoft.com/results.aspx?q=global+ime
 
     - Active Input Method Manager (Global IME)
-	http://msdn.microsoft.com/workshop/misc/AIMM/aimm.asp
+	http://msdn.microsoft.com/en-us/library/aa741221(v=VS.85).aspx
 
     Support for Global IME is an experimental feature.
 
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 1026815..6bf8580 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -585,6 +585,7 @@
 Messages like this appear when starting up.  This is not a Vim problem, your
 X11 configuration is wrong.  You can find a hint on how to solve this here:
 http://groups.yahoo.com/group/solarisonintel/message/12179.
+[this URL is no longer valid]
 
 							*W10*  >
   Warning: Changing a readonly file
diff --git a/runtime/doc/os_os2.txt b/runtime/doc/os_os2.txt
index b262d6d..a6c0cf3 100644
--- a/runtime/doc/os_os2.txt
+++ b/runtime/doc/os_os2.txt
@@ -183,7 +183,8 @@
 from within a vio application.  The freeware package clipbrd.zip by Stefan
 Gruendel can be used for this purpose.  You might download the package
 including precompiled binaries and all sources from:
-	http://www.stellarcom.org/vim/index.html
+	http://www.os2site.com/sw/util/clipboard/index.html
+	http://download.uni-hd.de/ftp/pub/os2/pmtools/
 
 Installation of this package is straight forward: just put the two executables
 that come with this package into a directory within your PATH for Vim should
diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt
index 49b7dfc..73a3182 100644
--- a/runtime/doc/print.txt
+++ b/runtime/doc/print.txt
@@ -490,7 +490,7 @@
 
 You can find descriptions of the various fonts in the read me file at
 
-  http://examples.oreilly.com/cjkvinfo/adobe/00README
+  http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README
 
 Please read your printer documentation on how to install new fonts.
 
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 229fdd6..109276f 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -828,7 +828,8 @@
 DESKTOP					   *desktop.vim* *ft-desktop-syntax*
 
 Primary goal of this syntax file is to highlight .desktop and .directory files
-according to freedesktop.org standard: http://pdx.freedesktop.org/Standards/
+according to freedesktop.org standard:
+http://standards.freedesktop.org/desktop-entry-spec/latest/
 But actually almost none implements this standard fully.  Thus it will
 highlight all Unix ini files.  But you can force strict highlighting according
 to standard by placing this in your vimrc file: >
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 66cc033..7ecb985 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7867,6 +7867,7 @@
 undo-two-ways	undo.txt	/*undo-two-ways*
 undo.txt	undo.txt	/*undo.txt*
 undo_ftplugin	usr_41.txt	/*undo_ftplugin*
+undofile()	eval.txt	/*undofile()*
 unicode	mbyte.txt	/*unicode*
 unix	os_unix.txt	/*unix*
 unlisted-buffer	windows.txt	/*unlisted-buffer*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index f79148f..169d0fb 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,10 +30,6 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Fixes for broken URLs:
-    Benjamin Haskell, 2010 May 25
-    Christian Brabandt, 2010 May 26, two messages
-
 Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
 
 E315 when trying to change a file in FileChangedRO autocommand event.
@@ -1094,7 +1090,6 @@
    Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
 - Persistent undo bugs / fixes:
     - Need to check all values for evil manipulation.
-    - Add undofile(name): get undo file name for buffer "name".
 - patch for unused functions. (Dominique Pelle, 2010 May 29)
 - Also crypt the undo file.
 - Also crypt the swap file, each block separately.  Change mf_write() and
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index a7ae173..4dbe693 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -243,12 +243,26 @@
 You can use these in autocommands to explicitly specify the name of the
 history file.  E.g.: >
 
-	au BufReadPost * rundo %:h/UNDO/%:t
-	au BufWritePost * wundo %:h/UNDO/%:t
+	au BufReadPost * call ReadUndo()
+	au BufWritePost * call WriteUndo()
+	func ReadUndo()
+	  if filereadable(expand('%:h'). '/UNDO/' . expand('%:t'))
+	    rundo %:h/UNDO/%:t
+	  endif
+	endfunc
+	func WriteUndo()
+	  let dirname = expand('%:h') . '/UNDO'
+	  if !isdirectory(dirname)
+	    call mkdir(dirname)
+	  endif
+	  wundo %:h/UNDO/%:t
+	endfunc
 
 You should keep 'undofile' off, otherwise you end up with two undo files for
 every write.
-Note: I did not verify this always works!
+
+You can use the |undofile()| function to find out the file name that Vim would
+use.
 
 Note that while reading/writing files and 'undofile' is set most errors will
 be silent, unless 'verbose' is set.  With :wundo and :rundo you will get more
diff --git a/runtime/doc/workshop.txt b/runtime/doc/workshop.txt
index e4cc91a..ae676de 100644
--- a/runtime/doc/workshop.txt
+++ b/runtime/doc/workshop.txt
@@ -89,10 +89,10 @@
 
 The XPM library is provide by Arnaud Le Hors of the French National Institute
 for Research in Computer Science and Control.  It can be downloaded from
-http://koala.ilog.fr/ftp/pub/xpm.  The current release, as of this writing, is
-xpm-3.4k-solaris.tgz, which is a gzip'ed tar file.  If you create the directory
-/usr/local/xpm and untar the file there you can use the uncommented lines in
-the Makefile without changing them.  If you use another xpm directory you will
-need to change the XPM_DIR in src/Makefile.
+http://cgit.freedesktop.org/xorg/lib/libXpm.  The current release, as of this
+writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file.  If you create
+the directory /usr/local/xpm and untar the file there you can use the
+uncommented lines in the Makefile without changing them.  If you use another
+xpm directory you will need to change the XPM_DIR in src/Makefile.
 
  vim:tw=78:ts=8:ft=help:norl: