Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 20104)
+++ wp-admin/includes/misc.php	(working copy)
@@ -211,23 +211,6 @@
 add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 );
 
 /**
- * Shorten an URL, to be used as link text
- *
- * @since 1.2.1
- *
- * @param string $url
- * @return string
- */
-function url_shorten( $url ) {
-	$short_url = str_replace( 'http://', '', stripslashes( $url ));
-	$short_url = str_replace( 'www.', '', $short_url );
-	$short_url = untrailingslashit( $short_url );
-	if ( strlen( $short_url ) > 35 )
-		$short_url = substr( $short_url, 0, 32 ) . '...';
-	return $short_url;
-}
-
-/**
  * Resets global variables based on $_GET and $_POST
  *
  * This function resets global variables based on the names passed
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 20104)
+++ wp-includes/functions.php	(working copy)
@@ -3664,3 +3664,27 @@
 	return $clean;
 }
 
+/**
+ * Shorten an URL, to be used as link text
+ *
+ * @since 1.2.1
+ *
+ * @param string $url
+ * @return string
+ */
+function url_shorten( $url, $url_len = 35, $strip_lead = 1, $strip_trailslash = 1 ) {
+   $short_url = $url;
+        if ( $strip_lead == 1 ) {
+                $short_url = str_replace( 'http://', '', stripslashes( $url ) );
+                $short_url = str_replace( 'www.', '', $short_url );
+        }
+        if ( $strip_trailslash == 1 ) {
+                $short_url = untrailingslashit ( $short_url );
+        }
+        if ( is_int ( $url_len ) && $url_len <= 2000 ) {
+                        $short_url_len = $url_len;
+        }
+        if ( strlen( $short_url ) > $short_url_len )
+                $short_url = substr( $short_url, 0, $short_url_len - 3 ) . '...';
+   return $short_url;
+}
