Index: wp-includes/post-template.php
===================================================================
--- wp-includes/post-template.php	(revision 4141)
+++ wp-includes/post-template.php	(working copy)
@@ -50,15 +50,14 @@
 	return apply_filters('get_the_guid', $post->guid);
 }
 
-function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
-	$content = get_the_content($more_link_text, $stripteaser, $more_file);
-	$content = apply_filters('the_content', $content);
+function the_content( $more_link_text = '(more...)', $stripteaser = 0 ) {
+	$content = get_the_content( $more_link_text, $stripteaser );
+	$content = apply_filters( 'the_content', $content );
 	$content = str_replace(']]>', ']]&gt;', $content);
 	echo $content;
 }
 
-
-function get_the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
+function get_the_content( $more_link_text = '(more...)', $stripteaser = 0 ) {
 	global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages;
 	global $preview;
 	global $pagenow;
@@ -71,15 +70,10 @@
 		}
 	}
 
-	if ( $more_file != '' )
-		$file = $more_file;
-	else
-		$file = $pagenow; //$_SERVER['PHP_SELF'];
-
 	if ( $page > count($pages) ) // if the requested page doesn't exist
 		$page = count($pages); // give them the highest numbered page that DOES exist
 
-	$content = $pages[$page-1];
+	$content = $pages[$page ? $page - 1 : 0];
 	if ( preg_match('/<!--more(.+?)?-->/', $content, $matches) ) {
 		$content = explode($matches[0], $content, 2);
 		if ( !empty($matches[1]) )
@@ -135,60 +129,80 @@
 	if ( !isset($r['next_or_number']) )
 		$r['next_or_number'] = 'number';
 	if ( !isset($r['nextpagelink']) )
-		$r['nextpagelink'] = 'Next page';
+		$r['nextpagelink'] = __('Next page');
 	if ( !isset($r['previouspagelink']) )
-		$r['previouspagelink'] = 'Previous page';
+		$r['previouspagelink'] = __('Previous page');
 	if ( !isset($r['pagelink']) )
 		$r['pagelink'] = '%';
 	if ( !isset($r['more_file']) )
 		$r['more_file'] = '';
+	if ( !isset($r['all_page_link']) )
+		$r['all_page_link'] = '';
 
-	link_pages($r['before'], $r['after'], $r['next_or_number'], $r['nextpagelink'], $r['previouspagelink'], $r['pagelink'], $r['more_file']);
+	link_pages($r['before'], $r['after'], $r['next_or_number'], $r['nextpagelink'], $r['previouspagelink'], $r['pagelink'], $r['more_file'], $r['all_page_link']);
 }
 
 
-function link_pages($before='<br />', $after='<br />', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', $pagelink='%', $more_file='') {
+function link_pages($before='<br />', $after='<br />', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', $pagelink='%', $more_file='', $all_page_link='') {
 	global $id, $page, $numpages, $multipage, $more, $pagenow;
-	if ( $more_file != '' )
-		$file = $more_file;
-	else
-		$file = $pagenow;
 	if ( $multipage ) {
 		if ( 'number' == $next_or_number ) {
 			echo $before;
 			for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
 				$j = str_replace('%',"$i",$pagelink);
 				echo ' ';
-				if ( ($i != $page) || ((!$more) && ($page==1)) ) {
+				if ( $i != $page || ( !$more && 1 == $page ) ) {
 					if ( '' == get_settings('permalink_structure') )
 						echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
 					else
 						echo '<a href="' . trailingslashit( get_permalink() ) . $i . '/">';
 				}
 				echo $j;
-				if ( ($i != $page) || ((!$more) && ($page==1)) )
+				if ( $i != $page || ( !$more && 1 == $page ) )
 					echo '</a>';
 			}
-			echo $after;
-		} else {
-			if ( $more ) {
-				echo $before;
-				$i = $page - 1;
-				if ( $i && $more ) {
+			if ( '' != $all_page_link ) {
+				echo ' ';
+				if ( 0 != $page ) {
 					if ( '' == get_settings('permalink_structure') )
-						echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">'.$previouspagelink.'</a>';
+						echo '<a href="' . get_permalink() . '&amp;page=' . 0 . '">';
 					else
-						echo '<a href="' . get_permalink() . $i . '/">'.$previouspagelink.'</a>';
+						echo '<a href="' . trailingslashit( get_permalink() ) . 0 . '/">';
 				}
-				$i = $page + 1;
-				if ( $i <= $numpages && $more ) {
+				echo $all_page_link;
+				if ( 0 != $page )
+					echo '</a>';
+			}
+			echo $after;
+		} else if ( $more ) {
+			echo $before;
+			$i = $page - 1;
+			if ( $i > 0 ) {
+				if ( '' == get_settings('permalink_structure') )
+					echo '<a href="' . get_permalink() . '&amp;page=' . $i . '">'.$previouspagelink.'</a>';
+				else
+					echo '<a href="' . get_permalink() . $i . '/">'.$previouspagelink.'</a>';
+			}
+			$i = $page + 1;
+			if ( $i <= $numpages ) {
+				if ( '' == get_settings('permalink_structure') )
+					echo '<a href="'.get_permalink() . '&amp;page=' . $i . '">'.$nextpagelink.'</a>';
+				else
+					echo '<a href="'.get_permalink().$i.'/">'.$nextpagelink.'</a>';
+			}
+			if ( '' != $all_page_link ) {
+				echo ' ';
+				if ( 0 != $page ) {
 					if ( '' == get_settings('permalink_structure') )
-						echo '<a href="'.get_permalink() . '&amp;page=' . $i . '">'.$nextpagelink.'</a>';
+						echo '<a href="' . get_permalink() . '&amp;page=' . 0 . '">';
 					else
-						echo '<a href="'.get_permalink().$i.'/">'.$nextpagelink.'</a>';
+						echo '<a href="' . trailingslashit( get_permalink() ) . 0 . '/">';
 				}
-				echo $after;
+				echo $all_page_link;
+				if ( 0 != $page )
+					echo '</a>';
 			}
+			echo $after;
 		}
 	}
 }
Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 4141)
+++ wp-includes/query.php	(working copy)
@@ -1098,7 +1098,7 @@
 	$currentmonth = mysql2date('m', $post->post_date);
 	$numpages = 1;
 	$page = get_query_var('page');
-	if ( !$page )
+	if ( !$page && 0 !== $page )
 		$page = 1;
 	if ( is_single() || is_page() )
 		$more = 1;
@@ -1112,6 +1112,8 @@
 		$content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content);
 		$pages = explode('<!--nextpage-->', $content);
 		$numpages = count($pages);
+		if ( !$page )
+			$pages = array(join('', $pages));
 	} else {
 		$pages[0] = $post->post_content;
 		$multipage = 0;

