diff options
Diffstat (limited to 'util')
| -rw-r--r-- | util/hbitmap.c | 9 | ||||
| -rw-r--r-- | util/qemu-openpty.c | 2 | ||||
| -rw-r--r-- | util/readline.c | 15 |
3 files changed, 19 insertions, 7 deletions
diff --git a/util/hbitmap.c b/util/hbitmap.c index d93683128b..b3060e6976 100644 --- a/util/hbitmap.c +++ b/util/hbitmap.c @@ -92,11 +92,6 @@ struct HBitmap { unsigned long *levels[HBITMAP_LEVELS]; }; -static inline int popcountl(unsigned long l) -{ - return BITS_PER_LONG == 32 ? ctpop32(l) : ctpop64(l); -} - /* Advance hbi to the next nonzero word and return it. hbi->pos * is updated. Returns zero if we reach the end of the bitmap. */ @@ -200,14 +195,14 @@ static uint64_t hb_count_between(HBitmap *hb, uint64_t start, uint64_t last) if (pos >= (end >> BITS_PER_LEVEL)) { break; } - count += popcountl(cur); + count += ctpopl(cur); } if (pos == (end >> BITS_PER_LEVEL)) { /* Drop bits representing the END-th and subsequent items. */ int bit = end & (BITS_PER_LONG - 1); cur &= (1UL << bit) - 1; - count += popcountl(cur); + count += ctpopl(cur); } return count; diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c index 4febfe9d72..4c5321116b 100644 --- a/util/qemu-openpty.c +++ b/util/qemu-openpty.c @@ -47,6 +47,8 @@ #elif defined CONFIG_SOLARIS # include <termios.h> # include <stropts.h> +#else +# include <termios.h> #endif #ifdef __sun__ diff --git a/util/readline.c b/util/readline.c index 8baec55509..cc1302ac0a 100644 --- a/util/readline.c +++ b/util/readline.c @@ -263,6 +263,12 @@ static void readline_hist_add(ReadLineState *rs, const char *cmdline) void readline_add_completion(ReadLineState *rs, const char *str) { if (rs->nb_completions < READLINE_MAX_COMPLETIONS) { + int i; + for (i = 0; i < rs->nb_completions; i++) { + if (!strcmp(rs->completions[i], str)) { + return; + } + } rs->completions[rs->nb_completions++] = g_strdup(str); } } @@ -345,6 +351,12 @@ static void readline_completion(ReadLineState *rs) } } +static void readline_clear_screen(ReadLineState *rs) +{ + rs->printf_func(rs->opaque, "\033[2J\033[1;1H"); + readline_show_prompt(rs); +} + /* return true if command handled */ void readline_handle_byte(ReadLineState *rs, int ch) { @@ -363,6 +375,9 @@ void readline_handle_byte(ReadLineState *rs, int ch) case 9: readline_completion(rs); break; + case 12: + readline_clear_screen(rs); + break; case 10: case 13: rs->cmd_buf[rs->cmd_buf_size] = '\0'; |