diff --git a/src/main.c b/src/main.c
index 1beaca4..f6a31aa 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,7 +39,6 @@
     char	**argv;
 
     int		evim_mode;		/* started as "evim" */
-    int		bin_mode;		/* -b argument used */
     char_u	*use_vimrc;		/* vimrc from -u argument */
 
     int		n_commands;		     /* no. of commands from + or -c */
@@ -367,15 +366,6 @@
 # endif
 #endif
 
-    /* "-b" argument used.  Check before expanding file names, because for
-     * Win32 this makes us edit a shortcut file itself, instead of the file it
-     * links to. */
-    if (params.bin_mode)
-    {
-	set_options_bin(curbuf->b_p_bin, 1, 0);
-	curbuf->b_p_bin = 1;	    /* binary file I/O */
-    }
-
     if (GARGCOUNT > 0)
     {
 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
@@ -420,8 +410,13 @@
     TIME_MSG("expanding arguments");
 
 #ifdef FEAT_DIFF
-    if (params.diff_mode && params.window_count == -1)
-	params.window_count = 0;	/* open up to 3 files in a window */
+    if (params.diff_mode)
+    {
+	if (params.window_count == -1)
+	    params.window_count = 0;	/* open up to 3 windows */
+	if (params.vert_windows == MAYBE)
+	    params.vert_windows = TRUE;	/* use vertical split */
+    }
 #endif
 
     /* Don't redraw until much later. */
@@ -1453,7 +1448,7 @@
     int		had_minmin = FALSE;	/* found "--" argument */
     int		want_argument;		/* option argument with argument */
     int		c;
-    char_u	*p;
+    char_u	*p = NULL;
     long	n;
 
     --argc;
@@ -1597,7 +1592,11 @@
 		break;
 
 	    case 'b':		/* "-b" binary mode */
-		parmp->bin_mode = TRUE;    /* postpone to after reading .exrc files */
+		/* Needs to be effective before expanding file names, because
+		 * for Win32 this makes us edit a shortcut file itself,
+		 * instead of the file it links to. */
+		set_options_bin(curbuf->b_p_bin, 1, 0);
+		curbuf->b_p_bin = 1;	    /* binary file I/O */
 		break;
 
 	    case 'C':		/* "-C"  Compatible */
@@ -1691,7 +1690,8 @@
 	    case 'o':		/* "-o[N]" open N horizontal split windows */
 #ifdef FEAT_WINDOWS
 		/* default is 0: open window for each file */
-		parmp->window_count = get_number_arg((char_u *)argv[0], &argv_idx, 0);
+		parmp->window_count = get_number_arg((char_u *)argv[0],
+								&argv_idx, 0);
 		parmp->vert_windows = FALSE;
 #endif
 		break;
@@ -1699,7 +1699,8 @@
 		case 'O':	/* "-O[N]" open N vertical split windows */
 #if defined(FEAT_VERTSPLIT) && defined(FEAT_WINDOWS)
 		/* default is 0: open window for each file */
-		parmp->window_count = get_number_arg((char_u *)argv[0], &argv_idx, 0);
+		parmp->window_count = get_number_arg((char_u *)argv[0],
+								&argv_idx, 0);
 		parmp->vert_windows = TRUE;
 #endif
 		break;
@@ -1817,7 +1818,8 @@
 		{
 		    if (parmp->n_commands >= MAX_ARG_CMDS)
 			mainerr(ME_EXTRA_CMD, NULL);
-		    parmp->commands[parmp->n_commands++] = (char_u *)argv[0] + argv_idx;
+		    parmp->commands[parmp->n_commands++] = (char_u *)argv[0]
+								   + argv_idx;
 		    argv_idx = -1;
 		    break;
 		}
@@ -1890,13 +1892,15 @@
 			parmp->commands[parmp->n_commands++] = p;
 		    }
 		    else
-			parmp->commands[parmp->n_commands++] = (char_u *)argv[0];
+			parmp->commands[parmp->n_commands++] =
+							    (char_u *)argv[0];
 		    break;
 
 		case '-':	/* "--cmd {command}" execute command */
 		    if (parmp->n_pre_commands >= MAX_ARG_CMDS)
 			mainerr(ME_EXTRA_CMD, NULL);
-		    parmp->pre_commands[parmp->n_pre_commands++] = (char_u *)argv[0];
+		    parmp->pre_commands[parmp->n_pre_commands++] =
+							    (char_u *)argv[0];
 		    break;
 
 	    /*	case 'd':   -d {device} is handled in mch_check_win() for the
@@ -2052,7 +2056,7 @@
 #endif
 	    alist_add(&global_alist, p,
 #if (!defined(UNIX) && !defined(__EMX__)) || defined(ARCHIE)
-		    parmp->literal ? 2 : 0	/* add buffer number after expanding */
+		    parmp->literal ? 2 : 0	/* add buffer nr after exp. */
 #else
 		    2		/* add buffer number now and use curbuf */
 #endif
@@ -2425,7 +2429,8 @@
      */
     if (parmp->use_vimrc != NULL)
     {
-	if (STRCMP(parmp->use_vimrc, "NONE") == 0 || STRCMP(parmp->use_vimrc, "NORC") == 0)
+	if (STRCMP(parmp->use_vimrc, "NONE") == 0
+				     || STRCMP(parmp->use_vimrc, "NORC") == 0)
 	{
 #ifdef FEAT_GUI
 	    if (use_gvimrc == NULL)	    /* don't load gvimrc either */
