diff -r 161d01cbb165 src/eval.c
--- a/src/eval.c	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/eval.c	Sun Apr 15 16:14:55 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/fileio.c
--- a/src/fileio.c	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/fileio.c	Sun Apr 15 16:14:55 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!
diff -r 161d01cbb165 src/testdir/test11.in
--- a/src/testdir/test11.in	Fri Apr 13 23:04:47 2012 +0200
+++ b/src/testdir/test11.in	Sun Apr 15 16:14:55 2012 -0400
@@ -24,6 +24,9 @@
 :let $GZIP = ""
 :au FileChangedShell * echo "caught FileChangedShell"
 :set bin
+:if !has("filterpipe")
+: set shelltemp
+:endif
 :au FileWritePre    *.gz   '[,']!gzip
 :au FileWritePost   *.gz   undo
 :/^start of testfile/,/^end of testfile/w! Xtestfile.gz
