diff --git a/src/INSTALLvms.txt b/src/INSTALLvms.txt
index 7966e6f..3e05b53 100644
--- a/src/INSTALLvms.txt
+++ b/src/INSTALLvms.txt
@@ -198,7 +198,7 @@
      more information can be found in os_vms_fix.com file itself.
 
      NOTE: even if os_vms_fix.com will fix all pre-processor directives it will
-     leave singe (long) line directives. You have to fix them manually.
+     leave single (long) line directives. You have to fix them manually.
      Known problematic files are option.h and option.c
 
 4.2. After the conversion you can continue building as it has been described
@@ -319,7 +319,7 @@
 
      Build it as normally.
 
-     Used sharable images are:
+     Used shareable images are:
 	gtk_root:[glib]libglib.exe /share,-
 	gtk_root:[glib.gmodule]libgmodule.exe /share,-
 	gtk_root:[gtk.gdk]libgdk.exe /share,-
diff --git a/src/Make_vms.mms b/src/Make_vms.mms
index c5af714..6d5db4b 100644
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -281,7 +281,7 @@
  $(TCL_INC)$(XDIFF_INC)$(XPM_INC))
 
 # CFLAGS displayed in :ver information
-# It is specially formated for correct display of unix like includes
+# It is specially formatted for correct display of unix like includes
 # as $(GUI_INC) - replaced with $(GUI_INC_VER)
 # Otherwise should not be any other difference.
 ALL_CFLAGS_VER = /def=($(MODEL_DEF)$(DEFS)$(DEBUG_DEF)$(PERL_DEF)$(PYTHON_DEF) -
diff --git a/src/beval.h b/src/beval.h
index ffe47ff..f446200 100644
--- a/src/beval.h
+++ b/src/beval.h
@@ -38,7 +38,7 @@
     GtkWidget		*balloonShell;
     GtkWidget		*balloonLabel;
     unsigned int	timerID;	// timer for run
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
     int			x;
     int			y;
     unsigned int	state;		// Button/Modifier key state
@@ -48,7 +48,7 @@
     Widget		balloonShell;
     Widget		balloonLabel;
     XtIntervalId	timerID;	// timer for run
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
     XtAppContext	appContext;	// used in event handler
     Position		x;
     Position		y;
@@ -60,7 +60,7 @@
     HWND		balloon;
     int			x;
     int			y;
-    BeState		showState;	// tells us whats currently going on
+    BeState		showState;	// tells us what's currently going on
 #  endif
 # endif
 # if !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_MSWIN)
diff --git a/src/buffer.c b/src/buffer.c
index f56ff0b..7ff8097 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1690,7 +1690,7 @@
     set_bufref(&prevbufref, prevbuf);
     set_bufref(&newbufref, buf);
 
-    // Autocommands may delete the curren buffer and/or the buffer we wan to go
+    // Autocommands may delete the current buffer and/or the buffer we want to go
     // to.  In those cases don't close the buffer.
     if (!apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf)
 	    || (bufref_valid(&prevbufref)
@@ -1713,6 +1713,7 @@
 #endif
 	{
 	    win_T  *previouswin = curwin;
+
 	    if (prevbuf == curbuf)
 		u_sync(FALSE);
 	    close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
diff --git a/src/charset.c b/src/charset.c
index 7505fea..aa843d1 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1939,7 +1939,7 @@
 	}
     }
 
-    // Check for an alpha-numeric character immediately following, that is
+    // Check for an alphanumeric character immediately following, that is
     // most likely a typo.
     if (strict && n - 1 != maxlen && ASCII_ISALNUM(*ptr))
 	return;
diff --git a/src/evalvars.c b/src/evalvars.c
index 866682b..38cb457 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2813,7 +2813,7 @@
 		    char_u *val = tv_get_string(tv);
 
 		    // Careful: when assigning to v:errmsg and tv_get_string()
-		    // causes an error message the variable will alrady be set.
+		    // causes an error message the variable will already be set.
 		    if (di->di_tv.vval.v_string == NULL)
 			di->di_tv.vval.v_string = vim_strsave(val);
 		}
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index c8a93bc..881e6f9 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5288,7 +5288,7 @@
  * Return a heuristic indicating how well the given string matches.  The
  * smaller the number, the better the match.  This is the order of priorities,
  * from best match to worst match:
