system/readline/readline_common.c: Fix nxstyle issues.
This commit is contained in:
parent
9d80399bd5
commit
a1b8ad9190
@ -1,7 +1,8 @@
|
||||
/****************************************************************************
|
||||
* apps/system/readline/readline_common.c
|
||||
*
|
||||
* Copyright (C) 2007-2008, 2011-2013, 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2007-2008, 2011-2013, 2015 Gregory Nutt.
|
||||
* All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -53,9 +54,33 @@
|
||||
#include "system/readline.h"
|
||||
#include "readline.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_READLINE_CMD_HISTORY
|
||||
# define RL_CMDHIST_LEN CONFIG_READLINE_CMD_HISTORY_LEN
|
||||
# define RL_CMDHIST_LINELEN CONFIG_READLINE_CMD_HISTORY_LINELEN
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_READLINE_CMD_HISTORY
|
||||
struct cmdhist_s
|
||||
{
|
||||
char buf[RL_CMDHIST_LEN][RL_CMDHIST_LINELEN]; /* Circular buffer */
|
||||
int head; /* Head of the circular buffer */
|
||||
int offset; /* Offset from head */
|
||||
int len; /* Size of the circular buffer */
|
||||
};
|
||||
#endif /* CONFIG_READLINE_CMD_HISTORY */
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* <esc>[K is the VT100 command erases to the end of the line. */
|
||||
|
||||
static const char g_erasetoeol[] = VT100_CLEAREOL;
|
||||
@ -71,18 +96,7 @@ static FAR const struct extmatch_vtable_s *g_extmatch_vtbl = NULL;
|
||||
#endif /* CONFIG_READLINE_TABCOMPLETION */
|
||||
|
||||
#ifdef CONFIG_READLINE_CMD_HISTORY
|
||||
/* Nghia Ho: command history
|
||||
*
|
||||
* g_cmd_history[][] Circular buffer
|
||||
* g_cmd_history_head Head of the circular buffer, most recent command
|
||||
* g_cmd_history_steps_from_head Offset from head
|
||||
* g_cmd_history_len Number of elements in the circular buffer
|
||||
*/
|
||||
|
||||
static char g_cmd_history[CONFIG_READLINE_CMD_HISTORY_LEN][CONFIG_READLINE_CMD_HISTORY_LINELEN];
|
||||
static int g_cmd_history_head = -1;
|
||||
static int g_cmd_history_steps_from_head = 1;
|
||||
static int g_cmd_history_len = 0;
|
||||
static struct cmdhist_s g_cmdhist;
|
||||
#endif /* CONFIG_READLINE_CMD_HISTORY */
|
||||
|
||||
/****************************************************************************
|
||||
@ -105,7 +119,8 @@ static int g_cmd_history_len = 0;
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_READLINE_TABCOMPLETION) && defined(CONFIG_BUILTIN)
|
||||
static int count_builtin_matches(FAR char *buf, FAR int *matches, int namelen)
|
||||
static int count_builtin_matches(FAR char *buf, FAR int *matches,
|
||||
int namelen)
|
||||
{
|
||||
#if CONFIG_READLINE_MAX_BUILTINS > 0
|
||||
FAR const char *name;
|
||||
@ -138,7 +153,7 @@ static int count_builtin_matches(FAR char *buf, FAR int *matches, int namelen)
|
||||
* Name: tab_completion
|
||||
*
|
||||
* Description:
|
||||
* Nghia - Unix like tab completion, only for builtin apps
|
||||
* Unix like tab completion, only for builtin apps
|
||||
*
|
||||
* Input Parameters:
|
||||
* vtbl - vtbl used to access implementation specific interface
|
||||
@ -190,7 +205,8 @@ static void tab_completion(FAR struct rl_common_s *vtbl, char *buf,
|
||||
{
|
||||
/* Count the number of external commands */
|
||||
|
||||
nr_ext_matches = g_extmatch_vtbl->count_matches(buf, ext_matches, len);
|
||||
nr_ext_matches =
|
||||
g_extmatch_vtbl->count_matches(buf, ext_matches, len);
|
||||
nr_matches += nr_ext_matches;
|
||||
}
|
||||
|
||||
@ -236,7 +252,9 @@ static void tab_completion(FAR struct rl_common_s *vtbl, char *buf,
|
||||
RL_PUTC(vtbl, name[j]);
|
||||
}
|
||||
|
||||
/* Don't remove extra characters after the completed word, if any. */
|
||||
/* Don't remove extra characters after the completed word,
|
||||
* if any.
|
||||
*/
|
||||
|
||||
if (len < name_len)
|
||||
{
|
||||
@ -329,6 +347,7 @@ static void tab_completion(FAR struct rl_common_s *vtbl, char *buf,
|
||||
|
||||
RL_PUTC(vtbl, '\n');
|
||||
}
|
||||
|
||||
#endif
|
||||
strncpy(buf, tmp_name, buflen - 1);
|
||||
|
||||
@ -349,7 +368,9 @@ static void tab_completion(FAR struct rl_common_s *vtbl, char *buf,
|
||||
RL_PUTC(vtbl, buf[i]);
|
||||
}
|
||||
|
||||
/* Don't remove extra characters after the completed word, if any. */
|
||||
/* Don't remove extra characters after the completed word,
|
||||
* if any
|
||||
*/
|
||||
|
||||
if (len < name_len)
|
||||
{
|
||||
@ -454,7 +475,7 @@ FAR const struct extmatch_vtable_s *
|
||||
* different creature.
|
||||
*
|
||||
* Input Parameters:
|
||||
* vtbl - vtbl used to access implementation specific interface
|
||||
* vtbl - vtbl used to access implementation specific interface
|
||||
* buf - The user allocated buffer to be filled.
|
||||
* buflen - the size of the buffer.
|
||||
*
|
||||
@ -465,7 +486,8 @@ FAR const struct extmatch_vtable_s *
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf,
|
||||
int buflen)
|
||||
{
|
||||
int escape;
|
||||
int nch;
|
||||
@ -497,7 +519,7 @@ ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
escape = 0;
|
||||
nch = 0;
|
||||
|
||||
for (;;)
|
||||
for (; ; )
|
||||
{
|
||||
/* Get the next character. readline_rawgetc() returns EOF on any
|
||||
* errors or at the end of file.
|
||||
@ -536,30 +558,30 @@ ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
/* We are finished with the escape sequence */
|
||||
|
||||
#ifdef CONFIG_READLINE_CMD_HISTORY
|
||||
/* Nghia Ho: intercept up and down arrow keys */
|
||||
/* Intercept up and down arrow keys */
|
||||
|
||||
if (g_cmd_history_len > 0)
|
||||
if (g_cmdhist.len > 0)
|
||||
{
|
||||
if (ch == 'A') /* up arrow */
|
||||
{
|
||||
/* Go to the past command in history */
|
||||
|
||||
g_cmd_history_steps_from_head--;
|
||||
g_cmdhist.offset--;
|
||||
|
||||
if (-g_cmd_history_steps_from_head >= g_cmd_history_len)
|
||||
if (-g_cmdhist.offset >= g_cmdhist.len)
|
||||
{
|
||||
g_cmd_history_steps_from_head = -(g_cmd_history_len - 1);
|
||||
g_cmdhist.offset = -(g_cmdhist.len - 1);
|
||||
}
|
||||
}
|
||||
else if (ch == 'B') /* down arrow */
|
||||
{
|
||||
/* Go to the recent command in history */
|
||||
|
||||
g_cmd_history_steps_from_head++;
|
||||
g_cmdhist.offset++;
|
||||
|
||||
if (g_cmd_history_steps_from_head > 1)
|
||||
if (g_cmdhist.offset > 1)
|
||||
{
|
||||
g_cmd_history_steps_from_head = 1;
|
||||
g_cmdhist.offset = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -575,27 +597,27 @@ ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
#endif
|
||||
}
|
||||
|
||||
if (g_cmd_history_steps_from_head != 1)
|
||||
{
|
||||
int idx = g_cmd_history_head + g_cmd_history_steps_from_head;
|
||||
if (g_cmdhist.offset != 1)
|
||||
{
|
||||
int idx = g_cmdhist.head + g_cmdhist.offset;
|
||||
|
||||
/* Circular buffer wrap around */
|
||||
/* Circular buffer wrap around */
|
||||
|
||||
if (idx < 0)
|
||||
{
|
||||
idx = idx + CONFIG_READLINE_CMD_HISTORY_LEN;
|
||||
}
|
||||
else if (idx >= CONFIG_READLINE_CMD_HISTORY_LEN)
|
||||
{
|
||||
idx = idx - CONFIG_READLINE_CMD_HISTORY_LEN;
|
||||
}
|
||||
if (idx < 0)
|
||||
{
|
||||
idx = idx + RL_CMDHIST_LEN;
|
||||
}
|
||||
else if (idx >= RL_CMDHIST_LEN)
|
||||
{
|
||||
idx = idx - RL_CMDHIST_LEN;
|
||||
}
|
||||
|
||||
for (i = 0; g_cmd_history[idx][i] != '\0'; i++)
|
||||
{
|
||||
buf[nch++] = g_cmd_history[idx][i];
|
||||
RL_PUTC(vtbl, g_cmd_history[idx][i]);
|
||||
}
|
||||
}
|
||||
for (i = 0; g_cmdhist.buf[idx][i] != '\0'; i++)
|
||||
{
|
||||
buf[nch++] = g_cmdhist.buf[idx][i];
|
||||
RL_PUTC(vtbl, g_cmdhist.buf[idx][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_READLINE_CMD_HISTORY */
|
||||
|
||||
@ -666,25 +688,25 @@ ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
#endif
|
||||
{
|
||||
#ifdef CONFIG_READLINE_CMD_HISTORY
|
||||
/* Nghia Ho: save history of command, only if there was something
|
||||
/* Save history of command, only if there was something
|
||||
* typed besides return character.
|
||||
*/
|
||||
|
||||
if (nch >= 1)
|
||||
{
|
||||
g_cmd_history_head = (g_cmd_history_head + 1) % CONFIG_READLINE_CMD_HISTORY_LEN;
|
||||
g_cmdhist.head = (g_cmdhist.head + 1) % RL_CMDHIST_LEN;
|
||||
|
||||
for (i = 0; (i < nch) && i < (CONFIG_READLINE_CMD_HISTORY_LINELEN - 1); i++)
|
||||
for (i = 0; (i < nch) && i < (RL_CMDHIST_LINELEN - 1); i++)
|
||||
{
|
||||
g_cmd_history[g_cmd_history_head][i] = buf[i];
|
||||
g_cmdhist.buf[g_cmdhist.head][i] = buf[i];
|
||||
}
|
||||
|
||||
g_cmd_history[g_cmd_history_head][i] = '\0';
|
||||
g_cmd_history_steps_from_head = 1;
|
||||
g_cmdhist.buf[g_cmdhist.head][i] = '\0';
|
||||
g_cmdhist.offset = 1;
|
||||
|
||||
if (g_cmd_history_len < CONFIG_READLINE_CMD_HISTORY_LEN)
|
||||
if (g_cmdhist.len < RL_CMDHIST_LEN)
|
||||
{
|
||||
g_cmd_history_len++;
|
||||
g_cmdhist.len++;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_READLINE_CMD_HISTORY */
|
||||
@ -728,7 +750,7 @@ ssize_t readline_common(FAR struct rl_common_s *vtbl, FAR char *buf, int buflen)
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_READLINE_TABCOMPLETION
|
||||
else if (ch == '\t') /* Nghia - TAB character */
|
||||
else if (ch == '\t') /* TAB character */
|
||||
{
|
||||
tab_completion(vtbl, buf, buflen, &nch);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user