summaryrefslogtreecommitdiff
path: root/editors
diff options
context:
space:
mode:
Diffstat (limited to 'editors')
-rw-r--r--editors/vi.c869
1 files changed, 445 insertions, 424 deletions
diff --git a/editors/vi.c b/editors/vi.c
index 77967fb..bd169b0 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -87,7 +87,9 @@ enum {
S_END_ALNUM = 5, // used in skip_thing() for moving "dot"
};
-typedef unsigned char Byte;
+/* vi.c expects chars to be unsigned. */
+/* busybox build system provides that, but it's better */
+/* to audit and fix the source */
static int vi_setops;
#define VI_AUTOINDENT 1
@@ -112,21 +114,21 @@ static fd_set rfds; // use select() for small sleeps
static struct timeval tv; // use select() for small sleeps
static int rows, columns; // the terminal screen is this size
static int crow, ccol, offset; // cursor is on Crow x Ccol with Horz Ofset
-static Byte *status_buffer; // mesages to the user
+static char *status_buffer; // mesages to the user
#define STATUS_BUFFER_LEN 200
static int have_status_msg; // is default edit status needed?
static int last_status_cksum; // hash of current status line
-static Byte *cfn; // previous, current, and next file name
-static Byte *text, *end; // pointers to the user data in memory
-static Byte *screen; // pointer to the virtual screen buffer
+static char *cfn; // previous, current, and next file name
+static char *text, *end; // pointers to the user data in memory
+static char *screen; // pointer to the virtual screen buffer
static int screensize; // and its size
-static Byte *screenbegin; // index into text[], of top line on the screen
-static Byte *dot; // where all the action takes place
+static char *screenbegin; // index into text[], of top line on the screen
+static char *dot; // where all the action takes place
static int tabstop;
static struct termios term_orig, term_vi; // remember what the cooked mode was
-static Byte erase_char; // the users erase character
-static Byte last_input_char; // last char read from user
-static Byte last_forward_char; // last char searched for with 'f'
+static char erase_char; // the users erase character
+static char last_input_char; // last char read from user
+static char last_forward_char; // last char searched for with 'f'
#if ENABLE_FEATURE_VI_OPTIMIZE_CURSOR
static int last_row; // where the cursor was last moved to
@@ -139,38 +141,38 @@ static int my_pid;
#endif
#if ENABLE_FEATURE_VI_DOT_CMD
static int adding2q; // are we currently adding user input to q
-static Byte *last_modifying_cmd; // last modifying cmd for "."
-static Byte *ioq, *ioq_start; // pointer to string for get_one_char to "read"
+static char *last_modifying_cmd; // last modifying cmd for "."
+static char *ioq, *ioq_start; // pointer to string for get_one_char to "read"
#endif
#if ENABLE_FEATURE_VI_DOT_CMD || ENABLE_FEATURE_VI_YANKMARK
-static Byte *modifying_cmds; // cmds that modify text[]
+static char *modifying_cmds; // cmds that modify text[]
#endif
#if ENABLE_FEATURE_VI_READONLY
static int vi_readonly, readonly;
#endif
#if ENABLE_FEATURE_VI_YANKMARK
-static Byte *reg[28]; // named register a-z, "D", and "U" 0-25,26,27
+static char *reg[28]; // named register a-z, "D", and "U" 0-25,26,27
static int YDreg, Ureg; // default delete register and orig line for "U"
-static Byte *mark[28]; // user marks points somewhere in text[]- a-z and previous context ''
-static Byte *context_start, *context_end;
+static char *mark[28]; // user marks points somewhere in text[]- a-z and previous context ''
+static char *context_start, *context_end;
#endif
#if ENABLE_FEATURE_VI_SEARCH
-static Byte *last_search_pattern; // last pattern from a '/' or '?' search
-#endif
-
-
-static void edit_file(Byte *); // edit one file
-static void do_cmd(Byte); // execute a command
-static void sync_cursor(Byte *, int *, int *); // synchronize the screen cursor to dot
-static Byte *begin_line(Byte *); // return pointer to cur line B-o-l
-static Byte *end_line(Byte *); // return pointer to cur line E-o-l
-static Byte *prev_line(Byte *); // return pointer to prev line B-o-l
-static Byte *next_line(Byte *); // return pointer to next line B-o-l
-static Byte *end_screen(void); // get pointer to last char on screen
-static int count_lines(Byte *, Byte *); // count line from start to stop
-static Byte *find_line(int); // find begining of line #li
-static Byte *move_to_col(Byte *, int); // move "p" to column l
-static int isblnk(Byte); // is the char a blank or tab
+static char *last_search_pattern; // last pattern from a '/' or '?' search
+#endif
+
+
+static void edit_file(char *); // edit one file
+static void do_cmd(char); // execute a command
+static void sync_cursor(char *, int *, int *); // synchronize the screen cursor to dot
+static char *begin_line(char *); // return pointer to cur line B-o-l
+static char *end_line(char *); // return pointer to cur line E-o-l
+static char *prev_line(char *); // return pointer to prev line B-o-l
+static char *next_line(char *); // return pointer to next line B-o-l
+static char *end_screen(void); // get pointer to last char on screen
+static int count_lines(char *, char *); // count line from start to stop
+static char *find_line(int); // find begining of line #li
+static char *move_to_col(char *, int); // move "p" to column l
+static int isblnk(char); // is the char a blank or tab
static void dot_left(void); // move dot left- dont leave line
static void dot_right(void); // move dot right- dont leave line
static void dot_begin(void); // move dot to B-o-l
@@ -180,27 +182,27 @@ static void dot_prev(void); // move dot to prev line B-o-l
static void dot_scroll(int, int); // move the screen up or down
static void dot_skip_over_ws(void); // move dot pat WS
static void dot_delete(void); // delete the char at 'dot'
-static Byte *bound_dot(Byte *); // make sure text[0] <= P < "end"
-static Byte *new_screen(int, int); // malloc virtual screen memory
-static Byte *new_text(int); // malloc memory for text[] buffer
-static Byte *char_insert(Byte *, Byte); // insert the char c at 'p'
-static Byte *stupid_insert(Byte *, Byte); // stupidly insert the char c at 'p'
-static Byte find_range(Byte **, Byte **, Byte); // return pointers for an object
-static int st_test(Byte *, int, int, Byte *); // helper for skip_thing()
-static Byte *skip_thing(Byte *, int, int, int); // skip some object
-static Byte *find_pair(Byte *, Byte); // find matching pair () [] {}
-static Byte *text_hole_delete(Byte *, Byte *); // at "p", delete a 'size' byte hole
-static Byte *text_hole_make(Byte *, int); // at "p", make a 'size' byte hole
-static Byte *yank_delete(Byte *, Byte *, int, int); // yank text[] into register then delete
+static char *bound_dot(char *); // make sure text[0] <= P < "end"
+static char *new_screen(int, int); // malloc virtual screen memory
+static char *new_text(int); // malloc memory for text[] buffer
+static char *char_insert(char *, char); // insert the char c at 'p'
+static char *stupid_insert(char *, char); // stupidly insert the char c at 'p'
+static char find_range(char **, char **, char); // return pointers for an object
+static int st_test(char *, int, int, char *); // helper for skip_thing()
+static char *skip_thing(char *, int, int, int); // skip some object
+static char *find_pair(char *, char); // find matching pair () [] {}
+static char *text_hole_delete(char *, char *); // at "p", delete a 'size' byte hole
+static char *text_hole_make(char *, int); // at "p", make a 'size' byte hole
+static char *yank_delete(char *, char *, int, int); // yank text[] into register then delete
static void show_help(void); // display some help info
static void rawmode(void); // set "raw" mode on tty
static void cookmode(void); // return to "cooked" mode on tty
static int mysleep(int); // sleep for 'h' 1/100 seconds
-static Byte readit(void); // read (maybe cursor) key from stdin
-static Byte get_one_char(void); // read 1 char from stdin
-static int file_size(const Byte *); // what is the byte size of "fn"
-static int file_insert(Byte *, Byte *, int);
-static int file_write(Byte *, Byte *, Byte *);
+static char readit(void); // read (maybe cursor) key from stdin
+static char get_one_char(void); // read 1 char from stdin
+static int file_size(const char *); // what is the byte size of "fn"
+static int file_insert(char *, char *, int);
+static int file_write(char *, char *, char *);
static void place_cursor(int, int, int);
static void screen_erase(void);
static void clear_to_eol(void);
@@ -211,10 +213,10 @@ static void flash(int); // flash the terminal screen
static void show_status_line(void); // put a message on the bottom line
static void psb(const char *, ...); // Print Status Buf
static void psbs(const char *, ...); // Print Status Buf in standout mode
-static void ni(Byte *); // display messages
+static void ni(const char *); // display messages
static int format_edit_status(void); // format file status on status line
static void redraw(int); // force a full screen refresh
-static void format_line(Byte*, Byte*, int);
+static void format_line(char*, char*, int);
static void refresh(int); // update the terminal from screen[]
static void Indicate_Error(void); // use flash or beep to indicate error
@@ -222,13 +224,13 @@ static void Indicate_Error(void); // use flash or beep to indicate error
static void Hit_Return(void);
#if ENABLE_FEATURE_VI_SEARCH
-static Byte *char_search(Byte *, Byte *, int, int); // search for pattern starting at p
-static int mycmp(Byte *, Byte *, int); // string cmp based in "ignorecase"
+static char *char_search(char *, const char *, int, int); // search for pattern starting at p
+static int mycmp(const char *, const char *, int); // string cmp based in "ignorecase"
#endif
#if ENABLE_FEATURE_VI_COLON
-static Byte *get_one_address(Byte *, int *); // get colon addr, if present
-static Byte *get_address(Byte *, int *, int *); // get two colon addrs, if present
-static void colon(Byte *); // execute the "colon" mode cmds
+static char *get_one_address(char *, int *); // get colon addr, if present
+static char *get_address(char *, int *, int *); // get two colon addrs, if present
+static void colon(char *); // execute the "colon" mode cmds
#endif
#if ENABLE_FEATURE_VI_USE_SIGNALS
static void winch_sig(int); // catch window size changes
@@ -236,21 +238,21 @@ static void suspend_sig(int); // catch ctrl-Z
static void catch_sig(int); // catch ctrl-C and alarm time-outs
#endif
#if ENABLE_FEATURE_VI_DOT_CMD
-static void start_new_cmd_q(Byte); // new queue for command
+static void start_new_cmd_q(char); // new queue for command
static void end_cmd_q(void); // stop saving input chars
#else
#define end_cmd_q() ((void)0)
#endif
#if ENABLE_FEATURE_VI_SETOPTS
-static void showmatching(Byte *); // show the matching pair () [] {}
+static void showmatching(char *); // show the matching pair () [] {}
#endif
#if ENABLE_FEATURE_VI_YANKMARK || (ENABLE_FEATURE_VI_COLON && ENABLE_FEATURE_VI_SEARCH) || ENABLE_FEATURE_VI_CRASHME
-static Byte *string_insert(Byte *, Byte *); // insert the string at 'p'
+static char *string_insert(char *, char *); // insert the string at 'p'
#endif
#if ENABLE_FEATURE_VI_YANKMARK
-static Byte *text_yank(Byte *, Byte *, int); // save copy of "p" into a register
-static Byte what_reg(void); // what is letter of current YDreg
-static void check_context(Byte); // remember context for '' command
+static char *text_yank(char *, char *, int); // save copy of "p" into a register
+static char what_reg(void); // what is letter of current YDreg
+static void check_context(char); // remember context for '' command
#endif
#if ENABLE_FEATURE_VI_CRASHME
static void crash_dummy();
@@ -278,10 +280,10 @@ int vi_main(int argc, char **argv)
my_pid = getpid();
#endif
#if ENABLE_FEATURE_VI_CRASHME
- (void) srand((long) my_pid);
+ srand((long) my_pid);
#endif
- status_buffer = (Byte *)STATUS_BUFFER;
+ status_buffer = STATUS_BUFFER;
last_status_cksum = 0;
#if ENABLE_FEATURE_VI_READONLY
@@ -298,7 +300,7 @@ int vi_main(int argc, char **argv)
} // init the yank regs
#endif
#if ENABLE_FEATURE_VI_DOT_CMD || ENABLE_FEATURE_VI_YANKMARK
- modifying_cmds = (Byte *) "aAcCdDiIJoOpPrRsxX<>~"; // cmds modifying text[]
+ modifying_cmds = (char *) "aAcCdDiIJoOpPrRsxX<>~"; // cmds modifying text[]
#endif
// 1- process $HOME/.exrc file (not inplemented yet)
@@ -349,7 +351,7 @@ int vi_main(int argc, char **argv)
for (; optind < argc; optind++) {
editing = 1; // 0=exit, 1=one file, 2+ =many files
free(cfn);
- cfn = (Byte *) xstrdup(argv[optind]);
+ cfn = xstrdup(argv[optind]);
edit_file(cfn);
}
}
@@ -358,22 +360,22 @@ int vi_main(int argc, char **argv)
return 0;
}
-static void edit_file(Byte * fn)
+static void edit_file(char * fn)
{
- Byte c;
+ char c;
int cnt, size, ch;
#if ENABLE_FEATURE_VI_USE_SIGNALS
int sig;
#endif
#if ENABLE_FEATURE_VI_YANKMARK
- static Byte *cur_line;
+ static char *cur_line;
#endif
rawmode();
rows = 24;
columns = 80;
- ch= -1;
+ ch = -1;
if (ENABLE_FEATURE_VI_WIN_RESIZE)
get_terminal_width_height(0, &columns, &rows);
new_screen(rows, columns); // get memory for virtual screen
@@ -383,10 +385,10 @@ static void edit_file(Byte * fn)
new_text(size); // get a text[] buffer
screenbegin = dot = end = text;
if (fn != 0) {
- ch= file_insert(fn, text, cnt);
+ ch = file_insert(fn, text, cnt);
}
if (ch < 1) {
- (void) char_insert(text, '\n'); // start empty buf with dummy line
+ char_insert(text, '\n'); // start empty buf with dummy line
}
file_modified = 0;
last_file_modified = -1;
@@ -422,7 +424,7 @@ static void edit_file(Byte * fn)
#if ENABLE_FEATURE_VI_DOT_CMD
free(last_modifying_cmd);
free(ioq_start);
- ioq = ioq_start = last_modifying_cmd = 0;
+ ioq = ioq_start = last_modifying_cmd = NULL;
adding2q = 0;
#endif
redraw(FALSE); // dont force every col re-draw
@@ -455,8 +457,7 @@ static void edit_file(Byte * fn)
crash_dummy(); // generate a random command
} 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, "\n\n##### Ran out of text to work on. #####\n\n"); // insert the string
refresh(FALSE);
}
}
@@ -473,7 +474,8 @@ static void 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(modifying_cmds, c)
+ ) {
start_new_cmd_q(c);
}
#endif
@@ -501,16 +503,16 @@ static void edit_file(Byte * fn)
//----- The Colon commands -------------------------------------
#if ENABLE_FEATURE_VI_COLON
-static Byte *get_one_address(Byte * p, int *addr) // get colon addr, if present
+static char *get_one_address(char * p, int *addr) // get colon addr, if present
{
int st;
- Byte *q;
+ char *q;
#if ENABLE_FEATURE_VI_YANKMARK
- Byte c;
+ char c;
#endif
#if ENABLE_FEATURE_VI_SEARCH
- Byte *pat, buf[BUFSIZ];
+ char *pat, buf[BUFSIZ];
#endif
*addr = -1; // assume no addr
@@ -526,7 +528,7 @@ static Byte *get_one_address(Byte * p, int *addr) // get colon addr, if present
if (c >= 'a' && c <= 'z') {
// we have a mark
c = c - 'a';
- q = mark[(int) c];
+ q = mark[(unsigned char) c];
if (q != NULL) { // is mark valid
*addr = count_lines(text, q); // count lines
}
@@ -541,7 +543,7 @@ static Byte *get_one_address(Byte * p, int *addr) // get colon addr, if present
*q++ = *p;
*q = '\0';
}
- pat = (Byte *) xstrdup((char *) buf); // save copy of pattern
+ pat = xstrdup(buf); // save copy of pattern
if (*p == '/')
p++;
q = char_search(dot, pat, FORWARD, FULL);
@@ -555,7 +557,7 @@ static Byte *get_one_address(Byte * p, int *addr) // get colon addr, if present
q = begin_line(end - 1);
*addr = count_lines(text, q);
} else if (isdigit(*p)) { // specific line number
- sscanf((char *) p, "%d%n", addr, &st);
+ sscanf(p, "%d%n", addr, &st);
p += st;
} else { // I don't reconise this
// unrecognised address- assume -1
@@ -564,7 +566,7 @@ static Byte *get_one_address(Byte * p, int *addr) // get colon addr, if present
return p;
}
-static Byte *get_address(Byte *p, int *b, int *e) // get two colon addrs, if present
+static char *get_address(char *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
@@ -586,33 +588,34 @@ static Byte *get_address(Byte *p, int *b, int *e) // get two colon addrs, if pre
// get SECOND addr, if present
p = get_one_address(p, e);
}
-ga0:
+ ga0:
while (isblnk(*p))
p++; // skip over trailing spaces
return p;
}
#if ENABLE_FEATURE_VI_SET && ENABLE_FEATURE_VI_SETOPTS
-static void setops(const Byte *args, const char *opname, int flg_no,
+static void setops(const char *args, const char *opname, int flg_no,
const char *short_opname, int opt)
{
- const char *a = (char *) args + flg_no;
+ const char *a = args + flg_no;
int l = strlen(opname) - 1; /* opname have + ' ' */
- if (strncasecmp(a, opname, l) == 0 ||
- strncasecmp(a, short_opname, 2) == 0) {
- if(flg_no)
+ if (strncasecmp(a, opname, l) == 0
+ || strncasecmp(a, short_opname, 2) == 0
+ ) {
+ if (flg_no)
vi_setops &= ~opt;
- else
+ else
vi_setops |= opt;
}
}
#endif
-static void colon(Byte * buf)
+static void colon(char * buf)
{
- Byte c, *orig_buf, *buf1, *q, *r;
- Byte *fn, cmd[BUFSIZ], args[BUFSIZ];
+ char c, *orig_buf, *buf1, *q, *r;
+ char *fn, cmd[BUFSIZ], args[BUFSIZ];
int i, l, li, ch, b, e;
int useforce = FALSE, forced = FALSE;
struct stat st_buf;
@@ -632,7 +635,7 @@ static void colon(Byte * buf)
// :!<cmd> // run <cmd> then return
//
- if (strlen((char *) buf) <= 0)
+ if (!buf[0])
goto vc1;
if (*buf == ':')
buf++; // move past the ':'
@@ -662,8 +665,8 @@ static void colon(Byte * buf)
// get any ARGuments
while (isblnk(*buf))
buf++;
- strcpy((char *) args, (char *) buf);
- buf1 = (Byte*)last_char_is((char *)cmd, '!');
+ strcpy(args, buf);
+ buf1 = last_char_is(cmd, '!');
if (buf1) {
useforce = TRUE;
*buf1 = '\0'; // get rid of !
@@ -685,7 +688,7 @@ static void colon(Byte * buf)
li = e - b + 1;
}
// ------------ now look for the command ------------
- i = strlen((char *) cmd);
+ i = strlen(cmd);
if (i == 0) { // :123CR goto line #123
if (b >= 0) {
dot = find_line(b); // what line is #b
@@ -693,31 +696,31 @@ static void colon(Byte * buf)
}
}
#if ENABLE_FEATURE_ALLOW_EXEC
- else if (strncmp((char *) cmd, "!", 1) == 0) { // run a cmd
+ else if (strncmp(cmd, "!", 1) == 0) { // run a cmd
// :!ls run the <cmd>
- (void) alarm(0); // wait for input- no alarms
+ 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((char*)(orig_buf+1)); // run the cmd
+ system(orig_buf + 1); // run the cmd
rawmode();
Hit_Return(); // let user see results
- (void) alarm(3); // done waiting for input
+ alarm(3); // done waiting for input
}
#endif
- else if (strncmp((char *) cmd, "=", i) == 0) { // where is the address
+ else if (strncmp(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
+ } else if (strncasecmp(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 (strncasecmp((char *) cmd, "edit", i) == 0) { // Edit a file
+ } else if (strncasecmp(cmd, "edit", i) == 0) { // Edit a file
int sr;
sr= 0;
// don't edit, if the current file has been modified
@@ -725,10 +728,10 @@ static void colon(Byte * buf)
psbs("No write since last change (:edit! overrides)");
goto vc1;
}
- if (strlen((char*)args) > 0) {
+ if (args[0]) {
// the user supplied a file name
fn= args;
- } else if (cfn != 0 && strlen((char*)cfn) > 0) {
+ } else if (cfn && cfn[0]) {
// no user supplied name- use the current filename
fn= cfn;
goto vc5;
@@ -739,13 +742,14 @@ static void colon(Byte * buf)
}
// see if file exists- if not, its just a new file request
- if ((sr=stat((char*)fn, &st_buf)) < 0) {
+ sr = stat(fn, &st_buf);
+ if (sr < 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) {
+ if ((st_buf.st_mode & S_IFREG) == 0) {
// This is not a regular file
psbs("\"%s\" is not a regular file", fn);
goto vc1;
@@ -759,7 +763,7 @@ static void colon(Byte * buf)
// There is a read-able regular file
// make this the current file
- q = (Byte *) xstrdup((char *) fn); // save the cfn
+ q = xstrdup(fn); // save the cfn
free(cfn); // free the old name
cfn = q; // remember new cfn
@@ -773,8 +777,8 @@ static void colon(Byte * buf)
if (ch < 1) {
// start empty buf with dummy line
- (void) char_insert(text, '\n');
- ch= 1;
+ char_insert(text, '\n');
+ ch = 1;
}
file_modified = 0;
last_file_modified = -1;
@@ -803,20 +807,20 @@ static void colon(Byte * buf)
((vi_readonly || readonly) ? " [Read only]" : ""),
#endif
li, ch);
- } else if (strncasecmp((char *) cmd, "file", i) == 0) { // what File is this
+ } else if (strncasecmp(cmd, "file", i) == 0) { // what File is this
if (b != -1 || e != -1) {
- ni((Byte *) "No address allowed on this command");
+ ni("No address allowed on this command");
goto vc1;
}
- if (strlen((char *) args) > 0) {
+ if (args[0]) {
// user wants a new filename
free(cfn);
- cfn = (Byte *) xstrdup((char *) args);
+ cfn = xstrdup(args);
} else {
// user wants file status info
last_status_cksum = 0; // force status update
}
- } else if (strncasecmp((char *) cmd, "features", i) == 0) { // what features are available
+ } else if (strncasecmp(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
@@ -824,7 +828,7 @@ static void colon(Byte * buf)
show_help();
rawmode();
Hit_Return();
- } else if (strncasecmp((char *) cmd, "list", i) == 0) { // literal print line
+ } else if (strncasecmp(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);
@@ -845,10 +849,10 @@ static void colon(Byte * buf)
write1("$\r");
} else if (c < ' ' || c == 127) {
putchar('^');
- if(c == 127)
+ if (c == 127)
c = '?';
- else
- c += '@';
+ else
+ c += '@';
}
putchar(c);
if (c_is_no_print)
@@ -858,8 +862,9 @@ static void colon(Byte * buf)
vc2:
#endif
Hit_Return();
- } else if ((strncasecmp((char *) cmd, "quit", i) == 0) || // Quit
- (strncasecmp((char *) cmd, "next", i) == 0)) { // edit next file
+ } else if (strncasecmp(cmd, "quit", i) == 0 // Quit
+ || strncasecmp(cmd, "next", i) == 0 // edit next file
+ ) {
if (useforce) {
// force end of argv list
if (*cmd == 'q') {
@@ -884,9 +889,9 @@ static void colon(Byte * buf)
goto vc1;
}
editing = 0;
- } else if (strncasecmp((char *) cmd, "read", i) == 0) { // read file into text[]
+ } else if (strncasecmp(cmd, "read", i) == 0) { // read file into text[]
fn = args;
- if (strlen((char *) fn) <= 0) {
+ if (!fn[0]) {
psbs("No filename given");
goto vc1;
}
@@ -897,7 +902,7 @@ static void colon(Byte * buf)
if (b != 0)
q = next_line(q);
#if ENABLE_FEATURE_VI_READONLY
- l= readonly; // remember current files' status
+ l = readonly; // remember current files' status
#endif
ch = file_insert(fn, q, file_size(fn));
#if ENABLE_FEATURE_VI_READONLY
@@ -922,7 +927,7 @@ static void colon(Byte * buf)
dot += ch;
file_modified++;
}
- } else if (strncasecmp((char *) cmd, "rewind", i) == 0) { // rewind cmd line args
+ } else if (strncasecmp(cmd, "rewind", i) == 0) { // rewind cmd line args
if (file_modified && ! useforce) {
psbs("No write since last change (:rewind! overrides)");
} else {
@@ -959,7 +964,7 @@ static void colon(Byte * buf)
goto vc2;
}
#if ENABLE_FEATURE_VI_SETOPTS
- argp = (char *)args;
+ argp = args;
while (*argp) {
if (strncasecmp(argp, "no", 2) == 0)
i = 2; // ":set noautoindent"
@@ -969,7 +974,7 @@ static void colon(Byte * buf)
setops(argp, "showmatch ", i, "ic", VI_SHOWMATCH);
/* tabstopXXXX */
if (strncasecmp(argp + i, "tabstop=%d ", 7) == 0) {
- sscanf(strchr(argp + i, '='), "=%d", &ch);
+ sscanf(strchr(argp + i, '='), "tabstop=%d" + 7, &ch);
if (ch > 0 && ch < columns - 1)
tabstop = ch;
}
@@ -981,8 +986,8 @@ static void colon(Byte * buf)
#endif /* FEATURE_VI_SETOPTS */
#endif /* FEATURE_VI_SET */
#if ENABLE_FEATURE_VI_SEARCH
- } else if (strncasecmp((char *) cmd, "s", 1) == 0) { // substitute a pattern with a replacement pattern
- Byte *ls, *F, *R;
+ } else if (strncasecmp(cmd, "s", 1) == 0) { // substitute a pattern with a replacement pattern
+ char *ls, *F, *R;
int gflag;
// F points to the "find" pattern
@@ -991,10 +996,10 @@ static void colon(Byte * buf)
gflag = 0; // global replace flag
c = orig_buf[1]; // what is the delimiter
F = orig_buf + 2; // start of "find"
- R = (Byte *) strchr((char *) F, c); // middle delimiter
+ R = strchr(F, c); // middle delimiter
if (!R) goto colon_s_fail;
*R++ = '\0'; // terminate "find"
- buf1 = (Byte *) strchr((char *) R, c);
+ buf1 = strchr(R, c);
if (!buf1) goto colon_s_fail;
*buf1++ = '\0'; // terminate "replace"
if (*buf1 == 'g') { // :s/foo/bar/g
@@ -1010,17 +1015,17 @@ static void colon(Byte * buf)
e = b; // maybe :.s/foo/bar/
for (i = b; i <= e; i++) { // so, :20,23 s \0 find \0 replace \0
ls = q; // orig line start
- vc4:
+ vc4:
buf1 = char_search(q, F, FORWARD, LIMITED); // search cur line only for "find"
- if (buf1 != NULL) {
- // we found the "find" pattern- delete it
- (void) text_hole_delete(buf1, buf1 + strlen((char *) F) - 1);
+ if (buf1) {
+ // we found the "find" pattern - delete it
+ text_hole_delete(buf1, buf1 + strlen(F) - 1);
// inset the "replace" patern
- (void) string_insert(buf1, R); // insert the string
+ 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)) {
- q = buf1 + strlen((char *) R);
+ if ((buf1 + strlen(R)) < end_line(ls)) {
+ q = buf1 + strlen(R);
goto vc4; // don't let q move past cur line
}
}
@@ -1028,14 +1033,15 @@ static void colon(Byte * buf)
q = next_line(ls);
}
#endif /* FEATURE_VI_SEARCH */
- } else if (strncasecmp((char *) cmd, "version", i) == 0) { // show software version
+ } else if (strncasecmp(cmd, "version", i) == 0) { // show software version
psb("%s", BB_VER " " BB_BT);
- } else if (strncasecmp((char *) cmd, "write", i) == 0 // write text to file
- || strncasecmp((char *) cmd, "wq", i) == 0
- || strncasecmp((char *) cmd, "wn", i) == 0
- || strncasecmp((char *) cmd, "x", i) == 0) {
+ } else if (strncasecmp(cmd, "write", i) == 0 // write text to file
+ || strncasecmp(cmd, "wq", i) == 0
+ || strncasecmp(cmd, "wn", i) == 0
+ || strncasecmp(cmd, "x", i) == 0
+ ) {
// is there a file name to write to?
- if (strlen((char *) args) > 0) {
+ if (args[0]) {
fn = args;
}
#if ENABLE_FEATURE_VI_READONLY
@@ -1080,7 +1086,7 @@ static void colon(Byte * buf)
vc3:;
#endif
#if ENABLE_FEATURE_VI_YANKMARK
- } else if (strncasecmp((char *) cmd, "yank", i) == 0) { // yank lines
+ } else if (strncasecmp(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);
@@ -1088,17 +1094,17 @@ static void colon(Byte * buf)
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());
+ li, strlen(reg[YDreg]), what_reg());
#endif
} else {
// cmd unknown
- ni((Byte *) cmd);
+ ni(cmd);
}
- vc1:
+ vc1:
dot = bound_dot(dot); // make sure "dot" is valid
return;
#if ENABLE_FEATURE_VI_SEARCH
-colon_s_fail:
+ colon_s_fail:
psb(":s expression missing delimiters");
#endif
}
@@ -1118,11 +1124,11 @@ static void Hit_Return(void)
}
//----- Synchronize the cursor to Dot --------------------------
-static void sync_cursor(Byte * d, int *row, int *col)
+static void sync_cursor(char * d, int *row, int *col)
{
- Byte *beg_cur; // begin and end of "d" line
- Byte *end_scr; // begin and end of screen
- Byte *tp;
+ char *beg_cur; // begin and end of "d" line
+ char *end_scr; // begin and end of screen
+ char *tp;
int cnt, ro, co;
beg_cur = begin_line(d); // first char of cur line
@@ -1133,7 +1139,7 @@ static void sync_cursor(Byte * d, int *row, int *col)
// "d" is before top line on screen
// how many lines do we have to move
cnt = count_lines(beg_cur, screenbegin);
- sc1:
+ sc1:
screenbegin = beg_cur;
if (cnt > (rows - 1) / 2) {
// we moved too many lines. put "dot" in middle of screen
@@ -1207,21 +1213,21 @@ static void 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 char *begin_line(char * 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 char *end_line(char * 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 inline Byte *dollar_line(Byte * p) // return pointer to just before NL line
+static inline char *dollar_line(char * p) // return pointer to just before NL line
{
while (p < end - 1 && *p != '\n')
p++; // go to cur line E-o-l
@@ -1231,7 +1237,7 @@ static inline Byte *dollar_line(Byte * p) // return pointer to just before NL li
return p;
}
-static Byte *prev_line(Byte * p) // return pointer first char prev line
+static char *prev_line(char * p) // return pointer first char prev line
{
p = begin_line(p); // goto begining of cur line
if (p[-1] == '\n' && p > text)
@@ -1240,7 +1246,7 @@ static Byte *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 char *next_line(char * p) // return pointer first char next line
{
p = end_line(p);
if (*p == '\n' && p < end - 1)
@@ -1249,9 +1255,9 @@ static Byte *next_line(Byte * p) // return pointer first char next line
}
//----- Text Information Routines ------------------------------
-static Byte *end_screen(void)
+static char *end_screen(void)
{
- Byte *q;
+ char *q;
int cnt;
// find new bottom line
@@ -1262,9 +1268,9 @@ static Byte *end_screen(void)
return q;
}
-static int count_lines(Byte * start, Byte * stop) // count line from start to stop
+static int count_lines(char * start, char * stop) // count line from start to stop
{
- Byte *q;
+ char *q;
int cnt;
if (stop < start) { // start and stop are backwards- reverse them
@@ -1281,9 +1287,9 @@ static int count_lines(Byte * start, Byte * stop) // count line from start to st
return cnt;
}
-static Byte *find_line(int li) // find begining of line #li
+static char *find_line(int li) // find begining of line #li
{
- Byte *q;
+ char *q;
for (q = text; li > 1; li--) {
q = next_line(q);
@@ -1314,7 +1320,7 @@ 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 char *move_to_col(char * p, int l)
{
int co;
@@ -1345,7 +1351,7 @@ static void dot_prev(void)
static void dot_scroll(int cnt, int dir)
{
- Byte *q;
+ char *q;
for (; cnt > 0; cnt--) {
if (dir < 0) {
@@ -1376,10 +1382,10 @@ static void dot_skip_over_ws(void)
static void dot_delete(void) // delete the char at 'dot'
{
- (void) text_hole_delete(dot, dot);
+ text_hole_delete(dot, dot);
}
-static Byte *bound_dot(Byte * p) // make sure text[0] <= P < "end"
+static char *bound_dot(char * p) // make sure text[0] <= P < "end"
{
if (p >= end && end > text) {
p = end - 1;
@@ -1405,7 +1411,7 @@ static Byte *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 char *new_screen(int ro, int co)
{
int li;
@@ -1421,7 +1427,7 @@ static Byte *new_screen(int ro, int co)
return screen;
}
-static Byte *new_text(int size)
+static char *new_text(int size)
{
if (size < 10240)
size = 10240; // have a minimum size for new files
@@ -1433,26 +1439,27 @@ static Byte *new_text(int size)
}
#if ENABLE_FEATURE_VI_SEARCH
-static int mycmp(Byte * s1, Byte * s2, int len)
+static int mycmp(const char * s1, const char * s2, int len)
{
int i;
- i = strncmp((char *) s1, (char *) s2, len);
+ i = strncmp(s1, s2, len);
#if ENABLE_FEATURE_VI_SETOPTS
if (ignorecase) {
- i = strncasecmp((char *) s1, (char *) s2, len);
+ i = strncasecmp(s1, s2, len);
}
#endif
return i;
}
-static Byte *char_search(Byte * p, Byte * pat, int dir, int range) // search for pattern starting at p
+// search for pattern starting at p
+static char *char_search(char * p, const char * pat, int dir, int range)
{
#ifndef REGEX_SEARCH
- Byte *start, *stop;
+ char *start, *stop;
int len;
- len = strlen((char *) pat);
+ len = strlen(pat);
if (dir == FORWARD) {
stop = end - 1; // assume range is p - end-1
if (range == LIMITED)
@@ -1474,7 +1481,7 @@ static Byte *char_search(Byte * p, Byte * pat, int dir, int range) // search for
}
// pattern not found
return NULL;
-#else /*REGEX_SEARCH */
+#else /* REGEX_SEARCH */
char *q;
struct re_pattern_buffer preg;
int i;
@@ -1501,7 +1508,7 @@ static Byte *char_search(Byte * p, Byte * pat, int dir, int range) // search for
// RANGE could be negative if we are searching backwards
range = q - p;
- q = (char *) re_compile_pattern(pat, strlen((char *) pat), &preg);
+ q = re_compile_pattern(pat, strlen(pat), &preg);
if (q != 0) {
// The pattern was not compiled
psbs("bad search pattern: \"%s\": %s", pat, q);
@@ -1528,7 +1535,7 @@ static Byte *char_search(Byte * p, Byte * pat, int dir, int range) // search for
p = 0;
i = 0; // return NULL if pattern not found
}
- cs1:
+ cs1:
if (dir == FORWARD) {
p = p + i;
} else {
@@ -1539,7 +1546,7 @@ static Byte *char_search(Byte * p, Byte * pat, int dir, int range) // search for
}
#endif /* FEATURE_VI_SEARCH */
-static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
+static char *char_insert(char * p, char c) // insert the char c at 'p'
{
if (c == 22) { // Is this an ctrl-V?
p = stupid_insert(p, '^'); // use ^ to indicate literal next
@@ -1554,7 +1561,7 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
cmdcnt = 0;
end_cmd_q(); // stop adding to q
last_status_cksum = 0; // force status update
- if ((p[-1] != '\n') && (dot>text)) {
+ if ((p[-1] != '\n') && (dot > text)) {
p--;
}
} else if (c == erase_char || c == 8 || c == 127) { // Is this a BS
@@ -1565,7 +1572,7 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
}
} else {
// insert a char into text[]
- Byte *sp; // "save p"
+ char *sp; // "save p"
if (c == 13)
c = '\n'; // translate \r to \n
@@ -1576,7 +1583,7 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
showmatching(sp);
}
if (autoindent && c == '\n') { // auto indent the new line
- Byte *q;
+ char *q;
q = prev_line(p); // use prev line as templet
for (; isblnk(*q); q++) {
@@ -1588,7 +1595,7 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
return p;
}
-static Byte *stupid_insert(Byte * p, Byte c) // stupidly insert the char c at 'p'
+static char *stupid_insert(char * p, char c) // stupidly insert the char c at 'p'
{
p = text_hole_make(p, 1);
if (p != 0) {
@@ -1599,9 +1606,9 @@ static Byte *stupid_insert(Byte * p, Byte c) // stupidly insert the char c at 'p
return p;
}
-static Byte find_range(Byte ** start, Byte ** stop, Byte c)
+static char find_range(char ** start, char ** stop, char c)
{
- Byte *save_dot, *p, *q;
+ char *save_dot, *p, *q;
int cnt;
save_dot = dot;
@@ -1656,9 +1663,9 @@ static Byte find_range(Byte ** start, Byte ** stop, Byte c)
return c;
}
-static int st_test(Byte * p, int type, int dir, Byte * tested)
+static int st_test(char * p, int type, int dir, char * tested)
{
- Byte c, c0, ci;
+ char c, c0, ci;
int test, inc;
inc = dir;
@@ -1690,9 +1697,9 @@ static int st_test(Byte * p, int type, int dir, Byte * tested)
return test;
}
-static Byte *skip_thing(Byte * p, int linecnt, int dir, int type)
+static char *skip_thing(char * p, int linecnt, int dir, int type)
{
- Byte c;
+ char c;
while (st_test(p, type, dir, &c)) {
// make sure we limit search to correct number of lines
@@ -1708,9 +1715,9 @@ static Byte *skip_thing(Byte * p, int linecnt, int dir, int type)
}
// find matching char of pair () [] {}
-static Byte *find_pair(Byte * p, Byte c)
+static char *find_pair(char * p, char c)
{
- Byte match, *q;
+ char match, *q;
int dir, level;
match = ')';
@@ -1755,9 +1762,9 @@ static Byte *find_pair(Byte * p, Byte c)
#if ENABLE_FEATURE_VI_SETOPTS
// show the matching char of a pair, () [] {}
-static void showmatching(Byte * p)
+static void showmatching(char * p)
{
- Byte *q, *save_dot;
+ char *q, *save_dot;
// we found half of a pair
q = find_pair(p, *p); // get loc of matching char
@@ -1768,7 +1775,7 @@ static void showmatching(Byte * p)
save_dot = dot; // remember where we are
dot = q; // go to new loc
refresh(FALSE); // let the user see it
- (void) mysleep(40); // give user some time
+ mysleep(40); // give user some time
dot = save_dot; // go back to old loc
refresh(FALSE);
}
@@ -1776,9 +1783,9 @@ static void showmatching(Byte * p)
#endif /* 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 char *text_hole_make(char * p, int size) // at "p", make a 'size' byte hole
{
- Byte *src, *dest;
+ char *src, *dest;
int cnt;
if (size <= 0)
@@ -1792,14 +1799,14 @@ static Byte *text_hole_make(Byte * p, int size) // at "p", make a 'size' byte ho
memset(p, ' ', size); // clear new hole
end = end + size; // adjust the new END
file_modified++; // has the file been modified
- thm0:
+ thm0:
return p;
}
// close a hole in text[]
-static Byte *text_hole_delete(Byte * p, Byte * q) // delete "p" thru "q", inclusive
+static char *text_hole_delete(char * p, char * q) // delete "p" thru "q", inclusive
{
- Byte *src, *dest;
+ char *src, *dest;
int cnt, hole_size;
// move forwards, from beginning
@@ -1821,23 +1828,23 @@ static Byte *text_hole_delete(Byte * p, Byte * q) // delete "p" thru "q", inclus
if (memmove(dest, src, cnt) != dest) {
psbs("can't delete the character");
}
- thd_atend:
+ thd_atend:
end = end - hole_size; // adjust the new END
if (dest >= end)
dest = end - 1; // make sure dest in below end-1
if (end <= text)
dest = end = text; // keep pointers valid
file_modified++; // has the file been modified
- thd0:
+ thd0:
return dest;
}
// 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 char *yank_delete(char * start, char * stop, int dist, int yf)
{
- Byte *p;
+ char *p;
// make sure start <= stop
if (start > stop) {
@@ -1902,42 +1909,42 @@ static void show_help(void)
);
}
-static inline void print_literal(Byte * buf, Byte * s) // copy s to buf, convert unprintable
+static inline void print_literal(char * buf, const char * s) // copy s to buf, convert unprintable
{
- Byte c, b[2];
+ unsigned char c;
+ char b[2];
b[1] = '\0';
- strcpy((char *) buf, ""); // init buf
- if (strlen((char *) s) <= 0)
- s = (Byte *) "(NULL)";
- for (; *s > '\0'; s++) {
+ buf[0] = '\0';
+ if (!s[0])
+ s = "(NULL)";
+ for (; *s; s++) {
int c_is_no_print;
c = *s;
c_is_no_print = c > 127 && !Isprint(c);
if (c_is_no_print) {
- strcat((char *) buf, SOn);
+ strcat(buf, SOn);
c = '.';
}
if (c < ' ' || c == 127) {
- strcat((char *) buf, "^");
- if(c == 127)
+ strcat(buf, "^");
+ if (c == 127)
c = '?';
- else
- c += '@';
+ else
+ c += '@';
}
b[0] = c;
- strcat((char *) buf, (char *) b);
+ strcat(buf, b);
if (c_is_no_print)
- strcat((char *) buf, SOs);
- if (*s == '\n') {
- strcat((char *) buf, "$");
- }
+ strcat(buf, SOs);
+ if (*s == '\n')
+ strcat(buf, "$");
}
}
#if ENABLE_FEATURE_VI_DOT_CMD
-static void start_new_cmd_q(Byte c)
+static void start_new_cmd_q(char c)
{
// release old cmd
free(last_modifying_cmd);
@@ -1946,7 +1953,7 @@ static void start_new_cmd_q(Byte c)
memset(last_modifying_cmd, '\0', BUFSIZ); // clear new cmd queue
// if there is a current cmd count put it in the buffer first
if (cmdcnt > 0)
- sprintf((char *) last_modifying_cmd, "%d%c", cmdcnt, c);
+ sprintf(last_modifying_cmd, "%d%c", cmdcnt, c);
else // just save char c onto queue
last_modifying_cmd[0] = c;
adding2q = 1;
@@ -1964,13 +1971,13 @@ static void end_cmd_q(void)
#if ENABLE_FEATURE_VI_YANKMARK \
|| (ENABLE_FEATURE_VI_COLON && ENABLE_FEATURE_VI_SEARCH) \
|| ENABLE_FEATURE_VI_CRASHME
-static Byte *string_insert(Byte * p, Byte * s) // insert the string at 'p'
+static char *string_insert(char * p, char * s) // insert the string at 'p'
{
int cnt, i;
- i = strlen((char *) s);
+ i = strlen(s);
p = text_hole_make(p, i);
- strncpy((char *) p, (char *) s, i);
+ strncpy(p, s, i);
for (cnt = 0; *s != '\0'; s++) {
if (*s == '\n')
cnt++;
@@ -1983,9 +1990,9 @@ static Byte *string_insert(Byte * p, Byte * s) // insert the string at 'p'
#endif
#if ENABLE_FEATURE_VI_YANKMARK
-static Byte *text_yank(Byte * p, Byte * q, int dest) // copy text into a register
+static char *text_yank(char * p, char * q, int dest) // copy text into a register
{
- Byte *t;
+ char *t;
int cnt;
if (q < p) { // they are backwards- reverse them
@@ -1998,18 +2005,18 @@ static Byte *text_yank(Byte * p, Byte * q, int dest) // copy text into a registe
free(t); // if already a yank register, free it
t = xmalloc(cnt + 1); // get a new register
memset(t, '\0', cnt + 1); // clear new text[]
- strncpy((char *) t, (char *) p, cnt); // copy text[] into bufer
+ strncpy(t, p, cnt); // copy text[] into bufer
reg[dest] = t;
return p;
}
-static Byte what_reg(void)
+static char what_reg(void)
{
- Byte c;
+ char c;
c = 'D'; // default to D-reg
if (0 <= YDreg && YDreg <= 25)
- c = 'a' + (Byte) YDreg;
+ c = 'a' + (char) YDreg;
if (YDreg == 26)
c = 'D';
if (YDreg == 27)
@@ -2017,13 +2024,13 @@ static Byte what_reg(void)
return c;
}
-static void check_context(Byte cmd)
+static void check_context(char 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 (strchr(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
@@ -2034,9 +2041,9 @@ static void check_context(Byte cmd)
}
}
-static inline Byte *swap_context(Byte * p) // goto new context for '' command make this the current context
+static inline char *swap_context(char * p) // goto new context for '' command make this the current context
{
- Byte *tmp;
+ char *tmp;
// the current context is in mark[26]
// the previous context is in mark[27]
@@ -2053,7 +2060,7 @@ static inline Byte *swap_context(Byte * p) // goto new context for '' command ma
}
#endif /* FEATURE_VI_YANKMARK */
-static int isblnk(Byte c) // is the char a blank or tab
+static int isblnk(char c) // is the char a blank or tab
{
return (c == ' ' || c == '\t');
}
@@ -2117,7 +2124,7 @@ static void suspend_sig(int sig ATTRIBUTE_UNUSED)
static void catch_sig(int sig)
{
signal(SIGINT, catch_sig);
- if(sig)
+ if (sig)
longjmp(restart, sig);
}
#endif /* FEATURE_VI_USE_SIGNALS */
@@ -2139,59 +2146,59 @@ static int mysleep(int hund) // sleep for 'h' 1/100 seconds
static int readed_for_parse;
//----- IO Routines --------------------------------------------
-static Byte readit(void) // read (maybe cursor) key from stdin
+static char readit(void) // read (maybe cursor) key from stdin
{
- Byte c;
+ char c;
int n;
struct esc_cmds {
const char *seq;
- Byte val;
+ char val;
};
static const struct esc_cmds esccmds[] = {
- {"OA", (Byte) VI_K_UP}, // cursor key Up
- {"OB", (Byte) VI_K_DOWN}, // cursor key Down
- {"OC", (Byte) VI_K_RIGHT}, // Cursor Key Right
- {"OD", (Byte) VI_K_LEFT}, // cursor key Left
- {"OH", (Byte) VI_K_HOME}, // Cursor Key Home
- {"OF", (Byte) VI_K_END}, // Cursor Key End
- {"[A", (Byte) VI_K_UP}, // cursor key Up
- {"[B", (Byte) VI_K_DOWN}, // cursor key Down
- {"[C", (Byte) VI_K_RIGHT}, // Cursor Key Right
- {"[D", (Byte) VI_K_LEFT}, // cursor key Left
- {"[H", (Byte) VI_K_HOME}, // Cursor Key Home
- {"[F", (Byte) VI_K_END}, // Cursor Key End
- {"[1~", (Byte) VI_K_HOME}, // Cursor Key Home
- {"[2~", (Byte) VI_K_INSERT}, // Cursor Key Insert
- {"[4~", (Byte) VI_K_END}, // Cursor Key End
- {"[5~", (Byte) VI_K_PAGEUP}, // Cursor Key Page Up
- {"[6~", (Byte) VI_K_PAGEDOWN}, // Cursor Key Page Down
- {"OP", (Byte) VI_K_FUN1}, // Function Key F1
- {"OQ", (Byte) VI_K_FUN2}, // Function Key F2
- {"OR", (Byte) VI_K_FUN3}, // Function Key F3
- {"OS", (Byte) VI_K_FUN4}, // Function Key F4
- {"[15~", (Byte) VI_K_FUN5}, // Function Key F5
- {"[17~", (Byte) VI_K_FUN6}, // Function Key F6
- {"[18~", (Byte) VI_K_FUN7}, // Function Key F7
- {"[19~", (Byte) VI_K_FUN8}, // Function Key F8
- {"[20~", (Byte) VI_K_FUN9}, // Function Key F9
- {"[21~", (Byte) VI_K_FUN10}, // Function Key F10
- {"[23~", (Byte) VI_K_FUN11}, // Function Key F11
- {"[24~", (Byte) VI_K_FUN12}, // Function Key F12
- {"[11~", (Byte) VI_K_FUN1}, // Function Key F1
- {"[12~", (Byte) VI_K_FUN2}, // Function Key F2
- {"[13~", (Byte) VI_K_FUN3}, // Function Key F3
- {"[14~", (Byte) VI_K_FUN4}, // Function Key F4
+ {"OA", VI_K_UP}, // cursor key Up
+ {"OB", VI_K_DOWN}, // cursor key Down
+ {"OC", VI_K_RIGHT}, // Cursor Key Right
+ {"OD", VI_K_LEFT}, // cursor key Left
+ {"OH", VI_K_HOME}, // Cursor Key Home
+ {"OF", VI_K_END}, // Cursor Key End
+ {"[A", VI_K_UP}, // cursor key Up
+ {"[B", VI_K_DOWN}, // cursor key Down
+ {"[C", VI_K_RIGHT}, // Cursor Key Right
+ {"[D", VI_K_LEFT}, // cursor key Left
+ {"[H", VI_K_HOME}, // Cursor Key Home
+ {"[F", VI_K_END}, // Cursor Key End
+ {"[1~", VI_K_HOME}, // Cursor Key Home
+ {"[2~", VI_K_INSERT}, // Cursor Key Insert
+ {"[4~", VI_K_END}, // Cursor Key End
+ {"[5~", VI_K_PAGEUP}, // Cursor Key Page Up
+ {"[6~", VI_K_PAGEDOWN},// Cursor Key Page Down
+ {"OP", VI_K_FUN1}, // Function Key F1
+ {"OQ", VI_K_FUN2}, // Function Key F2
+ {"OR", VI_K_FUN3}, // Function Key F3
+ {"OS", VI_K_FUN4}, // Function Key F4
+ {"[15~", VI_K_FUN5}, // Function Key F5
+ {"[17~", VI_K_FUN6}, // Function Key F6
+ {"[18~", VI_K_FUN7}, // Function Key F7
+ {"[19~", VI_K_FUN8}, // Function Key F8
+ {"[20~", VI_K_FUN9}, // Function Key F9
+ {"[21~", VI_K_FUN10}, // Function Key F10
+ {"[23~", VI_K_FUN11}, // Function Key F11
+ {"[24~", VI_K_FUN12}, // Function Key F12
+ {"[11~", VI_K_FUN1}, // Function Key F1
+ {"[12~", VI_K_FUN2}, // Function Key F2
+ {"[13~", VI_K_FUN3}, // Function Key F3
+ {"[14~", VI_K_FUN4}, // Function Key F4
};
#define ESCCMDS_COUNT (sizeof(esccmds)/sizeof(struct esc_cmds))
- (void) alarm(0); // turn alarm OFF while we wait for input
+ alarm(0); // turn alarm OFF while we wait for input
fflush(stdout);
n = readed_for_parse;
// get input from User- are there already input chars in Q?
if (n <= 0) {
- ri0:
+ ri0:
// the Q is empty, wait for a typed char
n = read(0, readbuffer, BUFSIZ - 1);
if (n < 0) {
@@ -2207,21 +2214,21 @@ static Byte readit(void) // read (maybe cursor) key from stdin
editing = 0;
errno = 0;
}
- if(n <= 0)
+ if (n <= 0)
return 0; // error
if (readbuffer[0] == 27) {
- // This is an ESC char. Is this Esc sequence?
- // Could be bare Esc key. See if there are any
- // more chars to read after the ESC. This would
- // be a Function or Cursor Key sequence.
- FD_ZERO(&rfds);
- FD_SET(0, &rfds);
- tv.tv_sec = 0;
- tv.tv_usec = 50000; // Wait 5/100 seconds- 1 Sec=1000000
-
- // keep reading while there are input chars and room in buffer
+ // This is an ESC char. Is this Esc sequence?
+ // Could be bare Esc key. See if there are any
+ // more chars to read after the ESC. This would
+ // be a Function or Cursor Key sequence.
+ FD_ZERO(&rfds);
+ FD_SET(0, &rfds);
+ tv.tv_sec = 0;
+ 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 && n <= (BUFSIZ - 5)) {
- // read the rest of the ESC string
+ // read the rest of the ESC string
int r = read(0, (void *) (readbuffer + n), BUFSIZ - n);
if (r > 0) {
n += r;
@@ -2231,16 +2238,16 @@ static Byte readit(void) // read (maybe cursor) key from stdin
readed_for_parse = n;
}
c = readbuffer[0];
- if(c == 27 && n > 1) {
- // Maybe cursor or function key?
+ if (c == 27 && n > 1) {
+ // Maybe cursor or function key?
const struct esc_cmds *eindex;
for (eindex = esccmds; eindex < &esccmds[ESCCMDS_COUNT]; eindex++) {
int cnt = strlen(eindex->seq);
- if(n <= cnt)
+ if (n <= cnt)
continue;
- if(strncmp(eindex->seq, (char *) readbuffer + 1, cnt))
+ if (strncmp(eindex->seq, readbuffer + 1, cnt))
continue;
// is a Cursor key- put derived value back into Q
c = eindex->val;
@@ -2248,7 +2255,7 @@ static Byte readit(void) // read (maybe cursor) key from stdin
n = cnt + 1;
break;
}
- if(eindex == &esccmds[ESCCMDS_COUNT]) {
+ if (eindex == &esccmds[ESCCMDS_COUNT]) {
/* defined ESC sequence not found, set only one ESC */
n = 1;
}
@@ -2258,14 +2265,14 @@ static Byte readit(void) // read (maybe cursor) key from stdin
// remove key sequence from Q
readed_for_parse -= n;
memmove(readbuffer, readbuffer + n, BUFSIZ - n);
- (void) alarm(3); // we are done waiting for input, turn alarm ON
+ alarm(3); // we are done waiting for input, turn alarm ON
return c;
}
//----- IO Routines --------------------------------------------
-static Byte get_one_char(void)
+static char get_one_char(void)
{
- static Byte c;
+ static char c;
#if ENABLE_FEATURE_VI_DOT_CMD
// ! adding2q && ioq == 0 read()
@@ -2291,7 +2298,7 @@ static Byte get_one_char(void)
// adding STDIN chars to q
c = readit(); // get the users input
if (last_modifying_cmd != 0) {
- int len = strlen((char *) last_modifying_cmd);
+ int len = strlen(last_modifying_cmd);
if (len + 1 >= BUFSIZ) {
psbs("last_modifying_cmd overrun");
} else {
@@ -2306,20 +2313,22 @@ static Byte get_one_char(void)
return c; // return the char, where ever it came from
}
-static Byte *get_input_line(Byte * prompt) // get input line- use "status line"
+static char *get_input_line(const char * prompt) // get input line- use "status line"
{
- Byte buf[BUFSIZ];
- Byte c;
+ static char *obufp;
+
+ char buf[BUFSIZ];
+ char c;
int i;
- static Byte *obufp = NULL;
- strcpy((char *) buf, (char *) prompt);
+ strcpy(buf, prompt);
last_status_cksum = 0; // force status update
place_cursor(rows - 1, 0, FALSE); // go to Status line, bottom of screen
clear_to_eol(); // clear the line
- write1((char *) prompt); // write out the :, /, or ? prompt
+ write1(prompt); // write out the :, /, or ? prompt
- for (i = strlen((char *) buf); i < BUFSIZ;) {
+ i = strlen(buf);
+ while (i < BUFSIZ) {
c = get_one_char(); // read user input
if (c == '\n' || c == '\r' || c == 27)
break; // is this end of input
@@ -2341,26 +2350,26 @@ static Byte *get_input_line(Byte * prompt) // get input line- use "status line"
}
refresh(FALSE);
free(obufp);
- obufp = (Byte *) xstrdup((char *) buf);
+ obufp = xstrdup(buf);
return obufp;
}
-static int file_size(const Byte * fn) // what is the byte size of "fn"
+static int file_size(const char * fn) // what is the byte size of "fn"
{
struct stat st_buf;
int cnt, sr;
- if (fn == 0 || strlen((char *)fn) <= 0)
+ if (!fn || !fn[0])
return -1;
cnt = -1;
- sr = stat((char *) fn, &st_buf); // see if file exists
+ sr = stat(fn, &st_buf); // see if file exists
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(char * fn, char * p, int size)
{
int fd, cnt;
@@ -2368,7 +2377,7 @@ static int file_insert(Byte * fn, Byte * p, int size)
#if ENABLE_FEATURE_VI_READONLY
readonly = FALSE;
#endif
- if (fn == 0 || strlen((char*) fn) <= 0) {
+ if (!fn || !fn[0]) {
psbs("No filename given");
goto fi0;
}
@@ -2390,13 +2399,13 @@ static int file_insert(Byte * fn, Byte * p, int size)
#if ENABLE_FEATURE_VI_READONLY
if (vi_readonly) goto fi1; // do not try write-mode
#endif
- fd = open((char *) fn, O_RDWR); // assume read & write
+ fd = open(fn, O_RDWR); // assume read & write
if (fd < 0) {
// could not open for writing- maybe file is read only
#if ENABLE_FEATURE_VI_READONLY
- fi1:
+ fi1:
#endif
- fd = open((char *) fn, O_RDONLY); // try read-only
+ fd = open(fn, O_RDONLY); // try read-only
if (fd < 0) {
psbs("\"%s\" %s", fn, "cannot open file");
goto fi0;
@@ -2420,11 +2429,11 @@ static int file_insert(Byte * fn, Byte * p, int size)
}
if (cnt >= size)
file_modified++;
- fi0:
+ fi0:
return cnt;
}
-static int file_write(Byte * fn, Byte * first, Byte * last)
+static int file_write(char * fn, char * first, char * last)
{
int fd, cnt, charcnt;
@@ -2434,14 +2443,14 @@ static int file_write(Byte * fn, Byte * first, Byte * last)
}
charcnt = 0;
// FIXIT- use the correct umask()
- fd = open((char *) fn, (O_WRONLY | O_CREAT | O_TRUNC), 0664);
+ fd = open(fn, (O_WRONLY | O_CREAT | O_TRUNC), 0664);
if (fd < 0)
return -1;
cnt = last - first + 1;
charcnt = write(fd, first, cnt);
if (charcnt == cnt) {
// good write
- //file_modified= FALSE; // the file has not been modified
+ //file_modified = FALSE; // the file has not been modified
} else {
charcnt = 0;
}
@@ -2468,9 +2477,9 @@ static void place_cursor(int row, int col, int opti)
char *cm;
#if ENABLE_FEATURE_VI_OPTIMIZE_CURSOR
char cm2[BUFSIZ];
- Byte *screenp;
+ char *screenp;
// char cm3[BUFSIZ];
- int Rrow= last_row;
+ int Rrow = last_row;
#endif
memset(cm1, '\0', BUFSIZ - 1); // clear the buffer
@@ -2481,9 +2490,10 @@ static void place_cursor(int row, int col, int opti)
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) goto pc0;
+ sprintf(cm1, CMrc, row + 1, col + 1);
+ cm = cm1;
+ if (!opti)
+ goto pc0;
#if ENABLE_FEATURE_VI_OPTIMIZE_CURSOR
//----- find the minimum # of chars to move cursor -------------
@@ -2506,15 +2516,15 @@ static void place_cursor(int row, int col, int opti)
strcat(cm2, "\r"); // start at col 0
// just send out orignal source char to get to correct place
screenp = &screen[row * columns]; // start of screen line
- strncat(cm2, (char* )screenp, col);
+ strncat(cm2, screenp, col);
//----- 3. Try some other way of moving cursor
//---------------------------------------------
// pick the shortest cursor motion to send out
- cm= cm1;
+ cm = cm1;
if (strlen(cm2) < strlen(cm)) {
- cm= cm2;
+ cm = cm2;
} /* else if (strlen(cm3) < strlen(cm)) {
cm= cm3;
} */
@@ -2552,7 +2562,7 @@ static void flash(int h)
{
standout_start(); // send "start reverse video" sequence
redraw(TRUE);
- (void) mysleep(h);
+ mysleep(h);
standout_end(); // send "end reverse video" sequence
redraw(TRUE);
}
@@ -2577,12 +2587,13 @@ static void screen_erase(void)
memset(screen, ' ', screensize); // clear new screen
}
-static int bufsum(unsigned char *buf, int count)
+static int bufsum(char *buf, int count)
{
int sum = 0;
- unsigned char *e = buf + count;
+ char *e = buf + count;
+
while (buf < e)
- sum += *buf++;
+ sum += (unsigned char) *buf++;
return sum;
}
@@ -2600,10 +2611,10 @@ static void show_status_line(void)
if (have_status_msg || ((cnt > 0 && last_status_cksum != cksum))) {
last_status_cksum= cksum; // remember if we have seen this line
place_cursor(rows - 1, 0, FALSE); // put cursor on status line
- write1((char*)status_buffer);
+ write1(status_buffer);
clear_to_eol();
if (have_status_msg) {
- if (((int)strlen((char*)status_buffer) - (have_status_msg - 1)) >
+ if (((int)strlen(status_buffer) - (have_status_msg - 1)) >
(columns - 1) ) {
have_status_msg = 0;
Hit_Return();
@@ -2622,9 +2633,9 @@ static void psbs(const char *format, ...)
va_list args;
va_start(args, format);
- strcpy((char *) status_buffer, SOs); // Terminal standout mode on
- vsprintf((char *) status_buffer + strlen((char *) status_buffer), format, args);
- strcat((char *) status_buffer, SOn); // Terminal standout mode off
+ strcpy(status_buffer, SOs); // Terminal standout mode on
+ vsprintf(status_buffer + strlen(status_buffer), format, args);
+ strcat(status_buffer, SOn); // Terminal standout mode off
va_end(args);
have_status_msg = 1 + sizeof(SOs) + sizeof(SOn) - 2;
@@ -2636,15 +2647,15 @@ static void psb(const char *format, ...)
va_list args;
va_start(args, format);
- vsprintf((char *) status_buffer, format, args);
+ vsprintf(status_buffer, format, args);
va_end(args);
have_status_msg = 1;
}
-static void ni(Byte * s) // display messages
+static void ni(const char * s) // display messages
{
- Byte buf[BUFSIZ];
+ char buf[BUFSIZ];
print_literal(buf, s);
psbs("\'%s\' is not implemented", buf);
@@ -2652,9 +2663,10 @@ static void ni(Byte * s) // display messages
static int format_edit_status(void) // show file status on status line
{
- int cur, percent, ret, trunc_at;
static int tot;
+ int cur, percent, ret, trunc_at;
+
// file_modified is now a counter rather than a flag. this
// helps reduce the amount of line counting we need to do.
// (this will cause a mis-reporting of modified status
@@ -2685,14 +2697,14 @@ static int format_edit_status(void) // show file status on status line
trunc_at = columns < STATUS_BUFFER_LEN-1 ?
columns : STATUS_BUFFER_LEN-1;
- ret = snprintf((char *) status_buffer, trunc_at+1,
+ ret = snprintf(status_buffer, trunc_at+1,
#if ENABLE_FEATURE_VI_READONLY
"%c %s%s%s %d/%d %d%%",
#else
"%c %s%s %d/%d %d%%",
#endif
(cmd_mode ? (cmd_mode == 2 ? 'R':'I'):'-'),
- (cfn != 0 ? (char *) cfn : "No file"),
+ (cfn != 0 ? cfn : "No file"),
#if ENABLE_FEATURE_VI_READONLY
((vi_readonly || readonly) ? " [Read-only]" : ""),
#endif
@@ -2717,12 +2729,12 @@ static void 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(char *dest, char *src, int li)
{
int co;
- Byte c;
+ char 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) {
c = '~'; // not first line, assume Tilde
@@ -2745,9 +2757,9 @@ static void format_line(Byte *dest, Byte *src, int li)
}
} else {
dest[co++] = '^';
- if(c == 127)
+ if (c == 127)
c = '?';
- else
+ else
c += '@'; // make it visible
}
}
@@ -2767,11 +2779,12 @@ static void format_line(Byte *dest, Byte *src, int li)
static void refresh(int full_screen)
{
static int old_offset;
+
int li, changed;
- Byte buf[MAX_SCR_COLS];
- Byte *tp, *sp; // pointer into text[] and screen[]
+ char buf[MAX_SCR_COLS];
+ char *tp, *sp; // pointer into text[] and screen[]
#if ENABLE_FEATURE_VI_OPTIMIZE_CURSOR
- int last_li= -2; // last line that changed- for optimizing cursor movement
+ int last_li = -2; // last line that changed- for optimizing cursor movement
#endif
if (ENABLE_FEATURE_VI_WIN_RESIZE)
@@ -2801,7 +2814,7 @@ static void refresh(int full_screen)
}
// compare newly formatted buffer with virtual screen
// look forward for first difference between buf and screen
- for ( ; cs <= ce; cs++) {
+ for (; cs <= ce; cs++) {
if (buf[cs + offset] != sp[cs]) {
changed = TRUE; // mark for redraw
break;
@@ -2819,7 +2832,7 @@ static void refresh(int full_screen)
// if horz offset has changed, force a redraw
if (offset != old_offset) {
- re0:
+ re0:
changed = TRUE;
}
@@ -2851,8 +2864,8 @@ static void refresh(int full_screen)
// write line out to terminal
{
- int nic = ce-cs+1;
- char *out = (char*)sp+cs;
+ int nic = ce - cs + 1;
+ char *out = sp + cs;
while (nic-- > 0) {
putchar(*out);
@@ -2898,14 +2911,15 @@ static void refresh(int full_screen)
//---------------------------------------------------------------------
//----- Execute a Vi Command -----------------------------------
-static void do_cmd(Byte c)
+static void do_cmd(char c)
{
- Byte c1, *p, *q, *msg, buf[9], *save_dot;
+ const char *msg;
+ char c1, *p, *q, buf[9], *save_dot;
int cnt, i, j, dir, yf;
c1 = c; // quiet the compiler
cnt = yf = dir = 0; // quiet the compiler
- p = q = save_dot = msg = buf; // quiet the compiler
+ msg = p = q = save_dot = buf; // quiet the compiler
memset(buf, '\0', 9); // clear buf
show_status_line();
@@ -2949,7 +2963,7 @@ static void do_cmd(Byte c)
goto dc1;
}
-key_cmd_mode:
+ key_cmd_mode:
switch (c) {
//case 0x01: // soh
//case 0x09: // ht
@@ -3002,7 +3016,7 @@ key_cmd_mode:
buf[1] = c + '@';
buf[2] = '\0';
}
- ni((Byte *) buf);
+ ni(buf);
end_cmd_q(); // stop adding to q
case 0x00: // nul- ignore
break;
@@ -3053,7 +3067,7 @@ key_cmd_mode:
case 18: // ctrl-R force redraw
place_cursor(0, 0, FALSE); // put cursor in correct place
clear_to_eos(); // tel terminal to erase display
- (void) mysleep(10);
+ mysleep(10);
screen_erase(); // erase the internal screen buffer
last_status_cksum = 0; // force status update
refresh(TRUE); // this will redraw the entire display
@@ -3103,7 +3117,7 @@ key_cmd_mode:
if (islower(c1)) {
c1 = c1 - 'a';
// get the b-o-l
- q = mark[(int) c1];
+ q = mark[(unsigned char) c1];
if (text <= q && q < end) {
dot = q;
dot_begin(); // go to B-o-l
@@ -3140,7 +3154,7 @@ key_cmd_mode:
break;
}
// are we putting whole lines or strings
- if (strchr((char *) p, '\n') != NULL) {
+ if (strchr(p, '\n') != NULL) {
if (c == 'P') {
dot_begin(); // putting lines- Put above
}
@@ -3203,7 +3217,8 @@ key_cmd_mode:
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) {
q++;
@@ -3223,7 +3238,7 @@ key_cmd_mode:
// Stuff the last_modifying_cmd back into stdin
// and let it be re-executed.
if (last_modifying_cmd != 0) {
- ioq = ioq_start = (Byte *) xstrdup((char *) last_modifying_cmd);
+ ioq = ioq_start = xstrdup(last_modifying_cmd);
}
break;
#endif
@@ -3233,12 +3248,12 @@ key_cmd_mode:
buf[0] = c;
buf[1] = '\0';
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 (q[0] && !q[1])
+ goto dc3; // if no pat re-use old pat
+ if (q[0]) { // strlen(q) > 1: new pat- save it and find
// there is a new pat
free(last_search_pattern);
- last_search_pattern = (Byte *) xstrdup((char *) q);
+ last_search_pattern = xstrdup(q);
goto dc3; // now find the pattern
}
// user changed mind and erased the "/"- do nothing
@@ -3261,9 +3276,9 @@ key_cmd_mode:
if (cmdcnt-- > 1) {
do_cmd(c);
} // repeat cnt
- dc3:
+ dc3:
if (last_search_pattern == 0) {
- msg = (Byte *) "No previous regular expression";
+ msg = "No previous regular expression";
goto dc2;
}
if (last_search_pattern[0] == '/') {
@@ -3274,11 +3289,11 @@ key_cmd_mode:
dir = BACK;
p = dot - 1;
}
- dc4:
+ dc4:
q = char_search(p, last_search_pattern + 1, dir, FULL);
if (q != NULL) {
dot = q; // good search, update "dot"
- msg = (Byte *) "";
+ msg = "";
goto dc2;
}
// no pattern found between "dot" and "end"- continue at top
@@ -3289,24 +3304,25 @@ key_cmd_mode:
q = char_search(p, last_search_pattern + 1, dir, FULL);
if (q != NULL) { // found something
dot = q; // found new pattern- goto it
- msg = (Byte *) "search hit BOTTOM, continuing at TOP";
+ msg = "search hit BOTTOM, continuing at TOP";
if (dir == BACK) {
- msg = (Byte *) "search hit TOP, continuing at BOTTOM";
+ msg = "search hit TOP, continuing at BOTTOM";
}
} else {
- msg = (Byte *) "Pattern not found";
+ msg = "Pattern not found";
}
- dc2:
- if (*msg) psbs("%s", msg);
+ dc2:
+ if (*msg)
+ psbs("%s", msg);
break;
case '{': // {- move backward paragraph
- q = char_search(dot, (Byte *) "\n\n", BACK, FULL);
+ q = char_search(dot, "\n\n", BACK, FULL);
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);
+ q = char_search(dot, "\n\n", FORWARD, FULL);
if (q != NULL) { // found blank line
dot = next_line(q); // move to next blank line
}
@@ -3329,26 +3345,28 @@ key_cmd_mode:
}
break;
case ':': // :- the colon mode commands
- p = get_input_line((Byte *) ":"); // get input line- use "status line"
+ p = get_input_line(":"); // get input line- use "status line"
#if ENABLE_FEATURE_VI_COLON
colon(p); // execute the command
#else
if (*p == ':')
p++; // move past the ':'
- cnt = strlen((char *) p);
+ cnt = strlen(p);
if (cnt <= 0)
break;
- if (strncasecmp((char *) p, "quit", cnt) == 0 ||
- strncasecmp((char *) p, "q!", cnt) == 0) { // delete lines
+ if (strncasecmp(p, "quit", cnt) == 0
+ || strncasecmp(p, "q!", cnt) == 0 // delete lines
+ ) {
if (file_modified && p[1] != '!') {
psbs("No write since last change (:quit! overrides)");
} else {
editing = 0;
}
- } else if (strncasecmp((char *) p, "write", cnt) == 0
- || strncasecmp((char *) p, "wq", cnt) == 0
- || strncasecmp((char *) p, "wn", cnt) == 0
- || strncasecmp((char *) p, "x", cnt) == 0) {
+ } else if (strncasecmp(p, "write", cnt) == 0
+ || strncasecmp(p, "wq", cnt) == 0
+ || strncasecmp(p, "wn", cnt) == 0
+ || strncasecmp(p, "x", cnt) == 0
+ ) {
cnt = file_write(cfn, text, end - 1);
if (cnt < 0) {
if (cnt == -1)
@@ -3357,18 +3375,19 @@ key_cmd_mode:
file_modified = 0;
last_file_modified = -1;
psb("\"%s\" %dL, %dC", cfn, count_lines(text, end - 1), cnt);
- if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n' ||
- p[0] == 'X' || p[1] == 'Q' || p[1] == 'N') {
+ if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n'
+ || p[0] == 'X' || p[1] == 'Q' || p[1] == 'N'
+ ) {
editing = 0;
}
}
- } else if (strncasecmp((char *) p, "file", cnt) == 0 ) {
+ } else if (strncasecmp(p, "file", cnt) == 0 ) {
last_status_cksum = 0; // force status update
- } else if (sscanf((char *) p, "%d", &j) > 0) {
+ } else if (sscanf(p, "%d", &j) > 0) {
dot = find_line(j); // go to line # j
dot_skip_over_ws();
} else { // unrecognised cmd
- ni((Byte *) p);
+ ni(p);
}
#endif /* !FEATURE_VI_COLON */
break;
@@ -3377,7 +3396,7 @@ key_cmd_mode:
cnt = count_lines(text, dot); // remember what line we are on
c1 = get_one_char(); // get the type of thing to delete
find_range(&p, &q, c1);
- (void) yank_delete(p, q, 1, YANKONLY); // save copy before change
+ yank_delete(p, q, 1, YANKONLY); // save copy before change
p = begin_line(p);
q = end_line(q);
i = count_lines(p, q); // # of lines we are shifting
@@ -3386,16 +3405,16 @@ key_cmd_mode:
// shift left- remove tab or 8 spaces
if (*p == '\t') {
// shrink buffer 1 char
- (void) text_hole_delete(p, p);
+ text_hole_delete(p, p);
} else if (*p == ' ') {
// we should be calculating columns, not just SPACE
for (j = 0; *p == ' ' && j < tabstop; j++) {
- (void) text_hole_delete(p, p);
+ text_hole_delete(p, p);
}
}
} else if (c == '>') {
// shift right -- add tab or 8 spaces
- (void) char_insert(p, '\t');
+ char_insert(p, '\t');
}
}
dot = find_line(cnt); // what line were we on
@@ -3462,7 +3481,7 @@ key_cmd_mode:
//**** fall thru to ... 'i'
case 'i': // i- insert before current char
case VI_K_INSERT: // Cursor Key Insert
- dc_i:
+ dc_i:
cmd_mode = 1; // start insrting
break;
case 'J': // J- join current and next lines together
@@ -3511,7 +3530,7 @@ key_cmd_mode:
goto dc_i;
break;
case 'R': // R- continuous Replace char
- dc5:
+ dc5:
cmd_mode = 2;
break;
case 'X': // X- delete char before dot
@@ -3632,24 +3651,24 @@ key_cmd_mode:
if (c1 != 27) {
// if CHANGING, not deleting, start inserting after the delete
if (c == 'c') {
- strcpy((char *) buf, "Change");
+ strcpy(buf, "Change");
goto dc_i; // start inserting
}
if (c == 'd') {
- strcpy((char *) buf, "Delete");
+ strcpy(buf, "Delete");
}
#if ENABLE_FEATURE_VI_YANKMARK
if (c == 'y' || c == 'Y') {
- strcpy((char *) buf, "Yank");
+ strcpy(buf, "Yank");
}
p = reg[YDreg];
- q = p + strlen((char *) p);
+ q = p + strlen(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());
+ buf, cnt, strlen(reg[YDreg]), what_reg());
#endif
end_cmd_q(); // stop adding to q
}
@@ -3739,10 +3758,10 @@ key_cmd_mode:
break;
}
- dc1:
+ dc1:
// if text[] just became empty, add back an empty line
if (end == text) {
- (void) char_insert(text, '\n'); // start empty buf with dummy line
+ 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
@@ -3770,14 +3789,15 @@ static int Ip = 97; // Insert command Probability
static int Yp = 98; // Yank command Probability
static int Pp = 99; // Put command Probability
static int M = 0, N = 0, I = 0, D = 0, Y = 0, P = 0, U = 0;
-char chars[20] = "\t012345 abcdABCD-=.$";
-char *words[20] = { "this", "is", "a", "test",
+const char chars[20] = "\t012345 abcdABCD-=.$";
+const char *const words[20] = {
+ "this", "is", "a", "test",
"broadcast", "the", "emergency", "of",
"system", "quick", "brown", "fox",
"jumped", "over", "lazy", "dogs",
"back", "January", "Febuary", "March"
};
-char *lines[20] = {
+const char *const lines[20] = {
"You should have received a copy of the GNU General Public License\n",
"char c, cm, *cmd, *cmd1;\n",
"generate a command by percentages\n",
@@ -3835,7 +3855,7 @@ static void crash_dummy()
// is there already a command running?
if (readed_for_parse > 0)
goto cd1;
- cd0:
+ cd0:
startrbi = rbi = 0;
sleeptime = 0; // how long to pause between commands
memset(readbuffer, '\0', BUFSIZ); // clear the read buffer
@@ -3897,54 +3917,55 @@ static void crash_dummy()
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]);
- strcat((char *) readbuffer, " ");
+ strcat(readbuffer, words[(int) lrand48() % 20]);
+ strcat(readbuffer, " ");
sleeptime = 0; // how fast to type
} else if (thing == 2) { // insert lines
- strcat((char *) readbuffer, lines[(int) lrand48() % 20]);
+ strcat(readbuffer, lines[(int) lrand48() % 20]);
sleeptime = 0; // how fast to type
} else { // insert multi-lines
- strcat((char *) readbuffer, multilines[(int) lrand48() % 20]);
+ strcat(readbuffer, multilines[(int) lrand48() % 20]);
sleeptime = 0; // how fast to type
}
}
- strcat((char *) readbuffer, "\033");
+ strcat(readbuffer, "\033");
}
readed_for_parse = strlen(readbuffer);
- cd1:
+ cd1:
totalcmds++;
if (sleeptime > 0)
- (void) mysleep(sleeptime); // sleep 1/100 sec
+ mysleep(sleeptime); // sleep 1/100 sec
}
// test to see if there are any errors
static void crash_test()
{
static time_t oldtim;
+
time_t tim;
char d[2], msg[BUFSIZ];
msg[0] = '\0';
if (end < text) {
- strcat((char *) msg, "end<text ");
+ strcat(msg, "end<text ");
}
if (end > textend) {
- strcat((char *) msg, "end>textend ");
+ strcat(msg, "end>textend ");
}
if (dot < text) {
- strcat((char *) msg, "dot<text ");
+ strcat(msg, "dot<text ");
}
if (dot > end) {
- strcat((char *) msg, "dot>end ");
+ strcat(msg, "dot>end ");
}
if (screenbegin < text) {
- strcat((char *) msg, "screenbegin<text ");
+ strcat(msg, "screenbegin<text ");
}
if (screenbegin > end - 1) {
- strcat((char *) msg, "screenbegin>end-1 ");
+ strcat(msg, "screenbegin>end-1 ");
}
- if (strlen(msg) > 0) {
+ if (msg[0]) {
alarm(0);
printf("\n\n%d: \'%c\' %s\n\n\n%s[Hit return to continue]%s",
totalcmds, last_input_char, msg, SOs, SOn);
@@ -3957,7 +3978,7 @@ static void crash_test()
}
tim = (time_t) time((time_t *) 0);
if (tim >= (oldtim + 3)) {
- sprintf((char *) status_buffer,
+ sprintf(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);
oldtim = tim;