Index: wp-admin/admin-functions.php
===================================================================
--- wp-admin/admin-functions.php	(revision 3505)
+++ wp-admin/admin-functions.php	(working copy)
@@ -288,6 +288,7 @@
 	$post->post_status = 'draft';
 	$post->comment_status = get_settings('default_comment_status');
 	$post->ping_status = get_settings('default_ping_status');
+	$post->convert_newlines = 'open';
 	$post->post_pingback = get_settings('default_pingback_flag');
 	$post->post_category = get_settings('default_category');
 	$post->post_content = apply_filters('default_content', $post_content);
Index: wp-admin/edit-page-form.php
===================================================================
--- wp-admin/edit-page-form.php	(revision 3505)
+++ wp-admin/edit-page-form.php	(working copy)
@@ -44,6 +44,12 @@
 
 <div id="moremeta">
 <div id="grabit" class="dbx-group">
+
+<fieldset id="newlinesdiv" class="dbx-box">
+<h3 class="dbx-handle"><?php _e('Convert Newlines') ?></h3> 
+<div class="dbx-content"><input name="convert_newlines" type="checkbox" id="convert_newlines" value="open" <?php checked($post->convert_newlines, 'open'); ?> /></div>
+</fieldset>
+
 <fieldset id="commentstatusdiv" class="dbx-box">
 <h3 class="dbx-handle"><?php _e('Discussion') ?></h3>
 <div class="dbx-content">
@@ -55,6 +61,7 @@
 </div>
 </fieldset>
 
+
 <fieldset id="passworddiv" class="dbx-box">
 <h3 class="dbx-handle"><?php _e('Password-Protect Post') ?></h3> 
 <div class="dbx-content"><input name="post_password" type="text" size="13" id="post_password" value="<?php echo $post->post_password ?>" /></div>
Index: wp-includes/functions-post.php
===================================================================
--- wp-includes/functions-post.php	(revision 3505)
+++ wp-includes/functions-post.php	(working copy)
@@ -31,6 +31,7 @@
 	$post_name       = apply_filters('name_save_pre',      $post_name);
 	$comment_status  = apply_filters('comment_status_pre', $comment_status);
 	$ping_status     = apply_filters('ping_status_pre',    $ping_status);
+	$convert_newlines= apply_filters('convert_newlines',   $convert_newlines);
 	
 	// Make sure we set a valid category
 	if (0 == count($post_category) || !is_array($post_category)) {
@@ -80,6 +81,9 @@
 	if ( empty($post_pingback) )
 		$post_pingback = get_option('default_pingback_flag');
 
+	if ( empty($convert_newlines) )
+		$convert_newlines = 'closed';
+
 	if ( isset($to_ping) )
 		$to_ping = preg_replace('|\s+|', "\n", $to_ping);
 	else
@@ -139,14 +143,15 @@
 			post_modified = '".current_time('mysql')."',
 			post_modified_gmt = '".current_time('mysql',1)."',
 			post_parent = '$post_parent',
-			menu_order = '$menu_order'
+			menu_order = '$menu_order',
+			convert_newlines = '$convert_newlines'
 			WHERE ID = $post_ID");
 	} else {
 		$wpdb->query(
 			"INSERT IGNORE INTO $wpdb->posts
-			(post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order, post_mime_type)
+			(post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order, post_mime_type, convert_newlines)
 			VALUES
-			('$post_author', '$post_date', '$post_date_gmt', '$post_content', '$post_content_filtered', '$post_title', '$post_excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$to_ping', '$pinged', '$post_date', '$post_date_gmt', '$post_parent', '$menu_order', '$post_mime_type')");
+			('$post_author', '$post_date', '$post_date_gmt', '$post_content', '$post_content_filtered', '$post_title', '$post_excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$to_ping', '$pinged', '$post_date', '$post_date_gmt', '$post_parent', '$menu_order', '$post_mime_type', '$convert_newlines')");
 			$post_ID = $wpdb->insert_id;			
 	}
 
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 3505)
+++ wp-includes/functions.php	(working copy)
@@ -1183,6 +1183,7 @@
 	if ( !isset($wp_filter[$tag]) ) {
 		return $string;
 	}
+
 	foreach ($wp_filter[$tag] as $priority => $functions) {
 		if ( !is_null($functions) ) {
 			foreach($functions as $function) {
Index: wp-includes/template-functions-post.php
===================================================================
--- wp-includes/template-functions-post.php	(revision 3505)
+++ wp-includes/template-functions-post.php	(working copy)
@@ -63,6 +63,7 @@
 	global $id, $post, $more, $single, $withcomments, $page, $pages, $multipage, $numpages;
 	global $preview;
 	global $pagenow;
+	global $wp_filter;
 	$output = '';
 
 	if ( !empty($post->post_password) ) { // if there's a password
@@ -77,6 +78,12 @@
 	else
 		$file = $pagenow; //$_SERVER['PHP_SELF'];
 
+	if ( 'closed' == $post->convert_newlines )
+	{
+		// FIXME: Is wpautop important? I notice it does more than just newlines. Is that a problem?
+		remove_filter('the_content', 'wpautop');
+	}
+
 	$content = $pages[$page-1];
 	$content = explode('<!--more-->', $content, 2);
 	if ( (preg_match('/<!--noteaser-->/', $post->post_content) && ((!$multipage) || ($page==1))) )
