]> skyeroc.xyz Git - dgamelaunch/commitdiff
Sync virus with http://www.rocklinux.net/people/ripclaw/projects/software/virus/virus...
authorPasi Kallinen <paxed@alt.org>
Mon, 21 May 2012 20:04:43 +0000 (23:04 +0300)
committerPasi Kallinen <paxed@alt.org>
Mon, 21 May 2012 20:04:43 +0000 (23:04 +0300)
virus.c

diff --git a/virus.c b/virus.c
index 2742df91a3fe112cc21037a6bbb1d1fa92a18125..2945b4fd698784eeb61ea1304ec73383feab6898 100644 (file)
--- a/virus.c
+++ b/virus.c
@@ -3,7 +3,7 @@
  * virus - vi resembling utility skeleton - based on 
  * tiny vi.c: A small 'vi' clone (from busybox 0.52)
  *
- * Copyright (C) 2001, 2002 Stefan Koerner <ripclaw@rocklinux.org>
+ * Copyright (C) 2001 - 2003 Stefan Koerner <ripclaw@rocklinux.org>
  * Copyright (C) 2000, 2001 Sterling Huxley <sterling@europa.com>
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -23,7 +23,7 @@
 
 #include "config.h"
 
-char *vi_Version = "0.0.2+dgamelaunch " PACKAGE_VERSION;
+char *vi_Version = "0.0.6+dgamelaunch " PACKAGE_VERSION;
 
 /*
  * To compile:
@@ -31,7 +31,7 @@ char *vi_Version = "0.0.2+dgamelaunch " PACKAGE_VERSION;
  *     strip vi
  */
 
-/*
+/* this was in here from busybox, will sort out later FIXME
  * Things To Do:
  *     EXINIT
  *     $HOME/.exrc  and  ./.exrc
@@ -48,6 +48,7 @@ char *vi_Version = "0.0.2+dgamelaunch " PACKAGE_VERSION;
  */
 
 //----  Feature --------------  Bytes to immplement
+#define vi_main                        main
 #define BB_FEATURE_VI_COLON     // 4288
 #define BB_FEATURE_VI_YANKMARK  // 1408
 #define BB_FEATURE_VI_SEARCH    // 1088
@@ -84,12 +85,15 @@ char *vi_Version = "0.0.2+dgamelaunch " PACKAGE_VERSION;
 #include <stdarg.h>
 
 #include "last_char_is.c"
+#include "strlcat.c"
+#include "strlcpy.c"
 
 #ifndef TRUE
 #define TRUE                   ((int)1)
 #define FALSE                  ((int)0)
 #endif /* TRUE */
 #define MAX_SCR_COLS           BUFSIZ
+#define BUFSIZ_STATBUF         200
 
 // Misc. non-Ascii keys that report an escape sequence
 #define VI_K_UP                        128         // cursor key Up
@@ -321,11 +325,10 @@ main (int argc, char **argv)
 #ifdef BB_FEATURE_VI_CRASHME
   (void) srand ((long) getpid ());
 #endif /* BB_FEATURE_VI_CRASHME */
-  status_buffer = (Byte *) malloc (200);  // hold messages to user
+  status_buffer = (Byte *) malloc (BUFSIZ_STATBUF);  // hold messages to user
 #ifdef BB_FEATURE_VI_READONLY
   vi_readonly = readonly = FALSE;