- *	- Match with least alpha-numeric characters is better.
+ *	- Match with least alphanumeric characters is better.
  *	- Match with least total characters is better.
  *	- Match towards the start is better.
  *	- Match starting with "+" is worse (feature instead of command)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index c0ed1c8..6df6975 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6134,7 +6134,7 @@
 }
 
 /*
- * ":edit <file>" command and alikes.
+ * ":edit <file>" command and alike.
  */
     void
 do_exedit(
diff --git a/src/getchar.c b/src/getchar.c
index 72ddbb9..d056bcc 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -3237,7 +3237,7 @@
  *	1. a scriptfile
  *	2. the keyboard
  *
- *  As much characters as we can get (upto 'maxlen') are put in "buf" and
+ *  As many characters as we can get (up to 'maxlen') are put in "buf" and
  *  NUL terminated (buffer length must be 'maxlen' + 1).
  *  Minimum for "maxlen" is 3!!!!
  *
diff --git a/src/gui.c b/src/gui.c
index eec89d5..f1c36f4 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -3420,7 +3420,7 @@
     if (oldval != NULL && gui.in_use)
     {
 	/*
-	 * Check if the menu's go from grey to non-grey or vise versa.
+	 * Check if the menus go from grey to non-grey or vice versa.
 	 */
 	grey_old = (vim_strchr(oldval, GO_GREY) != NULL);
 	grey_new = (vim_strchr(p_go, GO_GREY) != NULL);
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 3dfb939..875b3ec 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2919,7 +2919,7 @@
 
     (void)FSGetCatalogInfo(&applFSRef, kFSCatInfoNone, NULL, NULL, &applDir, NULL);
 
-    // This technic return NIL when we disallow_gui
+    // This technique returns NIL when we disallow_gui
 # endif
     exe_name = FullPathFromFSSpec_save(applDir);
 #endif
diff --git a/src/gui_photon.c b/src/gui_photon.c
index 963cabc..1a7288b 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1206,7 +1206,7 @@
 
     /*
      * Now that the text area widget has been created, set up the colours,
-     * which wil call PtSetResource from gui_mch_new_colors
+     * which will call PtSetResource from gui_mch_new_colors
      */
 
     /*
diff --git a/src/if_perl.xs b/src/if_perl.xs
index fd9d3d7..12e1a22 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -930,7 +930,7 @@
 
     if (SvRV(sv) != SvRV(rv))
 	// XXX: This magic variable is a bit confusing...
-	// Is curently refcounted ?
+	// Is currently refcounted ?
 	sv_setsv(sv, rv);
 
     SvREFCNT_dec(rv);
diff --git a/src/libvterm/t/11state_movecursor.test b/src/libvterm/t/11state_movecursor.test
index c1d72b2..26e447e 100644
--- a/src/libvterm/t/11state_movecursor.test
+++ b/src/libvterm/t/11state_movecursor.test
@@ -112,7 +112,7 @@
 PUSH "\e[0F"
   ?cursor = 0,0
 
-!Cursor Horizonal Absolute
+!Cursor Horizontal Absolute
 PUSH "\n"
   ?cursor = 1,0
 PUSH "\e[20G"
diff --git a/src/libvterm/t/41screen_unicode.test b/src/libvterm/t/41screen_unicode.test
index 79dcb68..6f5602d 100644
--- a/src/libvterm/t/41screen_unicode.test
+++ b/src/libvterm/t/41screen_unicode.test
@@ -40,7 +40,7 @@
 PUSH  "\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81\xCC\x81"
   ?screen_cell 0,0 = {0x65,0x301,0x301,0x301,0x301,0x301} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
 
-!Outputing CJK doublewidth in 80th column should wraparound to next line and not crash"
+!Outputting CJK doublewidth in 80th column should wraparound to next line and not crash"
 RESET
 PUSH "\e[80G\xEF\xBC\x90"
   ?screen_cell 0,79 = {} width=1 attrs={} fg=rgb(240,240,240) bg=rgb(0,0,0)
diff --git a/src/mbyte.c b/src/mbyte.c
index 5dd2562..abb07ae 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -960,7 +960,7 @@
 			// special symbols
 			return 10;
 		    case 0x23:
-			// alpha-numeric
+			// alphanumeric
 			return 11;
 		    case 0x24:
 			// hiragana
@@ -994,7 +994,7 @@
 		 * 20 : Hangul
 		 * 21 : Hanja
 		 * 22 : Symbols
-		 * 23 : Alpha-numeric/Roman Letter (Full width)
+		 * 23 : Alphanumeric/Roman Letter (Full width)
 		 * 24 : Hangul Letter(Alphabet)
 		 * 25 : Roman Numeral/Greek Letter
 		 * 26 : Box Drawings
@@ -1025,7 +1025,7 @@
 			// Symbols
 			return 22;
 		    case 0xA3:
-			// Alpha-numeric
+			// Alphanumeric
 			return 23;
 		    case 0xA4:
 			// Hangul Letter(Alphabet)
diff --git a/src/memline.c b/src/memline.c
index aeb8afe..c6db913 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -111,7 +111,7 @@
     unsigned	db_txt_end;	// byte just after data block
     linenr_T	db_line_count;	// number of lines in this block
     unsigned	db_index[1];	// index for start of line (actually bigger)
-				// followed by empty space upto db_txt_start
+				// followed by empty space up to db_txt_start
 				// followed by the text in the lines until
 				// end of page
 };
diff --git a/src/normal.c b/src/normal.c
index c4963e6..512b799 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -5659,7 +5659,7 @@
     VIsual_reselect = TRUE;
 
     // Corner case: the 0 position in a tab may change when going into
-    // virtualedit.  Recalculate curwin->w_cursor to avoid bad hilighting.
+    // virtualedit.  Recalculate curwin->w_cursor to avoid bad highlighting.
     if (c == Ctrl_V && (ve_flags & VE_BLOCK) && gchar_cursor() == TAB)
     {
 	validate_virtcol();
diff --git a/src/ops.c b/src/ops.c
index b412b8a..6a6abf7 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -314,7 +314,7 @@
 	 *  3. Divvy into TABs & spp
 	 *  4. Construct new string
 	 */
-	total += bd.pre_whitesp; // all virtual WS upto & incl a split TAB
+	total += bd.pre_whitesp; // all virtual WS up to & incl a split TAB
 	ws_vcol = bd.start_vcol - bd.pre_whitesp;
 	if (bd.startspaces)
 	{
diff --git a/src/option.c b/src/option.c
index e24181a..f02dd26 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3155,7 +3155,7 @@
 
 #if defined(FEAT_EVAL)
     // Save the global value before changing anything. This is needed as for
-    // a global-only option setting the "local value" infact sets the global
+    // a global-only option setting the "local value" in fact sets the global
     // value (since there is only one value).
     if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0)
 	old_global_value = *(long *)get_varp_scope(&(options[opt_idx]),
diff --git a/src/option.h b/src/option.h
index 4ccf22a..8b04d18 100644
--- a/src/option.h
+++ b/src/option.h
@@ -1066,7 +1066,7 @@
 EXTERN long	p_wd;		// 'writedelay'
 
 /*
- * "indir" values for buffer-local opions.
+ * "indir" values for buffer-local options.
  * These need to be defined globally, so that the BV_COUNT can be used with
  * b_p_scriptID[].
  */
diff --git a/src/os_unix.c b/src/os_unix.c
index 5f2ece3..15d88f9 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -1931,7 +1931,7 @@
 	 * keep traversing up the tree until a window with a title/icon is
 	 * found.
 	 */
-	// Previously this was only done for xterm and alikes.  I don't see a
+	// Previously this was only done for xterm and alike.  I don't see a
 	// reason why it would fail for other terminal emulators.
 	// if (term_is_xterm)
 	{
diff --git a/src/os_win32.c b/src/os_win32.c
index 844d794..6bbd492 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6927,7 +6927,7 @@
 	return 0;
     pStackBase = (BYTE*)mbi.AllocationBase;
 
-    // ...and the page thats min_stack_req pages away from stack base; this is
+    // ...and the page that's min_stack_req pages away from stack base; this is
     // the lowest page we could use.
     pLowestPossiblePage = pStackBase + MIN_STACK_WINNT * nPageSize;
 
diff --git a/src/quickfix.c b/src/quickfix.c
index 2e07403..868b5d9 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2771,7 +2771,7 @@
 }
 
 /*
- * Get a entry specied by 'errornr' and 'dir' from the current
+ * Get a entry specified by 'errornr' and 'dir' from the current
  * quickfix/location list. 'errornr' specifies the index of the entry and 'dir'
  * specifies the direction (FORWARD/BACKWARD/FORWARD_FILE/BACKWARD_FILE).
  * Returns a pointer to the entry and the index of the new entry is stored in
@@ -6320,7 +6320,7 @@
 
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
- * Copy the specified quickfix entry items into a new dict and appened the dict
+ * Copy the specified quickfix entry items into a new dict and append the dict
  * to 'list'.  Returns OK on success.
  */
     static int
diff --git a/src/register.c b/src/register.c
index 24e4b99..6960002 100644
--- a/src/register.c
+++ b/src/register.c
@@ -590,7 +590,7 @@
 	if (y_current->y_array == NULL)
 	    return FAIL;
 
-	// Disallow remaping for ":@r".
+	// Disallow remapping for ":@r".
 	remap = colon ? REMAP_NONE : REMAP_YES;
 
 	// Insert lines into typeahead buffer, from last one to first one.
diff --git a/src/spell.c b/src/spell.c
index 572f7fb..87c8f8a 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -1786,7 +1786,7 @@
 count_common_word(
     slang_T	*lp,
     char_u	*word,
-    int		len,	    // word length, -1 for upto NUL
+    int		len,	    // word length, -1 for up to NUL
     int		count)	    // 1 to count once, 10 to init
 {
     hash_T	hash;
diff --git a/src/tag.c b/src/tag.c
index aaf19c9..4c6dadc 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -4123,7 +4123,7 @@
 
 /*
  * Remove the oldest entry from the tag stack and shift the rest of
- * the entires to free up the top of the stack.
+ * the entries to free up the top of the stack.
  */
     static void
 tagstack_shift(win_T *wp)
diff --git a/src/term.c b/src/term.c
index c74c5ba..1399286 100644
--- a/src/term.c
+++ b/src/term.c
@@ -146,7 +146,7 @@
 // Request cursor style report:
 static termrequest_T rcs_status = TERMREQUEST_INIT;
 
-// Request windos position report:
+// Request window's position report:
 static termrequest_T winpos_status = TERMREQUEST_INIT;
 
 static termrequest_T *all_termrequests[] = {
diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim
index f7cfb4e..6e4e090 100644
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -1,7 +1,7 @@
 " Test for breakindent
 "
 " Note: if you get strange failures when adding new tests, it might be that
-" while the test is run, the breakindent cacheing gets in its way.
+" while the test is run, the breakindent caching gets in its way.
 " It helps to change the tabstop setting and force a redraw (e.g. see
 " Test_breakindent08())
 source check.vim
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index dace45b..bd442c2 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -20,7 +20,7 @@
 
 let s:chopt = {}
 
-" Run "testfunc" after sarting the server and stop the server afterwards.
+" Run "testfunc" after starting the server and stop the server afterwards.
 func s:run_server(testfunc, ...)
   call RunServer('test_channel.py', a:testfunc, a:000)
 endfunc
@@ -425,7 +425,7 @@
 
   " We intend to use a socket that doesn't exist and wait for half a second
   " before giving up.  If the socket does exist it can fail in various ways.
-  " Check for "Connection reset by peer" to avoid flakyness.
+  " Check for "Connection reset by peer" to avoid flakiness.
   let start = reltime()
   try
     let handle = ch_open('localhost:9867', {'waittime': 500})
diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim
index 2d78be1..dfafd01 100644
--- a/src/testdir/test_cindent.vim
+++ b/src/testdir/test_cindent.vim
@@ -815,7 +815,7 @@
         }
      }
 
-  public: // <-- this was incorectly indented before!!
+  public: // <-- this was incorrectly indented before!!
      void testfall();
   protected:
      void testfall();
@@ -1780,7 +1780,7 @@
   		}
   	}
 
-  	public: // <-- this was incorectly indented before!!
+  	public: // <-- this was incorrectly indented before!!
   	void testfall();
   	protected:
   	void testfall();
@@ -5254,9 +5254,12 @@
 " this was going beyond the end of the line.
 func Test_cindent_case()
   new
-  call setline(1, "case x: // x")
+  call setline(1, 'case x: // x')
   set cindent
   norm! f:a:
+  call assert_equal('case x:: // x', getline(1))
+
+  set cindent&
   bwipe!
 endfunc
 
diff --git a/src/testdir/test_digraph.vim b/src/testdir/test_digraph.vim
index 6435c86..e66663b 100644
--- a/src/testdir/test_digraph.vim
+++ b/src/testdir/test_digraph.vim
@@ -80,7 +80,7 @@
   call Put_Dig(".e")
   call Put_Dig("a.") " not defined
   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
-  " Diaresis
+  " Diaeresis
   call Put_Dig("a:")
   call Put_Dig(":u")
   call Put_Dig("b:") " not defined
@@ -285,7 +285,7 @@
   call Put_Dig_BS(".","e")
   call Put_Dig_BS("a",".") " not defined
   call assert_equal(['ḃ', 'ė', '.'], getline(line('.')-2,line('.')))
-  " Diaresis
+  " Diaeresis
   call Put_Dig_BS("a",":")
   call Put_Dig_BS(":","u")
   call Put_Dig_BS("b",":") " not defined
diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim
index 4e29e7f..1a37146 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -589,7 +589,7 @@
   call feedkeys("A\<c-x>\<c-k>\<down>\<down>\<down>\<down>\<cr>\<esc>", 'tnix')
   call assert_equal(['AA'], getline(1, '$'))
 
-  " press an unexecpted key after dictionary completion
+  " press an unexpected key after dictionary completion
   %d
   call setline(1, 'A')
   call cursor(1, 1)
diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim
index 690ac67..61da44d 100644
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -10,7 +10,7 @@
   throw 'Skipped: python program missing'
 endif
 
-" Run "testfunc" after sarting the server and stop the server afterwards.
+" Run "testfunc" after starting the server and stop the server afterwards.
 func s:run_server(testfunc, ...)
   call RunServer('test_netbeans.py', a:testfunc, a:000)
 endfunc
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index b7b4281..129b1cf 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -2629,7 +2629,7 @@
   call assert_equal('quickfix', getwinvar(1, '&buftype'))
   call assert_equal('quickfix', getwinvar(3, '&buftype'))
 
-  " Jumping to a file from the location list window should find a usuable
+  " Jumping to a file from the location list window should find a usable
   " window by wrapping around the window list.
   enew | only
   call setloclist(0, [], 'f')
diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim
index b6bce46..45cf02a 100644
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -274,7 +274,7 @@
   call setreg('=', 'b', 'a')
   call assert_equal('regwrite', getreg('='))
 
-  " Test for settting a list of lines to special registers
+  " Test for setting a list of lines to special registers
   call setreg('/', [])
   call assert_equal('', @/)
   call setreg('=', [])
diff --git a/src/testdir/test_stat.vim b/src/testdir/test_stat.vim
index c8830d1..ccd5950 100644
--- a/src/testdir/test_stat.vim
+++ b/src/testdir/test_stat.vim
@@ -5,7 +5,7 @@
   let times = []
   let result = 0
 
-  " Use three files istead of localtim(), with a network filesystem the file
+  " Use three files instead of localtim(), with a network filesystem the file
   " times may differ at bit
   let fl = ['Hello World!']
   for fname in fnames
diff --git a/src/ui.c b/src/ui.c
index 151857f..393bf91 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1500,7 +1500,7 @@
 	    row2--;
 	}
 
-	// Handle the rectangle thats left
+	// Handle the rectangle that's left
 	if (row2 >= row1)
 	    clip_invert_rectangle(cbd, row1, 0, row2 - row1 + 1,
 							 (int)Columns, invert);
diff --git a/src/version.c b/src/version.c
index dc531be..ed71960 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    156,
+/**/
     155,
 /**/
     154,
diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c
index f2192cf..20a7ad7 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -35,7 +35,7 @@
  *	    xxdline().
  *  7.06.96 -i printed 'int' instead of 'char'. *blush*
  *	    added Bram's OS2 ifdefs...
- * 18.07.96 gcc -Wall @ SunOS4 is now slient.
+ * 18.07.96 gcc -Wall @ SunOS4 is now silent.
  *	    Added osver for MSDOS/DJGPP/WIN32.
  * 29.08.96 Added size_t to strncmp() for Amiga.
  * 24.03.97 Windows NT support (Phil Hanna). Clean exit for Amiga WB (Bram)
