projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
USB: coding style fixes (structure naming)
[bertos.git]
/
bertos
/
mware
/
readline.c
diff --git
a/bertos/mware/readline.c
b/bertos/mware/readline.c
index d7c5aa8c0745fb41cf1ec194a782654289209e49..dcad52b4b5bde8af227ca0ce02fc8ab68622a1b6 100644
(file)
--- a/
bertos/mware/readline.c
+++ b/
bertos/mware/readline.c
@@
-63,8
+63,6
@@
* \todo Use up/down to move through history The history line will be copied to the current line,
* making sure there is room for it.
*
* \todo Use up/down to move through history The history line will be copied to the current line,
* making sure there is room for it.
*
- * \version $Id$
- *
* \author Giovanni Bajo <rasky@develer.com>
*/
* \author Giovanni Bajo <rasky@develer.com>
*/
@@
-366,13
+364,6
@@
void rl_refresh(struct RLContext* ctx)
const char* rl_readline(struct RLContext* ctx)
{
const char* rl_readline(struct RLContext* ctx)
{
- size_t i = ctx->history_pos;
-
- if (ctx->prompt)
- rl_puts(ctx, ctx->prompt);
-
- insert_chars(ctx, &i, NULL, 0);
-
while (1)
{
char ch;
while (1)
{
char ch;
@@
-391,20
+382,12
@@
const char* rl_readline(struct RLContext* ctx)
{
// Ask the match hook if available
if (!ctx->match)
{
// Ask the match hook if available
if (!ctx->match)
- return
false
;
+ return
NULL
;
complete_word(ctx, &ctx->line_pos);
continue;
}
complete_word(ctx, &ctx->line_pos);
continue;
}
- if (c == '\r' || c == '\n')
- {
- // Terminate line
- insert_chars(ctx, &ctx->line_pos, NULL, 0);
- rl_puts(ctx, "\r\n");
- break;
- }
-
// Backspace cancels a character, or it is ignored if at
// the start of the line
if (c == '\b')
// Backspace cancels a character, or it is ignored if at
// the start of the line
if (c == '\b')
@@
-417,17
+400,20
@@
const char* rl_readline(struct RLContext* ctx)
continue;
}
continue;
}
+ if (c == '\r' || c == '\n')
+ {
+ rl_puts(ctx, "\r\n");
+ break;
+ }
+
+
// Add a character to the buffer, if possible
ch = (char)c;
ASSERT2(ch == c, "a special key was not properly handled");
if (insert_chars(ctx, &ctx->line_pos, &ch, 1))
// Add a character to the buffer, if possible
ch = (char)c;
ASSERT2(ch == c, "a special key was not properly handled");
if (insert_chars(ctx, &ctx->line_pos, &ch, 1))
- {
rl_putc(ctx, ch);
rl_putc(ctx, ch);
- }
else
else
- {
beep(ctx);
beep(ctx);
- }
}
ctx->history_pos = ctx->line_pos + 1;
}
ctx->history_pos = ctx->line_pos + 1;
@@
-442,9
+428,18
@@
const char* rl_readline(struct RLContext* ctx)
dump_history(ctx);
#endif
dump_history(ctx);
#endif
+ const char *buf = &ctx->history[ctx->line_pos + 1];
+
+ ctx->line_pos = ctx->history_pos;
+
+ if (ctx->prompt)
+ rl_puts(ctx, ctx->prompt);
+
+ insert_chars(ctx, &ctx->line_pos, NULL, 0);
+
// Since the current pointer now points to the separator, we need
// to return the first character
// Since the current pointer now points to the separator, we need
// to return the first character
- return
&ctx->history[ctx->line_pos + 1]
;
+ return
buf
;
}
}