updated for version 7.4a.041
Problem:    When using ":new ++ff=unix" and "dos" is first in 'fileformats'
            then 'ff' is set to "dos" instead of "unix". (Ingo Karkat)
Solution:   Create set_file_options() and invoke it from do_ecmd().
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 445b66f..c08bb21 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3448,9 +3448,13 @@
 		    curwin->w_buffer = buf;
 		    curbuf = buf;
 		    ++curbuf->b_nwindows;
-		    /* set 'fileformat' */
-		    if (*p_ffs && !oldbuf)
-			set_fileformat(default_fileformat(), OPT_LOCAL);
+
+		    /* Set 'fileformat', 'binary' and 'fenc' when forced. */
+		    if (!oldbuf && eap != NULL)
+		    {
+			set_file_options(TRUE, eap);
+			set_forced_fenc(eap);
+		    }
 		}
 
 		/* May get the window options from the last time this buffer