-  if (strncmp (argv[0], "view", 4) == 0)
-    {
+  if (strncmp (argv[0], "view", 4) == 0) {
       readonly = TRUE;
       vi_readonly = TRUE;
     }
@@ -336,8 +339,7 @@ main (int argc, char **argv)
   showmatch = 1;
 #endif /* BB_FEATURE_VI_SETOPTS */
 #ifdef BB_FEATURE_VI_YANKMARK
-  for (i = 0; i < 28; i++)
-    {
+  for (i = 0; i < 28; i++) {
       reg[i] = 0;
     }                           // init the yank regs
 #endif /* BB_FEATURE_VI_YANKMARK */
@@ -366,8 +368,7 @@ main (int argc, char **argv)
   return (0);
 }
 
-static void
-edit_file (Byte * fn)
+static void edit_file (Byte * fn)
 {
   char c;
   int cnt, size, ch;
@@ -393,20 +394,17 @@ edit_file (Byte * fn)
   size = 2 * cnt;               // 200% of file size
   new_text (size);              // get a text[] buffer
   screenbegin = dot = end = text;
-  if (fn != 0)
-    {
+  if (fn != 0) {
       ch = file_insert (fn, text, cnt);
     }
-  if (ch < 1)
-    {
+  if (ch < 1) {
       (void) char_insert (text, '\n');  // start empty buf with dummy line
     }
   file_modified = FALSE;
 #ifdef BB_FEATURE_VI_YANKMARK
   YDreg = 26;                   // default Yank/Delete reg
   Ureg = 27;                    // hold orig line for "U" cmd
-  for (cnt = 0; cnt < 28; cnt++)
-    {
+  for (cnt = 0; cnt < 28; cnt++) {
       mark[cnt] = 0;
     }                           // init the marks
   mark[26] = mark[27] = text;   // init "previous context"
@@ -437,8 +435,7 @@ edit_file (Byte * fn)
   signal (SIGWINCH, winch_sig);
   signal (SIGTSTP, suspend_sig);
   sig = setjmp (restart);
-  if (sig != 0)
-    {
+  if (sig != 0) {
       msg = "";
       if (sig == SIGWINCH)
         msg = "(window resize)";
@@ -478,19 +475,15 @@ edit_file (Byte * fn)
   show_status_line ();
 
   //------This is the main Vi cmd handling loop -----------------------
-  while (editing > 0)
-    {
+  while (editing > 0) {
 #ifdef BB_FEATURE_VI_CRASHME
-      if (crashme > 0)
-        {
-          if ((end - text) > 1)
-            {
+      if (crashme > 0) {
+          if ((end - text) > 1) {
               crash_dummy ();   // generate a random command
-            }
-          else
-            {
+            } else {
               crashme = 0;
-              dot = string_insert (text, (Byte *) "\n\n#####  Ran out of text to work on.  #####\n\n"); // insert the string
+              dot =
+                 string_insert(text, (Byte *) "\n\n#####  Ran out of text to work on.  #####\n\n");    // insert the string
               refresh (FALSE);
             }
         }
@@ -498,8 +491,7 @@ edit_file (Byte * fn)
       last_input_char = c = get_one_char ();  // get a cmd from user
 #ifdef BB_FEATURE_VI_YANKMARK
       // save a copy of the current line- for the 'U" command
-      if (begin_line (dot) != cur_line)
-        {
+      if (begin_line (dot) != cur_line) {
           cur_line = begin_line (dot);
           text_yank (begin_line (dot), end_line (dot), Ureg);
         }
@@ -508,8 +500,7 @@ edit_file (Byte * fn)
       // These are commands that change text[].
       // Remember the input for the "." command
       if (!adding2q && ioq_start == 0
-          && strchr ((char *) modifying_cmds, c) != NULL)
-        {
+          && strchr((char *) modifying_cmds, c) != NULL) {
           start_new_cmd_q (c);
         }
 #endif /* BB_FEATURE_VI_DOT_CMD */
@@ -518,8 +509,7 @@ edit_file (Byte * fn)
       // poll to see if there is input already waiting. if we are
       // not able to display output fast enough to keep up, skip
       // the display update until we catch up with input.
-      if (mysleep (0) == 0)
-        {
+      if (mysleep(0) == 0) {
           // no input pending- so update output
           refresh (FALSE);
           show_status_line ();
@@ -600,8 +590,7 @@ char *multilines[20] = {
 };
 
 // create a random command to execute
-static void
-crash_dummy ()
+static void crash_dummy()
 {
   static int sleeptime;         // how long to pause between commands
   char c, cm, *cmd, *cmd1;
@@ -619,39 +608,26 @@ cd0:
   memset (readbuffer, '\0', BUFSIZ - 1);  // clear the read buffer
   // generate a command by percentages
   percent = (int) lrand48 () % 100; // get a number from 0-99
-  if (percent < Mp)
-    {                           //  Movement commands
+  if (percent < Mp) {  //  Movement commands
       // available commands
       cmd = cmd1;
       M++;
-    }
-  else if (percent < Np)
-    {                           //  non-movement commands
+    } else if (percent < Np) { //  non-movement commands
       cmd = "mz<>\'\"";         // available commands
       N++;
-    }
-  else if (percent < Dp)
-    {                           //  Delete commands
+    } else if (percent < Dp) { //  Delete commands
       cmd = "dx";               // available commands
       D++;
-    }
-  else if (percent < Ip)
-    {                           //  Inset commands
+    } else if (percent < Ip) { //  Inset commands
       cmd = "iIaAsrJ";          // available commands
       I++;
-    }
-  else if (percent < Yp)
-    {                           //  Yank commands
+    } else if (percent < Yp) { //  Yank commands
       cmd = "yY";               // available commands
       Y++;
-    }
-  else if (percent < Pp)
-    {                           //  Put commands
+    } else if (percent < Pp) { //  Put commands
       cmd = "pP";               // available commands
       P++;
-    }
-  else
-    {
+    } else {
       // We do not know how to handle this command, try again
       U++;
       goto cd0;
@@ -666,21 +642,17 @@ cd0:
   // now we have the command-
   // there are 1, 2, and multi char commands
   // find out which and generate the rest of command as necessary
-  if (strchr ("dmryz<>\'\"", cm))
-    {                           // 2-char commands
+  if (strchr ("dmryz<>\'\"", cm)) {    // 2-char commands
       cmd1 = " \n\r0$^-+wWeEbBhjklHL";
-      if (cm == 'm' || cm == '\'' || cm == '\"')
-        {                       // pick a reg[]
+      if (cm == 'm' || cm == '\'' || cm == '\"') {     // pick a reg[]
           cmd1 = "abcdefghijklmnopqrstuvwxyz";
         }
       thing = (int) lrand48 () % strlen (cmd1); // pick a movement command
       c = cmd1[thing];
       readbuffer[rbi++] = c;    // add movement to input buffer
     }
-  if (strchr ("iIaAsc", cm))
-    {                           // multi-char commands
-      if (cm == 'c')
-        {
+  if (strchr ("iIaAsc", cm)) { // multi-char commands
+      if (cm == 'c') {
           // change some thing
           thing = (int) lrand48 () % strlen (cmd1); // pick a movement command
           c = cmd1[thing];
@@ -688,26 +660,18 @@ cd0:
         }
       thing = (int) lrand48 () % 4; // what thing to insert
       cnt = (int) lrand48 () % 10;  // how many to insert
-      for (i = 0; i < cnt; i++)
-        {
-          if (thing == 0)
-            {                   // insert chars
+      for (i = 0; i < cnt; i++) {
+          if (thing == 0) {    // insert chars
               readbuffer[rbi++] = chars[((int) lrand48 () % strlen (chars))];
-            }
-          else if (thing == 1)
-            {                   // insert words
-              strcat ((char *) readbuffer, words[(int) lrand48 () % 20]);
+            } else if (thing == 1) {   // insert words
+             strlcat((char *) readbuffer, words[(int) lrand48() % 20], BUFSIZ); /* FIXED added BUFSIZ and converted to strlcat() */
               strcat ((char *) readbuffer, " ");
               sleeptime = 0;    // how fast to type
-            }
-          else if (thing == 2)
-            {                   // insert lines
-              strcat ((char *) readbuffer, lines[(int) lrand48 () % 20]);
+            } else if (thing == 2) {   // insert lines
+             strlcat((char *) readbuffer, lines[(int) lrand48() % 20], BUFSIZ); /* FIXED added BUFSIZ and converted to strlcat() */
               sleeptime = 0;    // how fast to type
-            }
-          else
-            {                   // insert multi-lines
-              strcat ((char *) readbuffer, multilines[(int) lrand48 () % 20]);
+            } else {   // insert multi-lines
+             strlcat((char *) readbuffer, multilines[(int) lrand48() % 20], BUFSIZ); /* FIXED added BUFSIZ and converted to stlcat() */
               sleeptime = 0;    // how fast to type
             }
         }
@@ -720,55 +684,45 @@ cd1:
 }
 
 // test to see if there are any errors
-static void
-crash_test ()
+static void crash_test()
 {
   static time_t oldtim;
   time_t tim;
   char d[2], buf[BUFSIZ], msg[BUFSIZ];
 
   msg[0] = '\0';
-  if (end < text)
-    {
+  if (end < text) {
       strcat ((char *) msg, "end<text ");
     }
-  if (end > textend)
-    {
+  if (end > textend) {
       strcat ((char *) msg, "end>textend ");
     }
-  if (dot < text)
-    {
+  if (dot < text) {
       strcat ((char *) msg, "dot<text ");
     }
-  if (dot > end)
-    {
+  if (dot > end) {
       strcat ((char *) msg, "dot>end ");
     }
-  if (screenbegin < text)
-    {
+  if (screenbegin < text) {
       strcat ((char *) msg, "screenbegin<text ");
     }
-  if (screenbegin > end - 1)
-    {
+  if (screenbegin > end - 1) {
       strcat ((char *) msg, "screenbegin>end-1 ");
     }
 
-  if (strlen (msg) > 0)
-    {
+  if (strlen (msg) > 0) {
       // alarm(0);
       sprintf (buf, "\n\n%d: \'%c\' %s\n\n\n%s[Hit return to continue]%s",
                totalcmds, last_input_char, msg, SOs, SOn);
       write (1, buf, strlen (buf));
-      while (read (0, d, 1) > 0)
-        {
+      while (read (0, d, 1) > 0) {
           if (d[0] == '\n' || d[0] == '\r')
             break;
         }
       // alarm(3);
     }
   tim = (time_t) time ((time_t *) 0);
-  if (tim >= (oldtim + 3))
-    {
+  if (tim >= (oldtim + 3)) {
       sprintf ((char *) status_buffer,
                "Tot=%d: M=%d N=%d I=%d D=%d Y=%d P=%d U=%d size=%d",
                totalcmds, M, N, I, D, Y, P, U, end - text + 1);
@@ -800,8 +754,7 @@ crash_test ()
 //---------------------------------------------------------------------
 
 //----- Execute a Vi Command -----------------------------------
-static void
-do_cmd (Byte c)
+static void do_cmd(Byte c)
 {
   Byte c1, *p, *q, *msg, buf[9], *save_dot;
   int cnt, i, j, dir, yf;
@@ -810,18 +763,27 @@ do_cmd (Byte c)
   cnt = yf = dir = 0;           // quiet the compiler
   p = q = save_dot = msg = buf; // quiet the compiler
   memset (buf, '\0', 9);        // clear buf
-  if (cmd_mode == 2)
-    {
+
+       /* if this is a cursor key, skip these checks */
+       switch (c) {
+               case VI_K_UP:
+               case VI_K_DOWN:
+               case VI_K_LEFT:
+               case VI_K_RIGHT:
+               case VI_K_HOME:
+               case VI_K_END:
+               case VI_K_PAGEUP:
+               case VI_K_PAGEDOWN:
+                       goto key_cmd_mode;
+       }
+
+       if (cmd_mode == 2) {
       // we are 'R'eplacing the current *dot with new char
-      if (*dot == '\n')
-        {
+      if (*dot == '\n') {
           // don't Replace past E-o-l
           cmd_mode = 1;         // convert to insert
-        }
-      else
-        {
-          if (1 <= c && c <= 127)
-            {                   // only ASCII chars
+        } else {
+          if (1 <= c && c <= 127) {    // only ASCII chars
               if (c != 27)
                 dot = yank_delete (dot, dot, 0, YANKDEL); // delete char
               dot = char_insert (dot, c); // insert new char
@@ -829,21 +791,18 @@ do_cmd (Byte c)
           goto dc1;
         }
     }
-  if (cmd_mode == 1)
-    {
+  if (cmd_mode == 1) {
       //  hitting "Insert" twice means "R" replace mode
-      if (c == VI_K_INSERT)
-        goto dc5;
+      if (c == VI_K_INSERT) goto dc5;
       // insert the char c at "dot"
-      if (1 <= c && c <= 127)
-        {
+      if (1 <= c && c <= 127) {
           dot = char_insert (dot, c); // only ASCII chars
         }
       goto dc1;
     }
 
-  switch (c)
-    {
+key_cmd_mode:
+  switch (c) {
       //case 0x01:    // soh
       //case 0x09:    // ht
       //case 0x0b:    // vt
@@ -857,41 +816,40 @@ do_cmd (Byte c)
       crashme = (crashme == 0) ? 1 : 0;
       break;
 #endif /* BB_FEATURE_VI_CRASHME */
-      /*case 0x16:    // syn
-        case 0x17:    // etb
-        case 0x18:    // can
-        case 0x1c:    // fs
-        case 0x1d:    // gs
-        case 0x1e:    // rs
-        case 0x1f:    // us
-        case '!':     // !- 
-        case '#':     // #- 
-        case '&':     // &- 
-        case '(':     // (- 
-        case ')':     // )- 
-        case '*':     // *- 
-        case ',':     // ,- 
-        case '=':     // =- 
-        case '@':     // @- 
-        case 'F':     // F- 
-        case 'K':     // K- 
-        case 'Q':     // Q- 
-        case 'S':     // S- 
-        case 'T':     // T- 
-        case 'V':     // V- 
-        case '[':     // [- 
-        case '\\':    // \- 
-        case ']':     // ]- 
-        case '_':     // _- 
-        case '`':     // `- 
-        case 'g':     // g- 
-        case 'u':     // u- FIXME- there is no undo
-        case 'v':     // v- */ 
+      //case 0x16:    // syn
+      //case 0x17:    // etb
+      //case 0x18:    // can
+      //case 0x1c:    // fs
+      //case 0x1d:    // gs
+      //case 0x1e:    // rs
+      //case 0x1f:    // us
+      //case '!':     // !- 
+      //case '#':     // #- 
+      //case '&':     // &- 
+      //case '(':     // (- 
+      //case ')':     // )- 
+      //case '*':     // *- 
+      //case ',':     // ,- 
+      //case '=':     // =- 
+      //case '@':     // @- 
+      //case 'F':     // F- 
+      //case 'K':     // K- 
+      //case 'Q':     // Q- 
+      //case 'S':     // S- 
+      //case 'T':     // T- 
+      //case 'V':     // V- 
+      //case '[':     // [- 
+      //case '\\':    // \- 
+      //case ']':     // ]- 
+      //case '_':     // _- 
+      //case '`':     // `- 
+      //case 'g':     // g- 
+      //case 'u':     // u- FIXME- there is no undo
+      //case 'v':     // v- 
     default:                   // unrecognised command
       buf[0] = c;
       buf[1] = '\0';
-      if (c <= ' ')
-        {
+      if (c <= ' ') {
           buf[0] = '^';
           buf[1] = c + '@';
           buf[2] = '\0';
@@ -929,8 +887,7 @@ do_cmd (Byte c)
     case VI_K_LEFT:            // cursor key Left
     case 8:                    // ctrl-H- move left    (This may be ERASE char)
     case 127:                  // DEL- move left   (This may be ERASE char)
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot_left ();
@@ -938,8 +895,7 @@ do_cmd (Byte c)
     case 10:                   // Newline ^J
     case 'j':                  // j- goto next line, same col
     case VI_K_DOWN:            // cursor key Down
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot_next ();              // go to next B-o-l
@@ -955,8 +911,7 @@ do_cmd (Byte c)
       break;
     case 13:                   // Carriage Return ^M
     case '+':                  // +- goto next line
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot_next ();
@@ -978,8 +933,7 @@ do_cmd (Byte c)
     case ' ':                  // move right
     case 'l':                  // move right
     case VI_K_RIGHT:           // Cursor Key Right
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot_right ();
@@ -988,38 +942,29 @@ do_cmd (Byte c)
     case '"':                  // "- name a register to use for Delete/Yank
       c1 = get_one_char ();
       c1 = tolower (c1);
-      if (islower (c1))
-        {
+      if (islower(c1)) {
           YDreg = c1 - 'a';
-        }
-      else
-        {
+        } else {
           indicate_error (c);
         }
       break;
     case '\'':                 // '- goto a specific mark
       c1 = get_one_char ();
       c1 = tolower (c1);
-      if (islower (c1))
-        {
+      if (islower(c1)) {
           c1 = c1 - 'a';
           // get the b-o-l
           q = mark[(int) c1];
-          if (text <= q && q < end)
-            {
+          if (text <= q && q < end) {
               dot = q;
               dot_begin ();     // go to B-o-l
               dot_skip_over_ws ();
             }
-        }
-      else if (c1 == '\'')
-        {                       // goto previous context
+        } else if (c1 == '\'') {       // goto previous context
           dot = swap_context (dot); // swap current and previous context
           dot_begin ();         // go to B-o-l
           dot_skip_over_ws ();
-        }
-      else
-        {
+        } else {
           indicate_error (c);
         }
       break;
@@ -1030,47 +975,35 @@ do_cmd (Byte c)
       // Well..., at least its quick and dirty.
       c1 = get_one_char ();
       c1 = tolower (c1);
-      if (islower (c1))
-        {
+      if (islower(c1)) {
           c1 = c1 - 'a';
           // remember the line
           mark[(int) c1] = dot;
-        }
-      else
-        {
+        } else {
           indicate_error (c);
         }
       break;
     case 'P':                  // P- Put register before
     case 'p':                  // p- put register after
       p = reg[YDreg];
-      if (p == 0)
-        {
+      if (p == 0) {
           psbs ("Nothing in register %c", what_reg ());
           break;
         }
       // are we putting whole lines or strings
-      if (strchr ((char *) p, '\n') != NULL)
-        {
-          if (c == 'P')
-            {
+      if (strchr((char *) p, '\n') != NULL) {
+          if (c == 'P') {
               dot_begin ();     // putting lines- Put above
             }
-          if (c == 'p')
-            {
+          if (c == 'p') {
               // are we putting after very last line?
-              if (end_line (dot) == (end - 1))
-                {
+              if (end_line (dot) == (end - 1)) {
                   dot = end;    // force dot to end of text[]
-                }
-              else
-                {
+                } else {
                   dot_next ();  // next line, then put before
                 }
             }
-        }
-      else
-        {
+        } else {
           if (c == 'p')
             dot_right ();       // move to right, can move to NL
         }
@@ -1078,8 +1011,7 @@ do_cmd (Byte c)
       end_cmd_q ();             // stop adding to q
       break;
     case 'U':                  // U- Undo; replace current line with original version
-      if (reg[Ureg] != 0)
-        {
+      if (reg[Ureg] != 0) {
           p = begin_line (dot);
           q = end_line (dot);
           p = text_hole_delete (p, q);  // delete cur line
@@ -1091,25 +1023,19 @@ do_cmd (Byte c)
 #endif /* BB_FEATURE_VI_YANKMARK */
     case '$':                  // $- goto end of line
     case VI_K_END:             // Cursor Key End
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot = end_line (dot + 1);
       break;
     case '%':                  // %- find matching char of pair () [] {}
-      for (q = dot; q < end && *q != '\n'; q++)
-        {
-          if (strchr ("()[]{}", *q) != NULL)
-            {
+      for (q = dot; q < end && *q != '\n'; q++) {
+          if (strchr("()[]{}", *q) != NULL) {
               // we found half of a pair
               p = find_pair (q, *q);
-              if (p == NULL)
-                {
+              if (p == NULL) {
                   indicate_error (c);
-                }
-              else
-                {
+                } else {
                   dot = p;
                 }
               break;
@@ -1125,23 +1051,19 @@ do_cmd (Byte c)
       //
       //**** fall thru to ... 'i'
     case ';':                  // ;- look at rest of line for last forward char
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (';');
         }                       // repeat cnt
-      if (last_forward_char == 0)
-        break;
+      if (last_forward_char == 0) break;
       q = dot + 1;
-      while (q < end - 1 && *q != '\n' && *q != last_forward_char)
-        {
+      while (q < end - 1 && *q != '\n' && *q != last_forward_char) {
           q++;
         }
       if (*q == last_forward_char)
         dot = q;
       break;
     case '-':                  // -- goto prev line
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dot_prev ();
@@ -1151,8 +1073,7 @@ do_cmd (Byte c)
     case '.':                  // .- repeat the last modifying command
       // Stuff the last_modifying_cmd back into stdin
       // and let it be re-executed.
-      if (last_modifying_cmd != 0)
-        {
+      if (last_modifying_cmd != 0) {
           ioq = ioq_start = (Byte *) strdup ((char *) last_modifying_cmd);
         }
       break;
@@ -1165,11 +1086,9 @@ do_cmd (Byte c)
       q = get_input_line (buf); // get input line- use "status line"
       if (strlen ((char *) q) == 1)
         goto dc3;               // if no pat re-use old pat
-      if (strlen ((char *) q) > 1)
-        {                       // new pat- save it and find
+      if (strlen ((char *) q) > 1) {   // new pat- save it and find
           // there is a new pat
-          if (last_search_pattern != 0)
-            {
+          if (last_search_pattern != 0) {
               free (last_search_pattern);
             }
           last_search_pattern = (Byte *) strdup ((char *) q);
@@ -1179,14 +1098,12 @@ do_cmd (Byte c)
       break;
     case 'N':                  // N- backward search for last pattern
       if (last_search_pattern == 0) break;
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dir = BACK;               // assume BACKWARD search
       p = dot - 1;
-      if (last_search_pattern[0] == '?')
-        {
+      if (last_search_pattern[0] == '?') {
           dir = FORWARD;
           p = dot + 1;
         }
@@ -1195,52 +1112,42 @@ do_cmd (Byte c)
     case 'n':                  // n- repeat search for last pattern
       // search rest of text[] starting at next char
       // if search fails return orignal "p" not the "p+1" address
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
     dc3:
-      if (last_search_pattern == 0)
-        {
+      if (last_search_pattern == 0) {
           msg = (Byte *) "No previous regular expression";
           goto dc2;
         }
-      if (last_search_pattern[0] == '/')
-        {
+      if (last_search_pattern[0] == '/') {
           dir = FORWARD;        // assume FORWARD search
           p = dot + 1;
         }
-      if (last_search_pattern[0] == '?')
-        {
+      if (last_search_pattern[0] == '?') {
           dir = BACK;
           p = dot - 1;
         }
     dc4:
       q = char_search (p, last_search_pattern + 1, dir, FULL);
-      if (q != NULL)
-        {
+      if (q != NULL) {
           dot = q;              // good search, update "dot"
           msg = (Byte *) "";
           goto dc2;
         }
       // no pattern found between "dot" and "end"- continue at top
       p = text;
-      if (dir == BACK)
-        {
+      if (dir == BACK) {
           p = end - 1;
         }
       q = char_search (p, last_search_pattern + 1, dir, FULL);
-      if (q != NULL)
-        {                       // found something
+      if (q != NULL) { // found something
           dot = q;              // found new pattern- goto it
           msg = (Byte *) "search hit BOTTOM, continuing at TOP";
-          if (dir == BACK)
-            {
+          if (dir == BACK) {
               msg = (Byte *) "search hit TOP, continuing at BOTTOM";
             }
-        }
-      else
-        {
+        } else {
           msg = (Byte *) "Pattern not found";
         }
     dc2:
@@ -1248,15 +1155,13 @@ do_cmd (Byte c)
       break;
     case '{':                  // {- move backward paragraph
       q = char_search (dot, (Byte *) "\n\n", BACK, FULL);
-      if (q != NULL)
-        {                       // found blank line
+      if (q != NULL) { // found blank line
           dot = next_line (q);  // move to next blank line
         }
       break;
     case '}':                  // }- move forward paragraph
       q = char_search (dot, (Byte *) "\n\n", FORWARD, FULL);
-      if (q != NULL)
-        {                       // found blank line
+      if (q != NULL) { // found blank line
           dot = next_line (q);  // move to next blank line
         }
       break;
@@ -1271,12 +1176,9 @@ do_cmd (Byte c)
     case '7':                  // 7- 
     case '8':                  // 8- 
     case '9':                  // 9- 
-      if (c == '0' && cmdcnt < 1)
-        {
+      if (c == '0' && cmdcnt < 1) {
           dot_begin ();         // this was a standalone zero
-        }
-      else
-        {
+        } else {
           cmdcnt = cmdcnt * 10 + (c - '0'); // this 0 is part of a number
         }
       break;
@@ -1290,42 +1192,29 @@ do_cmd (Byte c)
       cnt = strlen ((char *) p);
       if (cnt <= 0)
         break;
-      if (strncasecmp ((char *) p, "quit", cnt) == 0 ||
-          strncasecmp ((char *) p, "q!", cnt) == 0)
-        {                       // delete lines
-          if (file_modified == TRUE && p[1] != '!')
-            {
+      if (strncasecmp((char *) p, "quit", cnt) == 0 ||
+          strncasecmp((char *) p, "q!", cnt) == 0) {   // delete lines
+          if (file_modified == TRUE && p[1] != '!') {
               psbs ("No write since last change (:quit! overrides)");
-            }
-          else
-            {
+            } else {
               editing = 0;
             }
-        }
-      else if (strncasecmp ((char *) p, "write", cnt) == 0 ||
-               strncasecmp ((char *) p, "wq", cnt) == 0)
-        {
+      } else if (strncasecmp((char *) p, "write", cnt) == 0 ||
+                strncasecmp((char *) p, "wq", cnt) == 0) {
           cnt = file_write (cfn, text, end - 1);
           file_modified = FALSE;
           psb ("\"%s\" %dL, %dC", cfn, count_lines (text, end - 1), cnt);
-          if (p[1] == 'q')
-            {
+          if (p[1] == 'q') {
               editing = 0;
             }
-        }
-      else if (strncasecmp ((char *) p, "file", cnt) == 0)
-        {
+      } else if (strncasecmp((char *) p, "file", cnt) == 0) {
           edit_status ();       // show current file status
-        }
-      else if (sscanf ((char *) p, "%d", &j) > 0)
-        {
+      } else if (sscanf ((char *) p, "%d", &j) > 0) {
           dot = find_line (j);  // go to line # j
           dot_skip_over_ws ();
-        }
-      else
-        {                       // unrecognised cmd
+      } else { // unrecognised cmd
           ni ((Byte *) p);
-        }
+      }
 #endif /* BB_FEATURE_VI_COLON */
       break;
     case '<':                  // <- Left  shift something
@@ -1337,27 +1226,19 @@ do_cmd (Byte c)
       p = begin_line (p);
       q = end_line (q);
       i = count_lines (p, q);   // # of lines we are shifting
-      for (; i > 0; i--, p = next_line (p))
-        {
-          if (c == '<')
-            {
+      for (; i > 0; i--, p = next_line(p)) {
+          if (c == '<') {
               // shift left- remove tab or 8 spaces
-              if (*p == '\t')
-                {
+              if (*p == '\t') {
                   // shrink buffer 1 char
                   (void) text_hole_delete (p, p);
-                }
-              else if (*p == ' ')
-                {
+                } else if (*p == ' ') {
                   // we should be calculating columns, not just SPACE
-                  for (j = 0; *p == ' ' && j < tabstop; j++)
-                    {
+                  for (j = 0; *p == ' ' && j < tabstop; j++) {
                       (void) text_hole_delete (p, p);
                     }
                 }
-            }
-          else if (c == '>')
-            {
+            } else if (c == '>') {
               // shift right -- add tab or 8 spaces
               (void) char_insert (p, '\t');
             }
@@ -1377,15 +1258,13 @@ do_cmd (Byte c)
     case 'B':                  // B- back a blank-delimited Word
     case 'E':                  // E- end of a blank-delimited word
     case 'W':                  // W- forward a blank-delimited word
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dir = FORWARD;
       if (c == 'B')
         dir = BACK;
-      if (c == 'W' || isspace (dot[dir]))
-        {
+      if (c == 'W' || isspace(dot[dir])) {
           dot = skip_thing (dot, 1, dir, S_TO_WS);
           dot = skip_thing (dot, 2, dir, S_OVER_WS);
         }
@@ -1407,20 +1286,17 @@ do_cmd (Byte c)
       break;
     case 'G':                  // G- goto to a line number (default= E-O-F)
       dot = end - 1;            // assume E-O-F
-      if (cmdcnt > 0)
-        {
+      if (cmdcnt > 0) {
           dot = find_line (cmdcnt); // what line is #cmdcnt
         }
       dot_skip_over_ws ();
       break;
     case 'H':                  // H- goto top line on screen
       dot = screenbegin;
-      if (cmdcnt > (rows - 1))
-        {
+      if (cmdcnt > (rows - 1)) {
           cmdcnt = (rows - 1);
         }
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd ('+');
         }                       // repeat cnt
       dot_skip_over_ws ();
@@ -1436,16 +1312,13 @@ do_cmd (Byte c)
       psb ("-- Insert --");
       break;
     case 'J':                  // J- join current and next lines together
-      if (cmdcnt-- > 2)
-        {
+      if (cmdcnt-- > 2) {
           do_cmd (c);
         }                       // repeat cnt
       dot_end ();               // move to NL
-      if (dot < end - 1)
-        {                       // make sure not last char in text[]
+      if (dot < end - 1) {     // make sure not last char in text[]
           *dot++ = ' ';         // replace NL with space
-          while (isblnk (*dot))
-            {                   // delete leading WS
+          while (isblnk(*dot)) {       // delete leading WS
               dot_delete ();
             }
         }
@@ -1453,12 +1326,10 @@ do_cmd (Byte c)
       break;
     case 'L':                  // L- goto bottom line on screen
       dot = end_screen ();
-      if (cmdcnt > (rows - 1))
-        {
+      if (cmdcnt > (rows - 1)) {
           cmdcnt = (rows - 1);
         }
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd ('-');
         }                       // repeat cnt
       dot_begin ();
@@ -1472,15 +1343,12 @@ do_cmd (Byte c)
     case 'O':                  // O- open a empty line above
       //    0i\n ESC -i
       p = begin_line (dot);
-      if (p[-1] == '\n')
-        {
+      if (p[-1] == '\n') {
           dot_prev ();
     case 'o':                  // o- open a empty line below; Yes, I know it is in the middle of the "if (..."
           dot_end ();
           dot = char_insert (dot, '\n');
-        }
-      else
-        {
+        } else {
           dot_begin ();         // 0
           dot = char_insert (dot, '\n');  // i\n ESC
           dot_prev ();          // -
@@ -1495,15 +1363,13 @@ do_cmd (Byte c)
     case 'X':                  // X- delete char before dot
     case 'x':                  // x- delete the current char
     case 's':                  // s- substitute the current char
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dir = 0;
       if (c == 'X')
         dir = -1;
-      if (dot[dir] != '\n')
-        {
+      if (dot[dir] != '\n') {
           if (c == 'X')
             dot--;              // delete prev char
           dot = yank_delete (dot, dot, 0, YANKDEL); // delete char
@@ -1515,25 +1381,21 @@ do_cmd (Byte c)
     case 'Z':                  // Z- if modified, {write}; exit
       // ZZ means to save file (if necessary), then exit
       c1 = get_one_char ();
-      if (c1 != 'Z')
-        {
+      if (c1 != 'Z') {
           indicate_error (c);
           break;
         }
       if (file_modified == TRUE
 #ifdef BB_FEATURE_VI_READONLY
-          && vi_readonly == FALSE && readonly == FALSE
+          && vi_readonly == FALSE
+         && readonly == FALSE
 #endif /* BB_FEATURE_VI_READONLY */
-        )
-        {
+        ) {
           cnt = file_write (cfn, text, end - 1);
-          if (cnt == (end - 1 - text + 1))
-            {
+          if (cnt == (end - 1 - text + 1)) {
               editing = 0;
             }
-        }
-      else
-        {
+        } else {
           editing = 0;
         }
       break;
@@ -1543,8 +1405,7 @@ do_cmd (Byte c)
       break;
     case 'b':                  // b- back a word
     case 'e':                  // e- end of word
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
         }                       // repeat cnt
       dir = FORWARD;
@@ -1553,18 +1414,14 @@ do_cmd (Byte c)
       if ((dot + dir) < text || (dot + dir) > end - 1)
         break;
       dot += dir;
-      if (isspace (*dot))
-        {
+      if (isspace(*dot)) {
           dot = skip_thing (dot, (c == 'e') ? 2 : 1, dir, S_OVER_WS);
         }
-      if (isalnum (*dot) || *dot == '_')
-        {
+      if (isalnum(*dot) || *dot == '_') {
           dot = skip_thing (dot, 1, dir, S_END_ALNUM);
-        }
-      else if (ispunct (*dot))
-        {
+      } else if (ispunct(*dot)) {
           dot = skip_thing (dot, 1, dir, S_END_PUNCT);
-        }
+      }
       break;
     case 'c':                  // c- change something
     case 'd':                  // d- delete something
@@ -1581,77 +1438,58 @@ do_cmd (Byte c)
       if (c != 'Y')
         c1 = get_one_char ();   // get the type of thing to delete
       find_range (&p, &q, c1);
-      if (c1 == 27)
-        {                       // ESC- user changed mind and wants out
+      if (c1 == 27) {  // ESC- user changed mind and wants out
           c = c1 = 27;          // Escape- do nothing
-        }
-      else if (strchr ("wW", c1))
-        {
-          if (c == 'c')
-            {
+      } else if (strchr("wW", c1)) {
+          if (c == 'c') {
               // don't include trailing WS as part of word
-              while (isblnk (*q))
-                {
+              while (isblnk(*q)) {
                   if (q <= text || q[-1] == '\n')
                     break;
                   q--;
                 }
             }
           dot = yank_delete (p, q, 0, yf);  // delete word
-        }
-      else if (strchr ("^0bBeEft$", c1))
-        {
+      } else if (strchr("^0bBeEft$", c1)) {
           // single line copy text into a register and delete
           dot = yank_delete (p, q, 0, yf);  // delete word
-        }
-      else if (strchr ("cdykjHL%+-{}\r\n", c1))
-        {
+      } else if (strchr("cdykjHL%+-{}\r\n", c1)) {
           // multiple line copy text into a register and delete
           dot = yank_delete (p, q, 1, yf);  // delete lines
-          if (c == 'c')
-            {
+          if (c == 'c') {
               dot = char_insert (dot, '\n');
               // on the last line of file don't move to prev line
-              if (dot != (end - 1))
-                {
+              if (dot != (end - 1)) {
                   dot_prev ();
                 }
-            }
-          else if (c == 'd')
-            {
+         } else if (c == 'd') {
               dot_begin ();
               dot_skip_over_ws ();
-            }
-        }
-      else
-        {
-          c = c1 = 27;
+         }
+      } else {
+         // could not recognize object
+          c = c1 = 27; // error-
           indicate_error (c);
-        }
-      if (c1 != 27)
-        {
+      }
+      if (c1 != 27) {
           // if CHANGING, not deleting, start inserting after the delete
-          if (c == 'c')
-            {
+          if (c == 'c') {
               strcpy ((char *) buf, "Change");
               goto dc_i;        // start inserting
-            }
-          if (c == 'd')
-            {
+         }
+          if (c == 'd') {
               strcpy ((char *) buf, "Delete");
-            }
+         }
 #ifdef BB_FEATURE_VI_YANKMARK
-          if (c == 'y' || c == 'Y')
-            {
+          if (c == 'y' || c == 'Y') {
               strcpy ((char *) buf, "Yank");
-            }
+         }
           p = reg[YDreg];
           q = p + strlen ((char *) p);
-          for (cnt = 0; p <= q; p++)
-            {
+          for (cnt = 0; p <= q; p++) {
               if (*p == '\n')
                 cnt++;
-            }
+         }
           psb ("%s %d lines (%d chars) using [%c]",
                buf, cnt, strlen ((char *) reg[YDreg]), what_reg ());
 #endif /* BB_FEATURE_VI_YANKMARK */
@@ -1660,20 +1498,18 @@ do_cmd (Byte c)
       break;
     case 'k':                  // k- goto prev line, same col
     case VI_K_UP:              // cursor key Up
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
-        }                       // repeat cnt
+      }                       // repeat cnt
       dot_prev ();
       dot = move_to_col (dot, ccol + offset); // try stay in same col
       break;
     case 'r':                  // r- replace the current char with user input
       c1 = get_one_char ();     // get the replacement char
-      if (*dot != '\n')
-        {
+      if (*dot != '\n') {
           *dot = c1;
           file_modified = TRUE; // has the file been modified
-        }
+      }
       end_cmd_q ();             // stop adding to q
       break;
     case 't':                  // t- move to char prior to next x
@@ -1684,24 +1520,19 @@ do_cmd (Byte c)
       last_forward_char = 0;
       break;
     case 'w':                  // w- forward a word
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
-        }                       // repeat cnt
-      if (isalnum (*dot) || *dot == '_')
-        {                       // we are on ALNUM
+      }                       // repeat cnt
+      if (isalnum(*dot) || *dot == '_') {      // we are on ALNUM
           dot = skip_thing (dot, 1, FORWARD, S_END_ALNUM);
-        }
-      else if (ispunct (*dot))
-        {                       // we are on PUNCT
+      } else if (ispunct(*dot)) {      // we are on PUNCT
           dot = skip_thing (dot, 1, FORWARD, S_END_PUNCT);
-        }
+      }
       if (dot < end - 1)
         dot++;                  // move over word
-      if (isspace (*dot))
-        {
+      if (isspace(*dot)) {
           dot = skip_thing (dot, 2, FORWARD, S_OVER_WS);
-        }
+      }
       break;
     case 'z':                  // z-
       c1 = get_one_char ();     // get the replacement char
@@ -1717,20 +1548,16 @@ do_cmd (Byte c)
       dot = move_to_col (dot, cmdcnt - 1);  // try to move to column
       break;
     case '~':                  // ~- flip the case of letters   a-z -> A-Z
-      if (cmdcnt-- > 1)
-        {
+      if (cmdcnt-- > 1) {
           do_cmd (c);
-        }                       // repeat cnt
-      if (islower (*dot))
-        {
+      }                       // repeat cnt
+      if (islower(*dot)) {
           *dot = toupper (*dot);
           file_modified = TRUE; // has the file been modified
-        }
-      else if (isupper (*dot))
-        {
+      } else if (isupper(*dot)) {
           *dot = tolower (*dot);
           file_modified = TRUE; // has the file been modified
-        }
+      }
       dot_right ();
       end_cmd_q ();             // stop adding to q
       break;
@@ -1756,16 +1583,14 @@ do_cmd (Byte c)
 
 dc1:
   // if text[] just became empty, add back an empty line
-  if (end == text)
-    {
+  if (end == text) {
       (void) char_insert (text, '\n');  // start empty buf with dummy line
       dot = text;
-    }
+  }
   // it is OK for dot to exactly equal to end, otherwise check dot validity
-  if (dot != end)
-    {
+  if (dot != end) {
       dot = bound_dot (dot);    // make sure "dot" is valid
-    }
+  }
 #ifdef BB_FEATURE_VI_YANKMARK
   check_context (c);            // update the current context
 #endif /* BB_FEATURE_VI_YANKMARK */
@@ -1780,8 +1605,7 @@ dc1:
 
 //----- The Colon commands -------------------------------------
 #ifdef BB_FEATURE_VI_COLON
-static Byte *
-get_one_address (Byte * p, int *addr) // get colon addr, if present
+static Byte *get_one_address(Byte * p, int *addr)      // get colon addr, if present
 {
   int st;
   Byte *q;
@@ -1794,104 +1618,85 @@ get_one_address (Byte * p, int *addr) // get colon addr, if present
 #endif /* BB_FEATURE_VI_SEARCH */
 
   *addr = -1;                   // assume no addr
-  if (*p == '.')
-    {                           // the current line
+  if (*p == '.') {     // the current line
       p++;
       q = begin_line (dot);
       *addr = count_lines (text, q);
 #ifdef BB_FEATURE_VI_YANKMARK
-    }
-  else if (*p == '\'')
-    {                           // is this a mark addr
+  } else if (*p == '\'') {     // is this a mark addr
       p++;
       c = tolower (*p);
       p++;
-      if (c >= 'a' && c <= 'z')
-        {
+      if (c >= 'a' && c <= 'z') {
           // we have a mark
           c = c - 'a';
           q = mark[(int) c];
-          if (q != NULL)
-            {                   // is mark valid
+          if (q != NULL) {     // is mark valid
               *addr = count_lines (text, q);  // count lines
-            }
-        }
+         }
+      }
 #endif /* BB_FEATURE_VI_YANKMARK */
 #ifdef BB_FEATURE_VI_SEARCH
-    }
-  else if (*p == '/')
-    {                           // a search pattern
+  } else if (*p == '/') {      // a search pattern
       q = buf;
-      for (p++; *p; p++)
-        {
+      for (p++; *p; p++) {
           if (*p == '/')
             break;
           *q++ = *p;
           *q = '\0';
-        }
+      }
       pat = (Byte *) strdup ((char *) buf); // save copy of pattern
       if (*p == '/')
         p++;
       q = char_search (dot, pat, FORWARD, FULL);
-      if (q != NULL)
-        {
+      if (q != NULL) {
           *addr = count_lines (text, q);
-        }
+      }
       free (pat);
 #endif /* BB_FEATURE_VI_SEARCH */
-    }
-  else if (*p == '$')
-    {                           // the last line in file
+  } else if (*p == '$') {      // the last line in file
       p++;
       q = begin_line (end - 1);
       *addr = count_lines (text, q);
-    }
-  else if (isdigit (*p))
-    {                           // specific line number
+  } else if (isdigit(*p)) {    // specific line number
       sscanf ((char *) p, "%d%n", addr, &st);
       p += st;
-    }
-  else
-    {                           // I don't reconise this
+  } else {     // I don't reconise this
       // unrecognised address- assume -1
       *addr = -1;
-    }
+  }
   return (p);
 }
 
-static Byte *
-get_address (Byte * p, int *b, int *e)  // get two colon addrs, if present
+static Byte *get_address(Byte * p, int *b, int *e)     // get two colon addrs, if present
 {
   //----- get the address' i.e., 1,3   'a,'b  -----
   // get FIRST addr, if present
   while (isblnk (*p))
     p++;                        // skip over leading spaces
-  if (*p == '%')
-    {                           // alias for 1,$
+  if (*p == '%') {     // alias for 1,$
       p++;
       *b = 1;
       *e = count_lines (text, end - 1);
       goto ga0;
-    }
+  }
   p = get_one_address (p, b);
   while (isblnk (*p))
     p++;
-  if (*p == ',')
-    {                           // is there a address seperator
+  if (*p == ',') {     // is there a address seperator
       p++;
       while (isblnk (*p))
         p++;
       // get SECOND addr, if present
       p = get_one_address (p, e);
-    }
+  }
 ga0:
   while (isblnk (*p))
     p++;                        // skip over trailing spaces
   return (p);
 }
 
-static void
-colon (Byte * buf)
+static void colon(Byte * buf)
 {
   Byte c, *orig_buf, *buf1, *q, *r;
   Byte *fn, cmd[BUFSIZ], args[BUFSIZ];
@@ -1899,20 +1704,20 @@ colon (Byte * buf)
   int useforce, forced;
   struct stat st_buf;
 
-  /* :3154        // if (-e line 3154) goto it  else stay put
-     :4,33w! foo  // write a portion of buffer to file "foo"
-     :w           // write all of buffer to current file
-     :q           // quit
-     :q!          // quit- dont care about modified file
-     :'a,'z!sort -u   // filter block through sort
-     :'f          // goto mark "f"
-     :'fl         // list literal the mark "f" line
-     :.r bar      // read file "bar" into buffer before dot
-     :/123/,/abc/d    // delete lines from "123" line to "abc" line
-     :/xyz/       // goto the "xyz" line
-     :s/find/replace/ // substitute pattern "find" with "replace"
-     :!<cmd>      // run <cmd> then return
-  */
+  // :3154        // if (-e line 3154) goto it  else stay put
+  // :4,33w! foo  // write a portion of buffer to file "foo"
+  // :w           // write all of buffer to current file
+  // :q           // quit
+  // :q!          // quit- dont care about modified file
+  // :'a,'z!sort -u   // filter block through sort
+  // :'f          // goto mark "f"
+  // :'fl         // list literal the mark "f" line
+  // :.r bar      // read file "bar" into buffer before dot
+  // :/123/,/abc/d    // delete lines from "123" line to "abc" line
+  // :/xyz/       // goto the "xyz" line
+  // :s/find/replace/ // substitute pattern "find" with "replace"
+  // :!<cmd>      // run <cmd> then return
+  //
   if (strlen ((char *) buf) <= 0)
     goto vc1;
   if (*buf == ':')
@@ -1936,24 +1741,22 @@ colon (Byte * buf)
 
   // get the COMMAND into cmd[]
   buf1 = cmd;
-  while (*buf != '\0')
-    {
+  while (*buf != '\0') {
       if (isspace (*buf))
         break;
       *buf1++ = *buf++;
-    }
+  }
   // get any ARGuments
   while (isblnk (*buf))
     buf++;
-  strcpy ((char *) args, (char *) buf);
-  buf1 = last_char_is ((char *) cmd, '!');
-  if (buf1)
-    {
+  /* FIXED strcpy((char *) args, (char *) buf); */
+  if (strlcpy((char *) args, (char *) buf, sizeof((char *)args)) > sizeof((char *)args)) err(1, "strlcpy overflow in function colon");
+  buf1 = (Byte *)last_char_is((char *)cmd, '!');
+  if (buf1) {
       useforce = TRUE;
       *buf1 = '\0';             // get rid of !
-    }
-  if (b >= 0)
-    {
+  }
+  if (b >= 0) {
       // if there is only one addr, then the addr
       // is the line number of the single line the
       // user wants. So, reset the end
@@ -1961,108 +1764,84 @@ colon (Byte * buf)
       q = find_line (b);        // what line is #b
       r = end_line (q);
       li = 1;
-    }
-  if (e >= 0)
-    {
+  }
+  if (e >= 0) {
       // we were given two addrs.  change the
       // end pointer to the addr given by user.
       r = find_line (e);        // what line is #e
       r = end_line (r);
       li = e - b + 1;
-    }
+  }
   // ------------ now look for the command ------------
   i = strlen ((char *) cmd);
-  if (i == 0)
-    {                           // :123CR goto line #123
-      if (b >= 0)
-        {
+  if (i == 0) {                // :123CR goto line #123
+      if (b >= 0) {
           dot = find_line (b);  // what line is #b
           dot_skip_over_ws ();
-        }
-    }
-  else if (0)
-    {
+      }
+  } else if (0) {
       // } else if (strncmp((char *) cmd, "!", 1) == 0) {     // run a cmd
       // :!ls   run the <cmd>
-      // (void) alarm(0);             // wait for input- no alarms
+      (void) alarm(0);             // wait for input- no alarms
       place_cursor (rows - 1, 0, FALSE);  // go to Status line
       clear_to_eol ();          // clear the line
       cookmode ();
-      system (orig_buf + 1);    // run the cmd
+      system((char *)orig_buf+1);    // run the cmd
       rawmode ();
       Hit_Return ();            // let user see results
-      // (void) alarm(3);             // done waiting for input
-    }
-  else if (strncmp ((char *) cmd, "=", i) == 0)
-    {                           // where is the address
-      if (b < 0)
-        {                       // no addr given- use defaults
+      (void) alarm(3);             // done waiting for input
+  } else if (strncmp((char *) cmd, "=", i) == 0) {     // where is the address
+      if (b < 0) {     // no addr given- use defaults
           b = e = count_lines (text, dot);
-        }
+      }
       psb ("%d", b);
-    }
-  else if (strncasecmp ((char *) cmd, "delete", i) == 0)
-    {                           // delete lines
-      if (b < 0)
-        {                       // no addr given- use defaults
+  } else if (strncasecmp((char *) cmd, "delete", i) == 0) {    // delete lines
+      if (b < 0) {     // no addr given- use defaults
           q = begin_line (dot); // assume .,. for the range
           r = end_line (dot);
-        }
+      }
       dot = yank_delete (q, r, 1, YANKDEL); // save, then delete lines
       dot_skip_over_ws ();
-    }
-  else if (0)
-    {
+  } else if (0) {
       // } else if (strncasecmp((char *) cmd, "edit", i) == 0) {      // Edit a file
       int sr;
       sr = 0;
       // don't edit, if the current file has been modified
-      if (file_modified == TRUE && useforce != TRUE)
-        {
+      if (file_modified == TRUE && useforce != TRUE) {
           psbs ("No write since last change (:edit! overrides)");
           goto vc1;
-        }
-      if (strlen (args) > 0)
-        {
+      }
+      if (strlen((char *)args) > 0) {
           // the user supplied a file name
           fn = args;
-        }
-      else if (cfn != 0 && strlen (cfn) > 0)
-        {
+      } else if (cfn != 0 && strlen((char *)cfn) > 0) {
           // no user supplied name- use the current filename
           fn = cfn;
           goto vc5;
-        }
-      else
-        {
+      } else {
           // no user file name, no current name- punt
           psbs ("No current filename");
           goto vc1;
-        }
+      }
 
       // see if file exists- if not, its just a new file request
-      if ((sr = stat ((char *) fn, &st_buf)) < 0)
-        {
+      if ((sr = stat((char *) fn, &st_buf)) < 0) {
           // This is just a request for a new file creation.
           // The file_insert below will fail but we get
           // an empty buffer with a file name.  Then the "write"
           // command can do the create.
-        }
-      else
-        {
-          if ((st_buf.st_mode & (S_IFREG)) == 0)
-            {
+      } else {
+          if ((st_buf.st_mode & (S_IFREG)) == 0) {
               // This is not a regular file
               psbs ("\"%s\" is not a regular file", fn);
               goto vc1;
-            }
-          if ((st_buf.st_mode & (S_IRUSR | S_IRGRP | S_IROTH)) == 0)
-            {
+         }
+          if ((st_buf.st_mode & (S_IRUSR | S_IRGRP | S_IROTH)) == 0) {
               // dont have any read permissions
               psbs ("\"%s\" is not readable", fn);
               goto vc1;
-            }
-        }
+         }
+      }
 
       // There is a read-able regular file
       // make this the current file
@@ -2079,28 +1858,24 @@ colon (Byte * buf)
       // insert new file
       ch = file_insert (fn, text, file_size (fn));
 
-      if (ch < 1)
-        {
+      if (ch < 1) {
           // start empty buf with dummy line
           (void) char_insert (text, '\n');
           ch = 1;
-        }
+      }
       file_modified = FALSE;
 #ifdef BB_FEATURE_VI_YANKMARK
-      if (Ureg >= 0 && Ureg < 28 && reg[Ureg] != 0)
-        {
+      if (Ureg >= 0 && Ureg < 28 && reg[Ureg] != 0) {
           free (reg[Ureg]);     //   free orig line reg- for 'U'
           reg[Ureg] = 0;
-        }
-      if (YDreg >= 0 && YDreg < 28 && reg[YDreg] != 0)
-        {
+      }
+      if (YDreg >= 0 && YDreg < 28 && reg[YDreg] != 0) {
           free (reg[YDreg]);    //   free default yank/delete register
           reg[YDreg] = 0;
-        }
-      for (li = 0; li < 28; li++)
-        {
+      }
+      for (li = 0; li < 28; li++) {
           mark[li] = 0;
-        }                       // init the marks
+      }                                // init the marks
 #endif /* BB_FEATURE_VI_YANKMARK */
       // how many lines in text[]?
       li = count_lines (text, end - 1);
@@ -2108,35 +1883,29 @@ colon (Byte * buf)
 #ifdef BB_FEATURE_VI_READONLY
            "%s"
 #endif /* BB_FEATURE_VI_READONLY */
-           " %dL, %dC", cfn, (sr < 0 ? " [New file]" : ""),
+           " %dL, %dC", cfn,
+          (sr < 0 ? " [New file]" : ""),
 #ifdef BB_FEATURE_VI_READONLY
            ((vi_readonly == TRUE || readonly == TRUE) ? " [Read only]" : ""),
 #endif /* BB_FEATURE_VI_READONLY */
            li, ch);
     }
-  else if (0)
-    {
+  else if (0) {
       // } else if (strncasecmp((char *) cmd, "file", i) == 0) {      // what File is this
-      if (b != -1 || e != -1)
-        {
+      if (b != -1 || e != -1) {
           ni ((Byte *) "No address allowed on this command");
           goto vc1;
-        }
-      if (strlen ((char *) args) > 0)
-        {
+      }
+      if (strlen ((char *) args) > 0) {
           // user wants a new filename
           if (cfn != NULL)
             free (cfn);
           cfn = (Byte *) strdup ((char *) args);
-        }
-      else
-        {
+      } else {
           // user wants file status info
           edit_status ();
-        }
-    }
-  else if (strncasecmp ((char *) cmd, "features", i) == 0)
-    {                           // what features are available
+      }
+  } else if (strncasecmp ((char *) cmd, "features", i) == 0) { // what features are available
       // print out values of all features
       place_cursor (rows - 1, 0, FALSE);  // go to Status line, bottom of screen
       clear_to_eol ();          // clear the line
@@ -2144,60 +1913,48 @@ colon (Byte * buf)
       show_help ();
       rawmode ();
       Hit_Return ();
-    }
-  else if (strncasecmp ((char *) cmd, "list", i) == 0)
-    {                           // literal print line
-      if (b < 0)
-        {                       // no addr given- use defaults
+  } else if (strncasecmp ((char *) cmd, "list", i) == 0) {     // literal print line
+      if (b < 0) {     // no addr given- use defaults
           q = begin_line (dot); // assume .,. for the range
           r = end_line (dot);
-        }
+      }
       place_cursor (rows - 1, 0, FALSE);  // go to Status line, bottom of screen
       clear_to_eol ();          // clear the line
       write (1, "\r\n", 2);
-      for (; q <= r; q++)
-        {
+      for (; q <= r; q++) {
           c = *q;
           if (c > '~')
             standout_start ();
-          if (c == '\n')
-            {
+          if (c == '\n') {
               write (1, "$\r", 2);
-            }
-          else if (*q < ' ')
-            {
+         } else if (*q < ' ') {
               write (1, "^", 1);
               c += '@';
-            }
+         }
           write (1, &c, 1);
           if (c > '~')
             standout_end ();
-        }
+      }
 #ifdef BB_FEATURE_VI_SET
     vc2:
 #endif /* BB_FEATURE_VI_SET */
       Hit_Return ();
-    }
-  else if ((strncasecmp ((char *) cmd, "quit", i) == 0) ||  // Quit
-           (strncasecmp ((char *) cmd, "next", i) == 0))
-    {                           // edit next file
-      if (useforce == TRUE)
-        {
+    } else if ((strncasecmp ((char *) cmd, "quit", i) == 0) || // Quit
+           (strncasecmp ((char *) cmd, "next", i) == 0)) {     // edit next file
+      if (useforce == TRUE) {
           // force end of argv list
-          if (*cmd == 'q')
-            {
+          if (*cmd == 'q') {
               optind = save_argc;
-            }
+         }
           editing = 0;
           goto vc1;
-        }
+      }
       // don't exit if the file been modified
-      if (file_modified == TRUE)
-        {
+      if (file_modified == TRUE) {
           psbs ("No write since last change (:%s! overrides)",
                 (*cmd == 'q' ? "quit" : "next"));
           goto vc1;
-        }
+      }
       // are there other file to edit
       /* if (*cmd == 'q' && optind < save_argc - 1) {
          psbs("%d more file to edit", (save_argc - optind - 1));
@@ -2208,20 +1965,16 @@ colon (Byte * buf)
          goto vc1;
          } */
       editing = 0;
-    }
-  else if (0)
-    {
+  } else if (0) {
       // } else if (strncasecmp((char *) cmd, "read", i) == 0) {      // read file into text[]
       fn = args;
-      if (strlen ((char *) fn) <= 0)
-        {
+      if (strlen ((char *) fn) <= 0) {
           psbs ("No filename given");
           goto vc1;
-        }
-      if (b < 0)
-        {                       // no addr given- use defaults
+      }
+      if (b < 0) {     // no addr given- use defaults
           q = begin_line (dot); // assume "dot"
-        }
+      }
       // read after current line- unless user said ":0r foo"
       if (b != 0)
         q = next_line (q);
@@ -2245,33 +1998,24 @@ colon (Byte * buf)
            ((vi_readonly == TRUE || readonly == TRUE) ? " [Read only]" : ""),
 #endif /* BB_FEATURE_VI_READONLY */
            li, ch);
-      if (ch > 0)
-        {
+      if (ch > 0) {
           // if the insert is before "dot" then we need to update
           if (q <= dot)
             dot += ch;
           file_modified = TRUE;
-        }
-    }
-  else if (strncasecmp ((char *) cmd, "rewind", i) == 0)
-    {                           // rewind cmd line args
-      if (file_modified == TRUE && useforce != TRUE)
-        {
+      }
+  } else if (strncasecmp ((char *) cmd, "rewind", i) == 0) {   // rewind cmd line args
+      if (file_modified == TRUE && useforce != TRUE) {
           psbs ("No write since last change (:rewind! overrides)");
-        }
-      else
-        {
+      } else {
           // reset the filenames to edit
           optind = fn_start - 1;
           editing = 0;
-        }
+      }
 #ifdef BB_FEATURE_VI_SET
-    }
-  else if (strncasecmp ((char *) cmd, "set", i) == 0)
-    {                           // set or clear features
+  } else if (strncasecmp ((char *) cmd, "set", i) == 0) {      // set or clear features
       i = 0;                    // offset into args
-      if (strlen ((char *) args) == 0)
-        {
+      if (strlen ((char *) args) == 0) {
           // print out values of all options
           place_cursor (rows - 1, 0, FALSE);  // go to Status line, bottom of screen
           clear_to_eol ();      // clear the line
@@ -2298,37 +2042,30 @@ colon (Byte * buf)
         i = 2;                  // ":set noautoindent"
 #ifdef BB_FEATURE_VI_SETOPTS
       if (strncasecmp ((char *) args + i, "autoindent", 10) == 0 ||
-          strncasecmp ((char *) args + i, "ai", 2) == 0)
-        {
+          strncasecmp ((char *) args + i, "ai", 2) == 0) {
           autoindent = (i == 2) ? 0 : 1;
-        }
+      }
       if (strncasecmp ((char *) args + i, "flash", 5) == 0 ||
-          strncasecmp ((char *) args + i, "fl", 2) == 0)
-        {
+          strncasecmp ((char *) args + i, "fl", 2) == 0) {
           err_method = (i == 2) ? 0 : 1;
-        }
+      }
       if (strncasecmp ((char *) args + i, "ignorecase", 10) == 0 ||
-          strncasecmp ((char *) args + i, "ic", 2) == 0)
-        {
+          strncasecmp ((char *) args + i, "ic", 2) == 0) {
           ignorecase = (i == 2) ? 0 : 1;
-        }
+      }
       if (strncasecmp ((char *) args + i, "showmatch", 9) == 0 ||
-          strncasecmp ((char *) args + i, "sm", 2) == 0)
-        {
+          strncasecmp ((char *) args + i, "sm", 2) == 0) {
           showmatch = (i == 2) ? 0 : 1;
-        }
-      if (strncasecmp ((char *) args + i, "tabstop", 7) == 0)
-        {
+      }
+      if (strncasecmp ((char *) args + i, "tabstop", 7) == 0) {
           sscanf (strchr ((char *) args + i, '='), "=%d", &ch);
           if (ch > 0 && ch < columns - 1)
             tabstop = ch;
-        }
+      }
 #endif /* BB_FEATURE_VI_SETOPTS */
 #endif /* BB_FEATURE_VI_SET */
 #ifdef BB_FEATURE_VI_SEARCH
-    }
-  else if (strncasecmp ((char *) cmd, "s", 1) == 0)
-    {                           // substitute a pattern with a replacement pattern
+  } else if (strncasecmp ((char *) cmd, "s", 1) == 0) {        // substitute a pattern with a replacement pattern
       Byte *ls, *F, *R;
       int gflag;
 
@@ -2339,118 +2076,97 @@ colon (Byte * buf)
       c = orig_buf[1];          // what is the delimiter
       F = orig_buf + 2;         // start of "find"
       R = (Byte *) strchr ((char *) F, c);  // middle delimiter
-      if (!R)
-        goto colon_s_fail;
+      if (!R) goto colon_s_fail;
       *R++ = '\0';              // terminate "find"
       buf1 = (Byte *) strchr ((char *) R, c);
-      if (!buf1)
-        goto colon_s_fail;
+      if (!buf1) goto colon_s_fail;
       *buf1++ = '\0';           // terminate "replace"
-      if (*buf1 == 'g')
-        {                       // :s/foo/bar/g
+      if (*buf1 == 'g') {      // :s/foo/bar/g
           buf1++;
           gflag++;              // turn on gflag
-        }
+      }
       q = begin_line (q);
-      if (b < 0)
-        {                       // maybe :s/foo/bar/
+      if (b < 0) {             // maybe :s/foo/bar/
           q = begin_line (dot); // start with cur line
           b = count_lines (text, q);  // cur line number
-        }
+      }
       if (e < 0)
         e = b;                  // maybe :.s/foo/bar/
-      for (i = b; i <= e; i++)
-        {                       // so, :20,23 s \0 find \0 replace \0
+      for (i = b; i <= e; i++) {       // so, :20,23 s \0 find \0 replace \0
           ls = q;               // orig line start
         vc4:
           buf1 = char_search (q, F, FORWARD, LIMITED);  // search cur line only for "find"
-          if (buf1 != NULL)
-            {
+          if (buf1 != NULL) {
               // we found the "find" pattern- delete it
               (void) text_hole_delete (buf1, buf1 + strlen ((char *) F) - 1);
               // inset the "replace" patern
               (void) string_insert (buf1, R); // insert the string
               // check for "global"  :s/foo/bar/g
-              if (gflag == 1)
-                {
-                  if ((buf1 + strlen ((char *) R)) < end_line (ls))
-                    {
+              if (gflag == 1) {
+                  if ((buf1 + strlen ((char *) R)) < end_line(ls)) {
                       q = buf1 + strlen ((char *) R);
                       goto vc4; // don't let q move past cur line
-                    }
-                }
-            }
+                 }
+             }
+         }
           q = next_line (ls);
-        }
+      }
 #endif /* BB_FEATURE_VI_SEARCH */
-    }
-  else if (strncasecmp ((char *) cmd, "version", i) == 0)
-    {                           // show software version
+  } else if (strncasecmp ((char *) cmd, "version", i) == 0) {  // show software version
       psb ("%s", vi_Version);
-    }
-  else if ((strncasecmp ((char *) cmd, "write", i) == 0) || // write text to file
-           (strncasecmp ((char *) cmd, "wq", i) == 0))
-    {                           // write text to file
+  } else if ((strncasecmp ((char *) cmd, "write", i) == 0) || // write text to file
+           (strncasecmp ((char *) cmd, "wq", i) == 0)) {       // write text to file
       // is there a file name to write to?
       /* if (strlen((char *) args) > 0) {
          fn = args;
          } */
 #ifdef BB_FEATURE_VI_READONLY
-      if ((vi_readonly == TRUE || readonly == TRUE) && useforce == FALSE)
-        {
+      if ((vi_readonly == TRUE || readonly == TRUE) && useforce == FALSE) {
           psbs ("\"%s\" File is read only", fn);
           goto vc3;
-        }
+      }
 #endif /* BB_FEATURE_VI_READONLY */
       // how many lines in text[]?
       li = count_lines (q, r);
       ch = r - q + 1;
       // see if file exists- if not, its just a new file request
-      if (useforce == TRUE)
-        {
+      if (useforce == TRUE) {
           // if "fn" is not write-able, chmod u+w
           // sprintf(syscmd, "chmod u+w %s", fn);
           // system(syscmd);
           forced = TRUE;
-        }
+      }
       l = file_write (fn, q, r);
-      if (useforce == TRUE && forced == TRUE)
-        {
+      if (useforce == TRUE && forced == TRUE) {
           // chmod u-w
           // sprintf(syscmd, "chmod u-w %s", fn);
           // system(syscmd);
           forced = FALSE;
-        }
+      }
       psb ("\"%s\" %dL, %dC", fn, li, l);
       if (q == text && r == end - 1 && l == ch)
         file_modified = FALSE;
-      if (cmd[1] == 'q' && l == ch)
-        {
+      if (cmd[1] == 'q' && l == ch) {
           editing = 0;
-        }
+      }
 #ifdef BB_FEATURE_VI_READONLY
     vc3:;
 #endif /* BB_FEATURE_VI_READONLY */
 #ifdef BB_FEATURE_VI_YANKMARK
-    }
-  else if (strncasecmp ((char *) cmd, "yank", i) == 0)
-    {                           // yank lines
-      if (b < 0)
-        {                       // no addr given- use defaults
+  } else if (strncasecmp ((char *) cmd, "yank", i) == 0) {     // yank lines
+      if (b < 0) {     // no addr given- use defaults
           q = begin_line (dot); // assume .,. for the range
           r = end_line (dot);
-        }
+      }
       text_yank (q, r, YDreg);
       li = count_lines (q, r);
       psb ("Yank %d lines (%d chars) into [%c]",
            li, strlen ((char *) reg[YDreg]), what_reg ());
 #endif /* BB_FEATURE_VI_YANKMARK */
-    }
-  else
-    {
+  } else {
       // cmd unknown
       ni ((Byte *) cmd);
-    }
+  }
 vc1:
   dot = bound_dot (dot);        // make sure "dot" is valid
   return;
@@ -2462,8 +2178,7 @@ colon_s_fail:
 
 }
 
-static void
-Hit_Return (void)
+static void Hit_Return(void)
 {
   char c;
 
@@ -2477,8 +2192,7 @@ Hit_Return (void)
 #endif /* BB_FEATURE_VI_COLON */
 
 //----- Synchronize the cursor to Dot --------------------------
-static void
-sync_cursor (Byte * d, int *row, int *col)
+static void sync_cursor(Byte * d, int *row, int *col)
 {
   Byte *beg_cur, *end_cur;      // begin and end of "d" line
   Byte *beg_scr, *end_scr;      // begin and end of screen
@@ -2491,42 +2205,35 @@ sync_cursor (Byte * d, int *row, int *col)
   beg_scr = end_scr = screenbegin;  // first char of screen
   end_scr = end_screen ();      // last char of screen
 
-  if (beg_cur < screenbegin)
-    {
+  if (beg_cur < screenbegin) {
       // "d" is before  top line on screen
       // how many lines do we have to move
       cnt = count_lines (beg_cur, screenbegin);
     sc1:
       screenbegin = beg_cur;
-      if (cnt > (rows - 1) / 2)
-        {
+      if (cnt > (rows - 1) / 2) {
           // we moved too many lines. put "dot" in middle of screen
-          for (cnt = 0; cnt < (rows - 1) / 2; cnt++)
-            {
+          for (cnt = 0; cnt < (rows - 1) / 2; cnt++) {
               screenbegin = prev_line (screenbegin);
-            }
-        }
-    }
-  else if (beg_cur > end_scr)
-    {
+         }
+      }
+  } else if (beg_cur > end_scr) {
       // "d" is after bottom line on screen
       // how many lines do we have to move
       cnt = count_lines (end_scr, beg_cur);
       if (cnt > (rows - 1) / 2)
         goto sc1;               // too many lines
-      for (ro = 0; ro < cnt - 1; ro++)
-        {
+      for (ro = 0; ro < cnt - 1; ro++) {
           // move screen begin the same amount
           screenbegin = next_line (screenbegin);
           // now, move the end of screen
           end_scr = next_line (end_scr);
           end_scr = end_line (end_scr);
-        }
-    }
+      }
+  }
   // "d" is on screen- find out which row
   tp = screenbegin;
-  for (ro = 0; ro < rows - 1; ro++)
-    {                           // drive "ro" to correct row
+  for (ro = 0; ro < rows - 1; ro++) {  // drive "ro" to correct row
       if (tp == beg_cur)
         break;
       tp = next_line (tp);
@@ -2534,21 +2241,16 @@ sync_cursor (Byte * d, int *row, int *col)
 
   // find out what col "d" is on
   co = 0;
-  do
-    {                           // drive "co" to correct column
+  do {                                 // drive "co" to correct column
       if (*tp == '\n' || *tp == '\0')
         break;
-      if (*tp == '\t')
-        {
+      if (*tp == '\t') {
           //         7       - (co %    8  )
           co += ((tabstop - 1) - (co % tabstop));
-        }
-      else if (*tp < ' ')
-        {
+      } else if (*tp < ' ') {
           co++;                 // display as ^X, use 2 columns
-        }
-    }
-  while (tp++ < d && ++co);
+      }
+  } while (tp++ < d && ++co);
 
   // "co" is the column where "dot" is.
   // The screen has "columns" columns.
@@ -2563,20 +2265,17 @@ sync_cursor (Byte * d, int *row, int *col)
   // If the first char of a line is a tab the cursor will try to stay
   //  in column 7, but we have to set offset to 0.
 
-  if (co < 0 + offset)
-    {
+  if (co < 0 + offset) {
       offset = co;
-    }
-  if (co >= columns + offset)
-    {
+  }
+  if (co >= columns + offset) {
       offset = co - columns + 1;
-    }
+  }
   // if the first char of the line is a tab, and "dot" is sitting on it
   //  force offset to 0.
-  if (d == beg_cur && *d == '\t')
-    {
+  if (d == beg_cur && *d == '\t') {
       offset = 0;
-    }
+  }
   co -= offset;
 
   *row = ro;
@@ -2584,24 +2283,21 @@ sync_cursor (Byte * d, int *row, int *col)
 }
 
 //----- Text Movement Routines ---------------------------------
-static Byte *
-begin_line (Byte * p)           // return pointer to first char cur line
+static Byte *begin_line(Byte * p)           // return pointer to first char cur line
 {
   while (p > text && p[-1] != '\n')
     p--;                        // go to cur line B-o-l
   return (p);
 }
 
-static Byte *
-end_line (Byte * p)             // return pointer to NL of cur line line
+static Byte *end_line(Byte * p)             // return pointer to NL of cur line line
 {
   while (p < end - 1 && *p != '\n')
     p++;                        // go to cur line E-o-l
   return (p);
 }
 
-static Byte *
-dollar_line (Byte * p)          // return pointer to just before NL line
+static Byte *dollar_line(Byte * p)          // return pointer to just before NL line
 {
   while (p < end - 1 && *p != '\n')
     p++;                        // go to cur line E-o-l
@@ -2611,8 +2307,7 @@ dollar_line (Byte * p)          // return pointer to just before NL line
   return (p);
 }
 
-static Byte *
-prev_line (Byte * p)            // return pointer first char prev line
+static Byte *prev_line(Byte * p)            // return pointer first char prev line
 {
   p = begin_line (p);           // goto begining of cur line
   if (p[-1] == '\n' && p > text)
@@ -2621,8 +2316,7 @@ prev_line (Byte * p)            // return pointer first char prev line
   return (p);
 }
 
-static Byte *
-next_line (Byte * p)            // return pointer first char next line
+static Byte *next_line(Byte * p)            // return pointer first char next line
 {
   p = end_line (p);
   if (*p == '\n' && p < end - 1)
@@ -2631,8 +2325,7 @@ next_line (Byte * p)            // return pointer first char next line
 }
 
 //----- Text Information Routines ------------------------------
-static Byte *
-end_screen (void)
+static Byte *end_screen(void)
 {
   Byte *q;
   int cnt;
@@ -2645,124 +2338,102 @@ end_screen (void)
   return (q);
 }
 
-static int
-count_lines (Byte * start, Byte * stop) // count line from start to stop
+static int count_lines(Byte * start, Byte * stop) // count line from start to stop
 {
   Byte *q;
   int cnt;
 
-  if (stop < start)
-    {                           // start and stop are backwards- reverse them
+  if (stop < start) {  // start and stop are backwards- reverse them
       q = start;
       start = stop;
       stop = q;
-    }
+  }
   cnt = 0;
   stop = end_line (stop);       // get to end of this line
-  for (q = start; q <= stop && q <= end - 1; q++)
-    {
+  for (q = start; q <= stop && q <= end - 1; q++) {
       if (*q == '\n')
         cnt++;
-    }
+  }
   return (cnt);
 }
 
-static Byte *
-find_line (int li)              // find begining of line #li
+static Byte *find_line(int li)              // find begining of line #li
 {
   Byte *q;
 
-  for (q = text; li > 1; li--)
-    {
+  for (q = text; li > 1; li--) {
       q = next_line (q);
-    }
+  }
   return (q);
 }
 
 //----- Dot Movement Routines ----------------------------------
-static void
-dot_left (void)
+static void dot_left(void)
 {
   if (dot > text && dot[-1] != '\n')
     dot--;
 }
 
-static void
-dot_right (void)
+static void dot_right(void)
 {
   if (dot < end - 1 && *dot != '\n')
     dot++;
 }
 
-static void
-dot_begin (void)
+static void dot_begin(void)
 {
   dot = begin_line (dot);       // return pointer to first char cur line
 }
 
-static void
-dot_end (void)
+static void dot_end(void)
 {
   dot = end_line (dot);         // return pointer to last char cur line
 }
 
-static Byte *
-move_to_col (Byte * p, int l)
+static Byte *move_to_col(Byte * p, int l)
 {
   int co;
 
   p = begin_line (p);
   co = 0;
-  do
-    {
+  do {
       if (*p == '\n' || *p == '\0')
         break;
-      if (*p == '\t')
-        {
+      if (*p == '\t') {
           //         7       - (co %    8  )
           co += ((tabstop - 1) - (co % tabstop));
-        }
-      else if (*p < ' ')
-        {
+      } else if (*p < ' ') {
           co++;                 // display as ^X, use 2 columns
-        }
-    }
-  while (++co <= l && p++ < end);
+      }
+  } while (++co <= l && p++ < end);
   return (p);
 }
 
-static void
-dot_next (void)
+static void dot_next(void)
 {
   dot = next_line (dot);
 }
 
-static void
-dot_prev (void)
+static void dot_prev(void)
 {
   dot = prev_line (dot);
 }
 
-static void
-dot_scroll (int cnt, int dir)
+static void dot_scroll(int cnt, int dir)
 {
   Byte *q;
 
-  for (; cnt > 0; cnt--)
-    {
-      if (dir < 0)
-        {
+  for (; cnt > 0; cnt--) {
+      if (dir < 0) {
           // scroll Backwards
           // ctrl-Y  scroll up one line
           screenbegin = prev_line (screenbegin);
-        }
-      else
-        {
+      } else {
           // scroll Forwards
           // ctrl-E  scroll down one line
           screenbegin = next_line (screenbegin);
-        }
-    }
+      }
+  }
   // make sure "dot" stays on the screen so we dont scroll off
   if (dot < screenbegin)
     dot = screenbegin;
@@ -2772,33 +2443,28 @@ dot_scroll (int cnt, int dir)
   dot_skip_over_ws ();
 }
 
-static void
-dot_skip_over_ws (void)
+static void dot_skip_over_ws(void)
 {
   // skip WS
   while (isspace (*dot) && *dot != '\n' && dot < end - 1)
     dot++;
 }
 
-static void
-dot_delete (void)               // delete the char at 'dot'
+static void dot_delete(void)               // delete the char at 'dot'
 {
   (void) text_hole_delete (dot, dot);
 }
 
-static Byte *
-bound_dot (Byte * p)            // make sure  text[0] <= P < "end"
+static Byte *bound_dot(Byte * p)            // make sure  text[0] <= P < "end"
 {
-  if (p >= end && end > text)
-    {
+  if (p >= end && end > text) {
       p = end - 1;
       indicate_error ('1');
-    }
-  if (p < text)
-    {
+  }
+  if (p < text) {
       p = text;
       indicate_error ('2');
-    }
+  }
   return (p);
 }
 
@@ -2815,8 +2481,7 @@ bound_dot (Byte * p)            // make sure  text[0] <= P < "end"
  * DO NOT COUNT NEWLINE AS WHITESPACE
  */
 
-static Byte *
-new_screen (int ro, int co)
+static Byte *new_screen(int ro, int co)
 {
   int li;
 
@@ -2827,23 +2492,20 @@ new_screen (int ro, int co)
   // initialize the new screen. assume this will be a empty file.
   screen_erase ();
   //   non-existant text[] lines start with a tilde (~).
-  for (li = 1; li < ro - 1; li++)
-    {
+  for (li = 1; li < ro - 1; li++) {
       screen[(li * co) + 0] = '~';
-    }
+  }
   return (screen);
 }
 
-static Byte *
-new_text (int size)
+static Byte *new_text(int size)
 {
   if (size < 10240)
     size = 10240;               // have a minimum size for new files
-  if (text != 0)
-    {
+  if (text != 0) {
       //text -= 4;
       free (text);
-    }
+  }
   text = (Byte *) malloc (size + 8);
   memset (text, '\0', size);    // clear new text[]
   //text += 4;            // leave some room for "oops"
@@ -2853,55 +2515,45 @@ new_text (int size)
 }
 
 #ifdef BB_FEATURE_VI_SEARCH
-static int
-mycmp (Byte * s1, Byte * s2, int len)
+static int mycmp(Byte * s1, Byte * s2, int len)
 {
   int i;
 
   i = strncmp ((char *) s1, (char *) s2, len);
 #ifdef BB_FEATURE_VI_SETOPTS
-  if (ignorecase)
-    {
+  if (ignorecase) {
       i = strncasecmp ((char *) s1, (char *) s2, len);
-    }
+  }
 #endif /* BB_FEATURE_VI_SETOPTS */
   return (i);
 }
 
-static Byte *
-char_search (Byte * p, Byte * pat, int dir, int range)  // search for pattern starting at p
+static Byte *char_search(Byte * p, Byte * pat, int dir, int range)  // search for pattern starting at p
 {
 #ifndef REGEX_SEARCH
   Byte *start, *stop;
   int len;
 
   len = strlen ((char *) pat);
-  if (dir == FORWARD)
-    {
+  if (dir == FORWARD) {
       stop = end - 1;           // assume range is p - end-1
       if (range == LIMITED)
         stop = next_line (p);   // range is to next line
-      for (start = p; start < stop; start++)
-        {
-          if (mycmp (start, pat, len) == 0)
-            {
+      for (start = p; start < stop; start++) {
+          if (mycmp (start, pat, len) == 0) {
               return (start);
-            }
-        }
-    }
-  else if (dir == BACK)
-    {
+         }
+      }
+  } else if (dir == BACK) {
       stop = text;              // assume range is text - p
       if (range == LIMITED)
         stop = prev_line (p);   // range is to prev line
-      for (start = p - len; start >= stop; start--)
-        {
-          if (mycmp (start, pat, len) == 0)
-            {
+      for (start = p - len; start >= stop; start--) {
+          if (mycmp (start, pat, len) == 0) {
               return (start);
-            }
-        }
-    }
+         }
+      }
+  }
   // pattern not found
   return (NULL);
 #else /*REGEX_SEARCH */
@@ -2920,11 +2572,10 @@ char_search (Byte * p, Byte * pat, int dir, int range)  // search for pattern st
   q = next_line (p);
   q = end_line (q);
   q = end - 1;
-  if (dir == BACK)
-    {
+  if (dir == BACK) {
       q = prev_line (p);
       q = text;
-    }
+  }
   // count the number of chars to search over, forward or backward
   size = q - p;
   if (size < 0)
@@ -2933,21 +2584,19 @@ char_search (Byte * p, Byte * pat, int dir, int range)  // search for pattern st
   range = q - p;
 
   q = (char *) re_compile_pattern (pat, strlen ((char *) pat), &preg);
-  if (q != 0)
-    {
+  if (q != 0) {
       // The pattern was not compiled
       psbs ("bad search pattern: \"%s\": %s", pat, q);
       i = 0;                    // return p if pattern not compiled
       goto cs1;
-    }
+  }
 
   q = p;
-  if (range < 0)
-    {
+  if (range < 0) {
       q = p - size;
       if (q < text)
         q = text;
-    }
+  }
   // search for the compiled pattern, preg, in p[]
   // range < 0-  search backward
   // range > 0-  search forward
@@ -2957,30 +2606,24 @@ char_search (Byte * p, Byte * pat, int dir, int range)  // search for pattern st
   //            struct pattern    char     int    int    int     struct reg
   // re_search (*pattern_buffer,  *string, size,  start, range,  *regs)
   i = re_search (&preg, q, size, 0, range, 0);
-  if (i == -1)
-    {
+  if (i == -1) {
       p = 0;
       i = 0;                    // return NULL if pattern not found
-    }
+  }
 cs1:
-  if (dir == FORWARD)
-    {
+  if (dir == FORWARD) {
       p = p + i;
-    }
-  else
-    {
+  } else {
       p = p - i;
-    }
+  }
   return (p);
 #endif /*REGEX_SEARCH */
 }
 #endif /* BB_FEATURE_VI_SEARCH */
 
-static Byte *
-char_insert (Byte * p, Byte c)  // insert the char c at 'p'
+static Byte *char_insert(Byte * p, Byte c)  // insert the char c at 'p'
 {
-  if (c == 22)
-    {                           // Is this an ctrl-V?
+  if (c == 22) {               // Is this an ctrl-V?
       p = stupid_insert (p, '^'); // use ^ to indicate literal next
       p--;                      // backup onto ^
       refresh (FALSE);          // show the ^
@@ -2988,40 +2631,31 @@ char_insert (Byte * p, Byte c)  // insert the char c at 'p'
       *p = c;
       p++;
       file_modified = TRUE;     // has the file been modified
-    }
-  else if (c == 27)
-    {                           // Is this an ESC?
+  } else if (c == 27) {                // Is this an ESC?
       cmd_mode = 0;
       cmdcnt = 0;
       end_cmd_q ();             // stop adding to q
       strcpy ((char *) status_buffer, " "); // clear the status buffer
-      if ((p[-1] != '\n') && (dot > text))
-        {
+      if ((p[-1] != '\n') && (dot > text)) {
           p--;
-        }
-    }
-  else if (c == erase_char)
-    {                           // Is this a BS
+      }
+  } else if (c == erase_char) {        // Is this a BS
       //     123456789
-      if ((p[-1] != '\n') && (dot > text))
-        {
+      if ((p[-1] != '\n') && (dot > text)) {
           p--;
           p = text_hole_delete (p, p);  // shrink buffer 1 char
 #ifdef BB_FEATURE_VI_DOT_CMD
           // also rmove char from last_modifying_cmd
-          if (strlen ((char *) last_modifying_cmd) > 0)
-            {
+          if (strlen((char *) last_modifying_cmd) > 0) {
               Byte *q;
 
               q = last_modifying_cmd;
               q[strlen ((char *) q) - 1] = '\0';  // erase BS
               q[strlen ((char *) q) - 1] = '\0';  // erase prev char
-            }
+         }
 #endif /* BB_FEATURE_VI_DOT_CMD */
-        }
-    }
-  else
-    {
+      }
+  } else {
       // insert a char into text[]
       Byte *sp;                 // "save p"
 
@@ -3030,40 +2664,34 @@ char_insert (Byte * p, Byte c)  // insert the char c at 'p'
       sp = p;                   // remember addr of insert
       p = stupid_insert (p, c); // insert the char
 #ifdef BB_FEATURE_VI_SETOPTS
-      if (showmatch && strchr (")]}", *sp) != NULL)
-        {
+      if (showmatch && strchr (")]}", *sp) != NULL) {
           showmatching (sp);
-        }
-      if (autoindent && c == '\n')
-        {                       // auto indent the new line
+      }
+      if (autoindent && c == '\n') {   // auto indent the new line
           Byte *q;
 
           q = prev_line (p);    // use prev line as templet
-          for (; isblnk (*q); q++)
-            {
+          for (; isblnk (*q); q++) {
               p = stupid_insert (p, *q);  // insert the char
-            }
-        }
+         }
+      }
 #endif /* BB_FEATURE_VI_SETOPTS */
     }
   return (p);
 }
 
-static Byte *
-stupid_insert (Byte * p, Byte c)  // stupidly insert the char c at 'p'
+static Byte *stupid_insert(Byte * p, Byte c)  // stupidly insert the char c at 'p'
 {
   p = text_hole_make (p, 1);
-  if (p != 0)
-    {
+  if (p != 0) {
       *p = c;
       file_modified = TRUE;     // has the file been modified
       p++;
-    }
+  }
   return (p);
 }
 
-static Byte
-find_range (Byte ** start, Byte ** stop, Byte c)
+static Byte find_range(Byte ** start, Byte ** stop, Byte c)
 {
   Byte *save_dot, *p, *q;
   int cnt;
@@ -3071,65 +2699,51 @@ find_range (Byte ** start, Byte ** stop, Byte c)
   save_dot = dot;
   p = q = dot;
 
-  if (strchr ("cdy><", c))
-    {
+  if (strchr ("cdy><", c)) {
       // these cmds operate on whole lines
       p = q = begin_line (p);
-      for (cnt = 1; cnt < cmdcnt; cnt++)
-        {
+      for (cnt = 1; cnt < cmdcnt; cnt++) {
           q = next_line (q);
-        }
+      }
       q = end_line (q);
-    }
-  else if (strchr ("^%$0bBeEft", c))
-    {
+  } else if (strchr ("^%$0bBeEft", c)) {
       // These cmds operate on char positions
       do_cmd (c);               // execute movement cmd
       q = dot;
-    }
-  else if (strchr ("wW", c))
-    {
+  } else if (strchr ("wW", c)) {
       do_cmd (c);               // execute movement cmd
       if (dot > text)
         dot--;                  // move back off of next word
       if (dot > text && *dot == '\n')
         dot--;                  // stay off NL
       q = dot;
-    }
-  else if (strchr ("H-k{", c))
-    {
+  } else if (strchr ("H-k{", c)) {
       // these operate on multi-lines backwards
       q = end_line (dot);       // find NL
       do_cmd (c);               // execute movement cmd
       dot_begin ();
       p = dot;
-    }
-  else if (strchr ("L+j}\r\n", c))
-    {
+  } else if (strchr ("L+j}\r\n", c)) {
       // these operate on multi-lines forwards
       p = begin_line (dot);
       do_cmd (c);               // execute movement cmd
       dot_end ();               // find NL
       q = dot;
-    }
-  else
-    {
+  } else {
       c = 27;                   // error- return an ESC char
       //break;
-    }
+  }
   *start = p;
   *stop = q;
-  if (q < p)
-    {
+  if (q < p) {
       *start = q;
       *stop = p;
-    }
+  }
   dot = save_dot;
   return (c);
 }
 
-static int
-st_test (Byte * p, int type, int dir, Byte * tested)
+static int st_test(Byte * p, int type, int dir, Byte * tested)
 {
   Byte c, c0, ci;
   int test, inc;
@@ -3139,42 +2753,35 @@ st_test (Byte * p, int type, int dir, Byte * tested)
   ci = p[inc];
   test = 0;
 
-  if (type == S_BEFORE_WS)
-    {
+  if (type == S_BEFORE_WS) {
       c = ci;
       test = ((!isspace (c)) || c == '\n');
-    }
-  if (type == S_TO_WS)
-    {
+  }
+  if (type == S_TO_WS) {
       c = c0;
       test = ((!isspace (c)) || c == '\n');
-    }
-  if (type == S_OVER_WS)
-    {
+  }
+  if (type == S_OVER_WS) {
       c = c0;
       test = ((isspace (c)));
-    }
-  if (type == S_END_PUNCT)
-    {
+  }
+  if (type == S_END_PUNCT) {
       c = ci;
       test = ((ispunct (c)));
-    }
-  if (type == S_END_ALNUM)
-    {
+  }
+  if (type == S_END_ALNUM) {
       c = ci;
       test = ((isalnum (c)) || c == '_');
-    }
+  }
   *tested = c;
   return (test);
 }
 
-static Byte *
-skip_thing (Byte * p, int linecnt, int dir, int type)
+static Byte *skip_thing(Byte * p, int linecnt, int dir, int type)
 {
   Byte c;
 
-  while (st_test (p, type, dir, &c))
-    {
+  while (st_test(p, type, dir, &c)) {
       // make sure we limit search to correct number of lines
       if (c == '\n' && --linecnt < 1)
         break;
@@ -3183,13 +2790,12 @@ skip_thing (Byte * p, int linecnt, int dir, int type)
       if (dir < 0 && p <= text)
         break;
       p += dir;                 // move to next char
-    }
+  }
   return (p);
 }
 
 // find matching char of pair  ()  []  {}
-static Byte *
-find_pair (Byte * p, Byte c)
+static Byte *find_pair(Byte * p, Byte c)
 {
   Byte match, *q;
   int dir, level;
@@ -3197,8 +2803,7 @@ find_pair (Byte * p, Byte c)
   match = ')';
   level = 1;
   dir = 1;                      // assume forward
-  switch (c)
-    {
+  switch (c) {
     case '(':
       match = ')';
       break;
@@ -3220,9 +2825,8 @@ find_pair (Byte * p, Byte c)
       match = '{';
       dir = -1;
       break;
-    }
-  for (q = p + dir; text <= q && q < end; q += dir)
-    {
+  }
+  for (q = p + dir; text <= q && q < end; q += dir) {
       // look for match, count levels of pairs  (( ))
       if (*q == c)
         level++;                // increase pair levels
@@ -3230,7 +2834,7 @@ find_pair (Byte * p, Byte c)
         level--;                // reduce pair level
       if (level == 0)
         break;                  // found matching pair
-    }
+  }
   if (level != 0)
     q = NULL;                   // indicate no match
   return (q);
@@ -3238,19 +2842,15 @@ find_pair (Byte * p, Byte c)
 
 #ifdef BB_FEATURE_VI_SETOPTS
 // show the matching char of a pair,  ()  []  {}
-static void
-showmatching (Byte * p)
+static void showmatching(Byte * p)
 {
   Byte *q, *save_dot;
 
   // we found half of a pair
   q = find_pair (p, *p);        // get loc of matching char
-  if (q == NULL)
-    {
+  if (q == NULL) {
       indicate_error ('3');     // no matching char
-    }
-  else
-    {
+  } else {
       // "q" now points to matching pair
       save_dot = dot;           // remember where we are
       dot = q;                  // go to new loc
@@ -3258,13 +2858,12 @@ showmatching (Byte * p)
       (void) mysleep (40);      // give user some time
       dot = save_dot;           // go back to old loc
       refresh (FALSE);
-    }
+  }
 }
 #endif /* BB_FEATURE_VI_SETOPTS */
 
 //  open a hole in text[]
-static Byte *
-text_hole_make (Byte * p, int size) // at "p", make a 'size' byte hole
+static Byte *text_hole_make(Byte * p, int size) // at "p", make a 'size' byte hole
 {
   Byte *src, *dest;
   int cnt;
@@ -3274,10 +2873,9 @@ text_hole_make (Byte * p, int size) // at "p", make a 'size' byte hole
   src = p;
   dest = p + size;
   cnt = end - src;              // the rest of buffer
-  if (memmove (dest, src, cnt) != dest)
-    {
+  if (memmove(dest, src, cnt) != dest) {
       psbs ("can't create room for new characters");
-    }
+  }
   memset (p, ' ', size);        // clear new hole
   end = end + size;             // adjust the new END
   file_modified = TRUE;         // has the file been modified
@@ -3286,8 +2884,7 @@ thm0:
 }
 
 //  close a hole in text[]
-static Byte *
-text_hole_delete (Byte * p, Byte * q) // delete "p" thru "q", inclusive
+static Byte *text_hole_delete(Byte * p, Byte * q) // delete "p" thru "q", inclusive
 {
   Byte *src, *dest;
   int cnt, hole_size;
@@ -3296,11 +2893,10 @@ text_hole_delete (Byte * p, Byte * q) // delete "p" thru "q", inclusive
   // assume p <= q
   src = q + 1;
   dest = p;
-  if (q < p)
-    {                           // they are backward- swap them
+  if (q < p) {                 // they are backward- swap them
       src = p + 1;
       dest = q;
-    }
+  }
   hole_size = q - p + 1;
   cnt = end - src;
   if (src < text || src > end)
@@ -3309,10 +2905,9 @@ text_hole_delete (Byte * p, Byte * q) // delete "p" thru "q", inclusive
     goto thd0;
   if (src >= end)
     goto thd_atend;             // just delete the end of the buffer
-  if (memmove (dest, src, cnt) != dest)
-    {
+  if (memmove(dest, src, cnt) != dest) {
       psbs ("can't delete the character");
-    }
+  }
 thd_atend:
   end = end - hole_size;        // adjust the new END
   if (dest >= end)
@@ -3327,48 +2922,41 @@ thd0:
 // copy text into register, then delete text.
 // if dist <= 0, do not include, or go past, a NewLine
 //
-static Byte *
-yank_delete (Byte * start, Byte * stop, int dist, int yf)
+static Byte *yank_delete(Byte * start, Byte * stop, int dist, int yf)
 {
   Byte *p;
 
   // make sure start <= stop
-  if (start > stop)
-    {
+  if (start > stop) {
       // they are backwards, reverse them
       p = start;
       start = stop;
       stop = p;
-    }
-  if (dist <= 0)
-    {
+  }
+  if (dist <= 0) {
       // we can not cross NL boundaries
       p = start;
       if (*p == '\n')
         return (p);
       // dont go past a NewLine
-      for (; p + 1 <= stop; p++)
-        {
-          if (p[1] == '\n')
-            {
+      for (; p + 1 <= stop; p++) {
+          if (p[1] == '\n') {
               stop = p;         // "stop" just before NewLine
               break;
-            }
-        }
-    }
+         }
+      }
+  }
   p = start;
 #ifdef BB_FEATURE_VI_YANKMARK
   text_yank (start, stop, YDreg);
 #endif /* BB_FEATURE_VI_YANKMARK */
-  if (yf == YANKDEL)
-    {
+  if (yf == YANKDEL) {
       p = text_hole_delete (start, stop);
-    }                           // delete lines
+  }                           // delete lines
   return (p);
 }
 
-static void
-show_help (void)
+static void show_help(void)
 {
   fprintf (stderr, "version: %s\n", vi_Version);
   puts ("These features are available:"
@@ -3379,7 +2967,8 @@ show_help (void)
         "\n\tLast command repeat with \'.\'"
 #endif /* BB_FEATURE_VI_DOT_CMD */
 #ifdef BB_FEATURE_VI_YANKMARK
-        "\n\tLine marking with  'x" "\n\tNamed buffers with  \"x"
+        "\n\tLine marking with  'x"
+       "\n\tNamed buffers with  \"x"
 #endif /* BB_FEATURE_VI_YANKMARK */
 #ifdef BB_FEATURE_VI_READONLY
         "\n\tReadonly if vi is called as \"view\""
@@ -3392,7 +2981,8 @@ show_help (void)
         "\n\tSettable options with \":set\""
 #endif /* BB_FEATURE_VI_SETOPTS */
 #ifdef BB_FEATURE_VI_USE_SIGNALS
-        "\n\tSignal catching- ^C" "\n\tJob suspend and resume with ^Z"
+        "\n\tSignal catching- ^C"
+       "\n\tJob suspend and resume with ^Z"
 #endif /* BB_FEATURE_VI_USE_SIGNALS */
 #ifdef BB_FEATURE_VI_WIN_RESIZE
         "\n\tAdapt to window re-sizes"
@@ -3400,8 +2990,7 @@ show_help (void)
     );
 }
 
-static void
-print_literal (Byte * buf, Byte * s)  // copy s to buf, convert unprintable
+static void print_literal(Byte * buf, Byte * s)  // copy s to buf, convert unprintable
 {
   Byte c, b[2];
 
@@ -3409,33 +2998,28 @@ print_literal (Byte * buf, Byte * s)  // copy s to buf, convert unprintable
   strcpy ((char *) buf, "");    // init buf
   if (strlen ((char *) s) <= 0)
     s = (Byte *) "(NULL)";
-  for (; *s > '\0'; s++)
-    {
+  for (; *s > '\0'; s++) {
       c = *s;
-      if (*s > '~')
-        {
-          strcat ((char *) buf, SOs);
+      if (*s > '~') {
+         strlcat((char *) buf, SOs, BUFSIZ); /* FIXED strlcat BUFSIZ */
           c = *s - 128;
-        }
-      if (*s < ' ')
-        {
+      }
+      if (*s < ' ') {
           strcat ((char *) buf, "^");
           c += '@';
-        }
+      }
       b[0] = c;
-      strcat ((char *) buf, (char *) b);
+      strlcat((char *) buf, (char *) b, BUFSIZ); /* FIXED added BUFSIZ and converted to strlcat() */
       if (*s > '~')
-        strcat ((char *) buf, SOn);
-      if (*s == '\n')
-        {
+         strlcat((char *) buf, SOn, BUFSIZ); /* FIXED strlcat BUFSIZ */
+      if (*s == '\n') {
           strcat ((char *) buf, "$");
-        }
-    }
+      }
+  }
 }
 
 #ifdef BB_FEATURE_VI_DOT_CMD
-static void
-start_new_cmd_q (Byte c)
+static void start_new_cmd_q(Byte c)
 {
   // release old cmd
   if (last_modifying_cmd != 0)
@@ -3452,8 +3036,7 @@ start_new_cmd_q (Byte c)
   return;
 }
 
-static void
-end_cmd_q ()
+static void end_cmd_q()
 {
 #ifdef BB_FEATURE_VI_YANKMARK
   YDreg = 26;                   // go back to default Yank/Delete reg
@@ -3464,19 +3047,17 @@ end_cmd_q ()
 #endif /* BB_FEATURE_VI_DOT_CMD */
 
 #if defined(BB_FEATURE_VI_YANKMARK) || defined(BB_FEATURE_VI_COLON) || defined(BB_FEATURE_VI_CRASHME)
-static Byte *
-string_insert (Byte * p, Byte * s)  // insert the string at 'p'
+static Byte * string_insert(Byte * p, Byte * s)  // insert the string at 'p'
 {
   int cnt, i;
 
   i = strlen ((char *) s);
   p = text_hole_make (p, i);
   strncpy ((char *) p, (char *) s, i);
-  for (cnt = 0; *s != '\0'; s++)
-    {
+  for (cnt = 0; *s != '\0'; s++) {
       if (*s == '\n')
         cnt++;
-    }
+  }
 #ifdef BB_FEATURE_VI_YANKMARK
   psb ("Put %d lines (%d chars) from [%c]", cnt, i, what_reg ());
 #endif /* BB_FEATURE_VI_YANKMARK */
@@ -3485,24 +3066,21 @@ string_insert (Byte * p, Byte * s)  // insert the string at 'p'
 #endif /* BB_FEATURE_VI_YANKMARK || BB_FEATURE_VI_COLON || BB_FEATURE_VI_CRASHME */
 
 #ifdef BB_FEATURE_VI_YANKMARK
-static Byte *
-text_yank (Byte * p, Byte * q, int dest)  // copy text into a register
+static Byte *text_yank(Byte * p, Byte * q, int dest)  // copy text into a register
 {
   Byte *t;
   int cnt;
 
-  if (q < p)
-    {                           // they are backwards- reverse them
+  if (q < p) {                 // they are backwards- reverse them
       t = q;
       q = p;
       p = t;
-    }
+  }
   cnt = q - p + 1;
   t = reg[dest];
-  if (t != 0)
-    {                           // if already a yank register
+  if (t != 0) {                        // if already a yank register
       free (t);                 //   free it
-    }
+  }
   t = (Byte *) malloc (cnt + 1);  // get a new register
   memset (t, '\0', cnt + 1);    // clear new text[]
   strncpy ((char *) t, (char *) p, cnt);  // copy text[] into bufer
@@ -3510,8 +3088,7 @@ text_yank (Byte * p, Byte * q, int dest)  // copy text into a register
   return (p);
 }
 
-static Byte
-what_reg (void)
+static Byte what_reg(void)
 {
   Byte c;
   int i;
@@ -3527,57 +3104,50 @@ what_reg (void)
   return (c);
 }
 
-static void
-check_context (Byte cmd)
+static void check_context(Byte cmd)
 {
   // A context is defined to be "modifying text"
   // Any modifying command establishes a new context.
 
-  if (dot < context_start || dot > context_end)
-    {
-      if (strchr ((char *) modifying_cmds, cmd) != NULL)
-        {
+  if (dot < context_start || dot > context_end) {
+      if (strchr((char *) modifying_cmds, cmd) != NULL) {
           // we are trying to modify text[]- make this the current context
           mark[27] = mark[26];  // move cur to prev
           mark[26] = dot;       // move local to cur
           context_start = prev_line (prev_line (dot));
           context_end = next_line (next_line (dot));
           //loiter= start_loiter= now;
-        }
-    }
+      }
+  }
   return;
 }
 
-static Byte *
-swap_context (Byte * p)         // goto new context for '' command make this the current context
+static Byte *swap_context(Byte * p)         // goto new context for '' command make this the current context
 {
   Byte *tmp;
 
   // the current context is in mark[26]
   // the previous context is in mark[27]
   // only swap context if other context is valid
-  if (text <= mark[27] && mark[27] <= end - 1)
-    {
+  if (text <= mark[27] && mark[27] <= end - 1) {
       tmp = mark[27];
       mark[27] = mark[26];
       mark[26] = tmp;
       p = mark[26];             // where we are going- previous context
       context_start = prev_line (prev_line (prev_line (p)));
       context_end = next_line (next_line (next_line (p)));
-    }
+  }
   return (p);
 }
 #endif /* BB_FEATURE_VI_YANKMARK */
 
-static int
-isblnk (Byte c)                 // is the char a blank or tab
+static int isblnk(Byte c)                 // is the char a blank or tab
 {
   return (c == ' ' || c == '\t');
 }
 
 //----- Set terminal attributes --------------------------------
-static void
-rawmode (void)
+static void rawmode(void)
 {
   tcgetattr (0, &term_orig);
   term_vi = term_orig;
@@ -3592,34 +3162,29 @@ rawmode (void)
   tcsetattr (0, TCSANOW, &term_vi);
 }
 
-static void
-cookmode (void)
+static void cookmode(void)
 {
   tcsetattr (0, TCSANOW, &term_orig);
 }
 
 #ifdef BB_FEATURE_VI_WIN_RESIZE
 //----- See what the window size currently is --------------------
-static void
-window_size_get (int sig)
+static void window_size_get(int sig)
 {
   int i;
 
   i = ioctl (0, TIOCGWINSZ, &winsize);
-  if (i != 0)
-    {
+  if (i != 0) {
       // force 24x80
       winsize.ws_row = 24;
       winsize.ws_col = 80;
-    }
-  if (winsize.ws_row <= 1)
-    {
+  }
+  if (winsize.ws_row <= 1) {
       winsize.ws_row = 24;
-    }
-  if (winsize.ws_col <= 1)
-    {
+  }
+  if (winsize.ws_col <= 1) {
       winsize.ws_col = 80;
-    }
+  }
   rows = (int) winsize.ws_row;
   columns = (int) winsize.ws_col;
 }
@@ -3627,8 +3192,7 @@ window_size_get (int sig)
 
 //----- Come here when we get a window resize signal ---------
 #ifdef BB_FEATURE_VI_USE_SIGNALS
-static void
-winch_sig (int sig)
+static void winch_sig(int sig)
 {
   signal (SIGWINCH, winch_sig);
 #ifdef BB_FEATURE_VI_WIN_RESIZE
@@ -3639,8 +3203,7 @@ winch_sig (int sig)
 }
 
 //----- Come here when we get a continue signal -------------------
-static void
-cont_sig (int sig)
+static void cont_sig(int sig)
 {
   rawmode ();                   // terminal to "raw"
   *status_buffer = '\0';        // clear the status buffer
@@ -3652,8 +3215,7 @@ cont_sig (int sig)
 }
 
 //----- Come here when we get a Suspend signal -------------------
-static void
-suspend_sig (int sig)
+static void suspend_sig(int sig)
 {
   place_cursor (rows - 1, 0, FALSE);  // go to bottom of screen
   clear_to_eol ();              // Erase to end of line
@@ -3665,8 +3227,7 @@ suspend_sig (int sig)
 }
 
 //----- Come here when we get a signal ---------------------------
-static void
-catch_sig (int sig)
+static void catch_sig(int sig)
 {
   signal (SIGHUP, catch_sig);
   signal (SIGINT, catch_sig);
@@ -3674,16 +3235,14 @@ catch_sig (int sig)
   longjmp (restart, sig);
 }
 
-static void
-alarm_sig (int sig)
+static void alarm_sig(int sig)
 {
   signal (SIGALRM, catch_sig);
   longjmp (restart, sig);
 }
 
 //----- Come here when we get a core dump signal -----------------
-static void
-core_sig (int sig)
+static void core_sig(int sig)
 {
   signal (SIGQUIT, core_sig);
   signal (SIGILL, core_sig);
@@ -3703,8 +3262,7 @@ core_sig (int sig)
 }
 #endif /* BB_FEATURE_VI_USE_SIGNALS */
 
-static int
-mysleep (int hund)              // sleep for 'h' 1/100 seconds
+static int mysleep(int hund)              // sleep for 'h' 1/100 seconds
 {
   // Don't hang- Wait 5/100 seconds-  1 Sec= 1000000
   FD_ZERO (&rfds);
@@ -3716,14 +3274,11 @@ mysleep (int hund)              // sleep for 'h' 1/100 seconds
 }
 
 //----- IO Routines --------------------------------------------
-static Byte
-readit (void)                   // read (maybe cursor) key from stdin
+static Byte readit(void)                   // read (maybe cursor) key from stdin
 {
   Byte c;
-  int i, bufsiz, cnt;
-  unsigned int cmdindex;
-  struct esc_cmds
-  {
+  int i, bufsiz, cnt, cmdindex;
+  struct esc_cmds {
     Byte *seq;
     Byte val;
   };
@@ -3767,13 +3322,11 @@ readit (void)                   // read (maybe cursor) key from stdin
   // (void) alarm(0);     // turn alarm OFF while we wait for input
   // get input from User- are there already input chars in Q?
   bufsiz = strlen ((char *) readbuffer);
-  if (bufsiz <= 0)
-    {
+  if (bufsiz <= 0) {
     ri0:
       // the Q is empty, wait for a typed char
       bufsiz = read (0, readbuffer, BUFSIZ - 1);
-      if (bufsiz < 0)
-        {
+      if (bufsiz < 0) {
           if (errno == EINTR)
             goto ri0;           // interrupted sys call
           if (errno == EBADF)
@@ -3786,9 +3339,9 @@ readit (void)                   // read (maybe cursor) key from stdin
             editing = 0;
           errno = 0;
           bufsiz = 0;
-        }
+      }
       readbuffer[bufsiz] = '\0';
-    }
+  }
   // return char if it is not part of ESC sequence
   if (readbuffer[0] != 27)
     goto ri1;
@@ -3803,34 +3356,29 @@ readit (void)                   // read (maybe cursor) key from stdin
   tv.tv_usec = 50000;           // Wait 5/100 seconds- 1 Sec=1000000
 
   // keep reading while there are input chars and room in buffer
-  while (select (1, &rfds, NULL, NULL, &tv) > 0 && bufsiz <= (BUFSIZ - 5))
-    {
+  while (select(1, &rfds, NULL, NULL, &tv) > 0 && bufsiz <= (BUFSIZ - 5)) {
       // read the rest of the ESC string
       i = read (0, (void *) (readbuffer + bufsiz), BUFSIZ - bufsiz);
-      if (i > 0)
-        {
+      if (i > 0) {
           bufsiz += i;
           readbuffer[bufsiz] = '\0';  // Terminate the string
-        }
-    }
+      }
+  }
   // Maybe cursor or function key?
-  for (cmdindex = 0; cmdindex < ESCCMDS_COUNT; cmdindex++)
-    {
+  for (cmdindex = 0; cmdindex < ESCCMDS_COUNT; cmdindex++) {
       cnt = strlen ((char *) esccmds[cmdindex].seq);
       i = strncmp ((char *) esccmds[cmdindex].seq, (char *) readbuffer, cnt);
-      if (i == 0)
-        {
+      if (i == 0) {
           // is a Cursor key- put derived value back into Q
           readbuffer[0] = esccmds[cmdindex].val;
           // squeeze out the ESC sequence
-          for (i = 1; i < cnt; i++)
-            {
+          for (i = 1; i < cnt; i++) {
               memmove (readbuffer + 1, readbuffer + 2, BUFSIZ - 2);
               readbuffer[BUFSIZ - 1] = '\0';
-            }
+         }
           break;
-        }
-    }
+      }
+  }
 ri1:
   c = readbuffer[0];
   // remove one char from Q
@@ -3841,8 +3389,7 @@ ri1:
 }
 
 //----- IO Routines --------------------------------------------
-static Byte
-get_one_char ()
+static Byte get_one_char()
 {
   static Byte c;
 
@@ -3850,82 +3397,77 @@ get_one_char ()
   // ! adding2q  && ioq == 0  read()
   // ! adding2q  && ioq != 0  *ioq
   // adding2q         *last_modifying_cmd= read()
-  if (!adding2q)
-    {
+  if (!adding2q) {
       // we are not adding to the q.
       // but, we may be reading from a q
-      if (ioq == 0)
-        {
+      if (ioq == 0) {
           // there is no current q, read from STDIN
           c = readit ();        // get the users input
-        }
-      else
-        {
+      } else {
           // there is a queue to get chars from first
           c = *ioq++;
-          if (c == '\0')
-            {
+          if (c == '\0') {
               // the end of the q, read from STDIN
               free (ioq_start);
               ioq_start = ioq = 0;
               c = readit ();    // get the users input
-            }
-        }
-    }
-  else
-    {
+         }
+      }
+  } else {
       // adding STDIN chars to q
       c = readit ();            // get the users input
-      if (last_modifying_cmd != 0)
-        {
-          // add new char to q
-          last_modifying_cmd[strlen ((char *) last_modifying_cmd)] = c;
-        }
-    }
+      if (last_modifying_cmd != 0) {
+         int len = strlen((char *) last_modifying_cmd);
+         if (len + 1 >= BUFSIZ) {
+             /* FIXME last_modifying_cmd needs a shaving */
+             fprintf(stderr,"last_modifying_cmd overrun");
+             exit(EXIT_FAILURE);
+         } else {
+             // add new char to q
+             last_modifying_cmd[len] = c;
+         }
+
+      }
+  }
 #else /* BB_FEATURE_VI_DOT_CMD */
   c = readit ();                // get the users input
 #endif /* BB_FEATURE_VI_DOT_CMD */
   return (c);                   // return the char, where ever it came from
 }
 
-static Byte *
-get_input_line (Byte * prompt)  // get input line- use "status line"
+static Byte *get_input_line(Byte * prompt)  // get input line- use "status line"
 {
   Byte buf[BUFSIZ];
   Byte c;
   int i;
   static Byte *obufp = NULL;
 
-  strcpy ((char *) buf, (char *) prompt);
+  /* FIXED strcpy((char *) buf, (char *) prompt); */
+  if (strlcpy((char *) buf, (char *) prompt, sizeof((char *)buf)) > sizeof ((char *) buf))  err(1, "strlcpy overflow in function get_input_line");
   *status_buffer = '\0';        // clear the status buffer
   place_cursor (rows - 1, 0, FALSE);  // go to Status line, bottom of screen
   clear_to_eol ();              // clear the line
   write (1, prompt, strlen ((char *) prompt));  // write out the :, /, or ? prompt
 
-  for (i = strlen ((char *) buf); i < BUFSIZ;)
-    {
+  for (i = strlen ((char *) buf); i < BUFSIZ;) {
       c = get_one_char ();      // read user input
       if (c == '\n' || c == '\r' || c == 27)
         break;                  // is this end of input
-      if (c == erase_char)
-        {                       // user wants to erase prev char
+      if (c == erase_char) {   // user wants to erase prev char
           i--;                  // backup to prev char
           buf[i] = '\0';        // erase the char
           buf[i + 1] = '\0';    // null terminate buffer
           write (1, "\b \b", 3);      // erase char on screen
-          if (i <= 0)
-            {                   // user backs up before b-o-l, exit
+          if (i <= 0) {        // user backs up before b-o-l, exit
               break;
-            }
-        }
-      else
-        {
+         }
+      } else {
           buf[i] = c;           // save char in buffer
           buf[i + 1] = '\0';    // make sure buffer is null terminated
           write (1, buf + i, 1);  // echo the char back to user
           i++;
-        }
-    }
+      }
+  }
   refresh (FALSE);
   if (obufp != NULL)
     free (obufp);
@@ -3933,8 +3475,7 @@ get_input_line (Byte * prompt)  // get input line- use "status line"
   return (obufp);
 }
 
-static int
-file_size (Byte * fn)           // what is the byte size of "fn"
+static int file_size(Byte * fn)           // what is the byte size of "fn"
 {
   struct stat st_buf;
   int cnt, sr;
@@ -3943,15 +3484,13 @@ file_size (Byte * fn)           // what is the byte size of "fn"
     return (-1);
   cnt = -1;
   sr = stat ((char *) fn, &st_buf); // see if file exists
-  if (sr >= 0)
-    {
+  if (sr >= 0) {
       cnt = (int) st_buf.st_size;
-    }
+  }
   return (cnt);
 }
 
-static int
-file_insert (Byte * fn, Byte * p, int size)
+static int file_insert(Byte * fn, Byte * p, int size)
 {
   int fd, cnt;
 
@@ -3959,82 +3498,70 @@ file_insert (Byte * fn, Byte * p, int size)
 #ifdef BB_FEATURE_VI_READONLY
   readonly = FALSE;
 #endif /* BB_FEATURE_VI_READONLY */
-  if (fn == 0 || strlen ((char *) fn) <= 0)
-    {
+  if (fn == 0 || strlen ((char *) fn) <= 0) {
       psbs ("No filename given");
       goto fi0;
-    }
-  if (size == 0)
-    {
+  }
+  if (size == 0) {
       // OK- this is just a no-op
       cnt = 0;
       goto fi0;
-    }
-  if (size < 0)
-    {
+  }
+  if (size < 0) {
       psbs ("Trying to insert a negative number (%d) of characters", size);
       goto fi0;
-    }
-  if (p < text || p > end)
-    {
+  }
+  if (p < text || p > end) {
       psbs ("Trying to insert file outside of memory");
       goto fi0;
-    }
+  }
 
   // see if we can open the file
 #ifdef BB_FEATURE_VI_READONLY
-  if (vi_readonly == TRUE)
-    goto fi1;                   // do not try write-mode
+  if (vi_readonly == TRUE) goto fi1;                   // do not try write-mode
 #endif
   fd = open ((char *) fn, O_RDWR);  // assume read & write
-  if (fd < 0)
-    {
+  if (fd < 0) {
       // could not open for writing- maybe file is read only
 #ifdef BB_FEATURE_VI_READONLY
     fi1:
 #endif
       fd = open ((char *) fn, O_RDONLY);  // try read-only
-      if (fd < 0)
-        {
+      if (fd < 0) {
           psbs ("\"%s\" %s", fn, "could not open file");
           goto fi0;
-        }
+      }
 #ifdef BB_FEATURE_VI_READONLY
       // got the file- read-only
       readonly = TRUE;
 #endif /* BB_FEATURE_VI_READONLY */
-    }
+  }
   p = text_hole_make (p, size);
   cnt = read (fd, p, size);
   close (fd);
-  if (cnt < 0)
-    {
+  if (cnt < 0) {
       cnt = -1;
       p = text_hole_delete (p, p + size - 1); // un-do buffer insert
       psbs ("could not read file \"%s\"", fn);
-    }
-  else if (cnt < size)
-    {
+  } else if (cnt < size) {
       // There was a partial read, shrink unused space text[]
       p = text_hole_delete (p + cnt, p + (size - cnt) - 1); // un-do buffer insert
       psbs ("could not read all of file \"%s\"", fn);
-    }
+  }
   if (cnt >= size)
     file_modified = TRUE;
 fi0:
   return (cnt);
 }
 
-static int
-file_write (Byte * fn, Byte * first, Byte * last)
+static int file_write(Byte * fn, Byte * first, Byte * last)
 {
   int fd, cnt, charcnt;
 
-  if (fn == 0)
-    {
+  if (fn == 0) {
       psbs ("No current filename");
       return (-1);
-    }
+  }
   charcnt = 0;
   // FIXIT- use the correct umask()
   fd = open ((char *) fn, (O_WRONLY | O_CREAT | O_TRUNC), 0664);
@@ -4042,15 +3569,12 @@ file_write (Byte * fn, Byte * first, Byte * last)
     return (-1);
   cnt = last - first + 1;
   charcnt = write (fd, first, cnt);
-  if (charcnt == cnt)
-    {
+  if (charcnt == cnt) {
       // good write
       //file_modified= FALSE; // the file has not been modified
-    }
-  else
-    {
+  } else {
       charcnt = 0;
-    }
+  }
   close (fd);
   return (charcnt);
 }
@@ -4068,8 +3592,7 @@ file_write (Byte * fn, Byte * first, Byte * last)
 //
 
 //----- Move the cursor to row x col (count from 0, not 1) -------
-static void
-place_cursor (int row, int col, int opti)
+static void place_cursor(int row, int col, int opti)
 {
   char cm1[BUFSIZ];
   char *cm;
@@ -4083,39 +3606,33 @@ place_cursor (int row, int col, int opti)
 
   memset (cm1, '\0', BUFSIZ - 1); // clear the buffer
 
-  if (row < 0)
-    row = 0;
-  if (row >= rows)
-    row = rows - 1;
-  if (col < 0)
-    col = 0;
-  if (col >= columns)
-    col = columns - 1;
+  if (row < 0) row = 0;
+  if (row >= rows) row = rows - 1;
+  if (col < 0) col = 0;
+  if (col >= columns) col = columns - 1;
 
   //----- 1.  Try the standard terminal ESC sequence
   sprintf ((char *) cm1, CMrc, row + 1, col + 1);
   cm = cm1;
-  if (opti == FALSE)
-    goto pc0;
+  if (opti == FALSE) goto pc0;
 
 #ifdef BB_FEATURE_VI_OPTIMIZE_CURSOR
   //----- find the minimum # of chars to move cursor -------------
   //----- 2.  Try moving with discreet chars (Newline, [back]space, ...)
   memset (cm2, '\0', BUFSIZ - 1); // clear the buffer
+  /* FIXME - possible replace with strlc* ? */
 
   // move to the correct row
-  while (row < Rrow)
-    {
+  while (row < Rrow) {
       // the cursor has to move up
-      strcat (cm2, CMup);
+      strlcat(cm2, CMup, BUFSIZ); /* FIXED strlcat BUFSIZ */
       Rrow--;
-    }
-  while (row > Rrow)
-    {
+  }
+  while (row > Rrow) {
       // the cursor has to move down
-      strcat (cm2, CMdown);
+      strlcat(cm2, CMdown, BUFSIZ); /* FIXED strlcat BUFSIZE */
       Rrow++;
-    }
+  }
 
   // now move to the correct column
   strcat (cm2, "\r");           // start at col 0
@@ -4128,50 +3645,43 @@ place_cursor (int row, int col, int opti)
 
   // pick the shortest cursor motion to send out
   cm = cm1;
-  if (strlen (cm2) < strlen (cm))
-    {
+  if (strlen (cm2) < strlen (cm)) {
       cm = cm2;
-    }                           /* else if (strlen(cm3) < strlen(cm)) {
+  }                           /* else if (strlen(cm3) < strlen(cm)) {
                                    cm= cm3;
                                    } */
 #endif /* BB_FEATURE_VI_OPTIMIZE_CURSOR */
 pc0:
   l = strlen (cm);
-  if (l)
-    write (1, cm, l);           // move the cursor
+  if (l) write (1, cm, l);           // move the cursor
 }
 
 //----- Erase from cursor to end of line -----------------------
-static void
-clear_to_eol ()
+static void clear_to_eol()
 {
   write (1, Ceol, strlen (Ceol)); // Erase from cursor to end of line
 }
 
 //----- Erase from cursor to end of screen -----------------------
-static void
-clear_to_eos ()
+static void clear_to_eos()
 {
   write (1, Ceos, strlen (Ceos)); // Erase from cursor to end of screen
 }
 
 //----- Start standout mode ------------------------------------
-static void
-standout_start ()               // send "start reverse video" sequence
+static void standout_start()               // send "start reverse video" sequence
 {
   write (1, SOs, strlen (SOs)); // Start reverse video mode
 }
 
 //----- End standout mode --------------------------------------
-static void
-standout_end ()                 // send "end reverse video" sequence
+static void standout_end()                 // send "end reverse video" sequence
 {
   write (1, SOn, strlen (SOn)); // End reverse video mode
 }
 
 //----- Flash the screen  --------------------------------------
-static void
-flash (int h)
+static void flash(int h)
 {
   standout_start ();            // send "start reverse video" sequence
   redraw (TRUE);
@@ -4180,80 +3690,69 @@ flash (int h)
   redraw (TRUE);
 }
 
-static void
-beep ()
+static void beep()
 {
   write (1, bell, strlen (bell)); // send out a bell character
 }
 
-static void
-indicate_error (char c)
+static void indicate_error(char c)
 {
 #ifdef BB_FEATURE_VI_CRASHME
   if (crashme > 0)
     return;                     // generate a random command
 #endif /* BB_FEATURE_VI_CRASHME */
-  if (err_method == 0)
-    {
+  if (err_method == 0) {
       beep ();
-    }
-  else
-    {
+  } else {
       flash (10);
-    }
+  }
 }
 
 //----- Screen[] Routines --------------------------------------
 //----- Erase the Screen[] memory ------------------------------
-static void
-screen_erase ()
+static void screen_erase()
 {
   memset (screen, ' ', screensize); // clear new screen
 }
 
 //----- Draw the status line at bottom of the screen -------------
-static void
-show_status_line (void)
+static void show_status_line(void)
 {
   static int last_cksum;
   int l, cnt, cksum;
 
   cnt = strlen ((char *) status_buffer);
-  for (cksum = l = 0; l < cnt; l++)
-    {
-      cksum += (int) (status_buffer[l]);
-    }
+  for (cksum = l = 0; l < cnt; l++) { cksum += (int) (status_buffer[l]); }
   // don't write the status line unless it changes
-  if (cnt > 0 && last_cksum != cksum)
-    {
+  if (cnt > 0 && last_cksum != cksum) {
       last_cksum = cksum;       // remember if we have seen this line
       place_cursor (rows - 1, 0, FALSE);  // put cursor on status line
       write (1, status_buffer, cnt);
       clear_to_eol ();
       place_cursor (crow, ccol, FALSE); // put cursor back in correct place
-    }
+  }
 }
 
 //----- format the status buffer, the bottom line of screen ------
 // print status buffer, with STANDOUT mode
-static void
-psbs (char *format, ...)
+static void psbs(char *format, ...)
 {
   va_list args;
 
   va_start (args, format);
-  strcpy ((char *) status_buffer, SOs); // Terminal standout mode on
+  /* FIXED strcpy((char *) status_buffer, SOs); */
+  strlcpy((char *) status_buffer, SOs, BUFSIZ_STATBUF);   // Terminal standout mode on
   vsprintf ((char *) status_buffer + strlen ((char *) status_buffer), format,
             args);
-  strcat ((char *) status_buffer, SOn); // Terminal standout mode off
+  /* FIXED strcat((char *) status_buffer, SOn); */
+  strlcat((char *) status_buffer, SOn, BUFSIZ_STATBUF);   // Terminal standout mode off
   va_end (args);
 
   return;
 }
 
 // print status buffer
-static void
-psb (char *format, ...)
+static void psb(char *format, ...)
 {
   va_list args;
 
@@ -4263,8 +3762,7 @@ psb (char *format, ...)
   return;
 }
 
-static void
-ni (Byte * s)                   // display messages
+static void ni(Byte * s)                   // display messages
 {
   Byte buf[BUFSIZ];
 
@@ -4272,8 +3770,7 @@ ni (Byte * s)                   // display messages
   psbs ("\'%s\' is not implemented", buf);
 }
 
-static void
-edit_status (void)              // show file status on status line
+static void edit_status(void)              // show file status on status line
 {
   int cur, tot, percent;
 
@@ -4282,29 +3779,27 @@ edit_status (void)              // show file status on status line
   //    current line         percent
   //   -------------    ~~ ----------
   //    total lines            100
-  if (tot > 0)
-    {
+  if (tot > 0) {
       percent = (100 * cur) / tot;
-    }
-  else
-    {
+  } else {
       cur = tot = 0;
       percent = 100;
-    }
+  }
   psb ("\"%s\""
 #ifdef BB_FEATURE_VI_READONLY
        "%s"
 #endif /* BB_FEATURE_VI_READONLY */
-       "%s line %d of %d --%d%%--", (cfn != 0 ? (char *) cfn : "No file"),
+       "%s line %d of %d --%d%%--",
+       (cfn != 0 ? (char *) cfn : "No file"),
 #ifdef BB_FEATURE_VI_READONLY
        ((vi_readonly == TRUE || readonly == TRUE) ? " [Read only]" : ""),
 #endif /* BB_FEATURE_VI_READONLY */
-       (file_modified == TRUE ? " [modified]" : ""), cur, tot, percent);
+       (file_modified == TRUE ? " [modified]" : ""),
+       cur, tot, percent);
 }
 
 //----- Force refresh of all Lines -----------------------------
-static void
-redraw (int full_screen)
+static void redraw(int full_screen)
 {
   place_cursor (0, 0, FALSE);   // put cursor in correct place
   clear_to_eos ();              // tel terminal to erase display
@@ -4313,50 +3808,41 @@ redraw (int full_screen)
 }
 
 //----- Format a text[] line into a buffer ---------------------
-static void
-format_line (Byte * dest, Byte * src, int li)
+static void format_line(Byte * dest, Byte * src, int li)
 {
   int co;
   Byte c;
 
-  for (co = 0; co < MAX_SCR_COLS; co++)
-    {
+  for (co = 0; co < MAX_SCR_COLS; co++) {
       c = ' ';                  // assume blank
-      if (li > 0 && co == 0)
-        {
+      if (li > 0 && co == 0) {
           c = '~';              // not first line, assume Tilde
-        }
+      }
       // are there chars in text[] and have we gone past the end
-      if (text < end && src < end)
-        {
+      if (text < end && src < end) {
           c = *src++;
-        }
+      }
       if (c == '\n')
         break;
-      if (c < ' ' || c > '~')
-        {
-          if (c == '\t')
-            {
+      if (c < ' ' || c > '~') {
+          if (c == '\t') {
               c = ' ';
               //       co %    8     !=     7
-              for (; (co % tabstop) != (tabstop - 1); co++)
-                {
+              for (; (co % tabstop) != (tabstop - 1); co++) {
                   dest[co] = c;
-                }
-            }
-          else
-            {
+             }
+         } else {
               dest[co++] = '^';
               c |= '@';         // make it visible
               c &= 0x7f;        // get rid of hi bit
-            }
-        }
-      /* the co++ is done here so that the column will
-         not be overwritten when we blank-out the rest of line */
+         }
+      }
+      // the co++ is done here so that the column will
+      // not be overwritten when we blank-out the rest of line
       dest[co] = c;
       if (src >= end)
         break;
-    }
+  }
 }
 
 //----- Refresh the changed screen lines -----------------------
@@ -4364,8 +3850,7 @@ format_line (Byte * dest, Byte * src, int li)
 // if the current screenline is different from the new buffer.
 // If they differ then that line needs redrawing on the terminal.
 //
-static void
-refresh (int full_screen)
+static void refresh(int full_screen)
 {
   static int old_offset;
   int li, changed;
@@ -4382,8 +3867,7 @@ refresh (int full_screen)
   tp = screenbegin;             // index into text[] of top line
 
   // compare text[] to screen[] and mark screen[] lines that need updating
-  for (li = 0; li < rows - 1; li++)
-    {
+  for (li = 0; li < rows - 1; li++) {
       int cs, ce;               // column start & end
       memset (buf, ' ', MAX_SCR_COLS);  // blank-out the buffer
       buf[MAX_SCR_COLS - 1] = 0;  // NULL terminate the buffer
@@ -4398,65 +3882,49 @@ refresh (int full_screen)
       cs = 0;
       ce = columns - 1;
       sp = &screen[li * columns]; // start of screen line
-      if (full_screen == TRUE)
-        {
+      if (full_screen == TRUE) {
           // force re-draw of every single column from 0 - columns-1
           goto re0;
-        }
+      }
       // compare newly formatted buffer with virtual screen
       // look forward for first difference between buf and screen
-      for (; cs <= ce; cs++)
-        {
-          if (buf[cs + offset] != sp[cs])
-            {
+      for (; cs <= ce; cs++) {
+          if (buf[cs + offset] != sp[cs]) {
               changed = TRUE;   // mark for redraw
               break;
-            }
-        }
+         }
+      }
 
       // look backward for last difference between buf and screen
-      for (; ce >= cs; ce--)
-        {
-          if (buf[ce + offset] != sp[ce])
-            {
+      for (; ce >= cs; ce--) {
+          if (buf[ce + offset] != sp[ce]) {
               changed = TRUE;   // mark for redraw
               break;
-            }
-        }
+         }
+      }
       // now, cs is index of first diff, and ce is index of last diff
 
       // if horz offset has changed, force a redraw
-      if (offset != old_offset)
-        {
+      if (offset != old_offset) {
         re0:
           changed = TRUE;
-        }
+      }
 
       // make a sanity check of columns indexes
-      if (cs < 0)
-        cs = 0;
-      if (ce > columns - 1)
-        ce = columns - 1;
-      if (cs > ce)
-        {
-          cs = 0;
-          ce = columns - 1;
-        }
+      if (cs < 0) cs = 0;
+      if (ce > columns - 1) ce = columns - 1;
+      if (cs > ce) { cs = 0; ce = columns - 1; }
       // is there a change between vitual screen and buf
-      if (changed == TRUE)
-        {
+      if (changed == TRUE) {
           //  copy changed part of buffer to virtual screen
           memmove (sp + cs, buf + (cs + offset), ce - cs + 1);
 
           // move cursor to column of first change
-          if (offset != old_offset)
-            {
+          if (offset != old_offset) {
               // opti_cur_move is still too stupid
               // to handle offsets correctly
               place_cursor (li, cs, FALSE);
-            }
-          else
-            {
+         } else {
 #ifdef BB_FEATURE_VI_OPTIMIZE_CURSOR
               // if this just the next line
               //  try to optimize cursor movement
@@ -4466,15 +3934,15 @@ refresh (int full_screen)
 #else /* BB_FEATURE_VI_OPTIMIZE_CURSOR */
               place_cursor (li, cs, FALSE); // use standard ESC sequence
 #endif /* BB_FEATURE_VI_OPTIMIZE_CURSOR */
-            }
+         }
 
           // write line out to terminal
           write (1, sp + cs, ce - cs + 1);
 #ifdef BB_FEATURE_VI_OPTIMIZE_CURSOR
           last_row = li;
 #endif /* BB_FEATURE_VI_OPTIMIZE_CURSOR */
-        }
-    }
+      }
+  }
 
 #ifdef BB_FEATURE_VI_OPTIMIZE_CURSOR
   place_cursor (crow, ccol, (crow == last_row) ? TRUE : FALSE);