Index: src/main.c =================================================================== --- src/main.c (revision 57762) +++ src/main.c (working copy) @@ -130,6 +130,12 @@ #endif +#ifdef __APPLE__ +#include +#else +#define COMPAT_MODE(a,b) (1) +#endif /* __APPLE__ */ + /* * Different types of error messages. */ @@ -173,6 +179,13 @@ int i; #endif + Unix2003_compat = 0; + if (strncmp(argv[0],"vi",2)==0) { + Unix2003_compat = COMPAT_MODE("bin/vi", "Unix2003"); + } else if (strncmp(argv[0],"ex",2)==0) { + Unix2003_compat = COMPAT_MODE("bin/ex", "Unix2003"); + } + /* * Do any system-specific initialisations. These can NOT use IObuff or * NameBuff. Thus emsg2() cannot be called! @@ -1301,7 +1314,7 @@ /* When running in Ex mode an error causes us to exit with a non-zero exit * code. POSIX requires this, although it's not 100% clear from the * standard. */ - if (exmode_active) + if (exmode_active || Unix2003_compat ) exitval += ex_exitval; /* Position the cursor on the last screen line, below all the text */ @@ -2078,6 +2091,7 @@ { n = get_number_arg((char_u *)argv[0], &argv_idx, 10); set_option_value((char_u *)"window", n, NULL, 0); + p_window = p_window_unix2003; break; } want_argument = TRUE; @@ -2265,6 +2279,7 @@ argv_idx = 0; n = get_number_arg((char_u *)argv[0], &argv_idx, 10); set_option_value((char_u *)"window", n, NULL, 0); + p_window = p_window_unix2003; argv_idx = -1; break; } @@ -3307,6 +3322,7 @@ static void check_swap_exists_action() { + did_emsg = FALSE; if (swap_exists_action == SEA_QUIT) getout(1); handle_swap_exists(NULL);