diff -r 161d01cbb165 src/eval.c
--- a/src/eval.c	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/eval.c	Sun Apr 22 10:52:34 2012 -0400
@@ -12090,7 +12090,7 @@
 #ifdef FEAT_SEARCHPATH
 	"file_in_path",
 #endif
-#if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+#if (defined(UNIX) && !defined(USE_SYSTEM)) || (defined(WIN3264) && defined(FEAT_GUI_W32))
 	"filterpipe",
 #endif
 #ifdef FEAT_FIND_ID
diff -r 161d01cbb165 src/ex_cmds.c
--- a/src/ex_cmds.c	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/ex_cmds.c	Sun Apr 22 10:52:34 2012 -0400
@@ -1113,7 +1113,7 @@
     if (do_out)
 	shell_flags |= SHELL_DOOUT;
 
-#if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
+#if (!defined(USE_SYSTEM) && defined(UNIX)) || (defined(WIN3264) && defined(FEAT_GUI_W32))
     if (!do_in && do_out && !p_stmp)
     {
 	/* Use a pipe to fetch stdout of the command, do not use a temp file. */
diff -r 161d01cbb165 src/fileio.c
--- a/src/fileio.c	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/fileio.c	Sun Apr 22 10:52:34 2012 -0400
@@ -2655,10 +2655,6 @@
     }
 #endif
 
-    /* Reset now, following writes should not omit the EOL.  Also, the line
-     * number will become invalid because of edits. */
-    curbuf->b_no_eol_lnum = 0;
-
     if (recoverymode && error)
 	return FAIL;
     return OK;
@@ -5098,6 +5094,8 @@
     {
 	aco_save_T	aco;
 
+	curbuf->b_no_eol_lnum = 0;  /* in case it was set by the previous read */
+
 	/*
 	 * Apply POST autocommands.
 	 * Careful: The autocommands may call buf_write() recursively!
