diff --git a/src/wreadln.c b/src/wreadln.c
index be4f2667cc391732731e2ef06cf94536ddb98c4f..f45e474e1e2107f7986f8c66cb6819ab32578ab7 100644 (file)
--- a/src/wreadln.c
+++ b/src/wreadln.c
/* ncmpc (Ncurses MPD Client)
- * (c) 2004-2010 The Music Player Daemon Project
+ * (c) 2004-2017 The Music Player Daemon Project
* Project homepage: http://musicpd.org
-
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
-
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-
+ *
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
+ */
#include "wreadln.h"
#include "charset.h"
byte_to_screen(const gchar *data, size_t x)
{
#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
- gchar *dup;
- char *p;
- unsigned width;
-
assert(x <= strlen(data));
- dup = g_strdup(data);
+ char *dup = g_strdup(data);
dup[x] = 0;
- p = replace_locale_to_utf8(dup);
+ char *p = replace_locale_to_utf8(dup);
- width = utf8_width(p);
+ unsigned width = utf8_width(p);
g_free(p);
return width;
#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
size_t length = strlen(data);
gchar *dup = g_strdup(data);
- char *p;
- unsigned p_width;
while (true) {
dup[length] = 0;
- p = locale_to_utf8(dup);
- p_width = utf8_width(p);
+ char *p = locale_to_utf8(dup);
+ unsigned p_width = utf8_width(p);
g_free(p);
if (p_width <= width)
break;
while (dup[start] != 0) {
char *p = locale_to_utf8(dup + start), *q;
unsigned p_width = utf8_width(p);
- gunichar c;
if (p_width < width) {
g_free(p);
break;
}
- c = g_utf8_get_char(p);
+ gunichar c = g_utf8_get_char(p);
p[g_unichar_to_utf8(c, NULL)] = 0;
q = utf8_to_locale(p);
g_free(p);
{
#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
char *p = locale_to_utf8(data), *q;
- gunichar c;
- size_t size;
- c = g_utf8_get_char(p);
+ gunichar c = g_utf8_get_char(p);
p[g_unichar_to_utf8(c, NULL)] = 0;
q = utf8_to_locale(p);
g_free(p);
- size = strlen(q);
+ size_t size = strlen(q);
g_free(q);
return size;
prev_char_size(const gchar *data, size_t x)
{
#if defined(HAVE_CURSES_ENHANCED) || defined(ENABLE_MULTIBYTE)
- char *p = locale_to_utf8(data), *q;
- gunichar c;
- size_t size;
-
assert(x > 0);
- q = p;
+ char *p = locale_to_utf8(data);
+
+ char *q = p;
while (true) {
- c = g_utf8_get_char(q);
- size = g_unichar_to_utf8(c, NULL);
+ gunichar c = g_utf8_get_char(q);
+ size_t size = g_unichar_to_utf8(c, NULL);
if (size > x)
size = x;
x -= size;
/* move the cursor one step to the right */
static inline void cursor_move_right(struct wreadln *wr)
{
- size_t size;
-
if (wr->line[wr->cursor] == 0)
return;
- size = next_char_size(wr->line + wr->cursor);
+ size_t size = next_char_size(wr->line + wr->cursor);
wr->cursor += size;
if (cursor_column(wr) >= wr->width)
wr->start = right_align_bytes(wr->line, wr->cursor, wr->width);
/* move the cursor one step to the left */
static inline void cursor_move_left(struct wreadln *wr)
{
- size_t size;
-
if (wr->cursor == 0)
return;
- size = prev_char_size(wr->line, wr->cursor);
+ size_t size = prev_char_size(wr->line, wr->cursor);
assert(wr->cursor >= size);
wr->cursor -= size;
if (wr->cursor < wr->start)
.fd = 0,
.events = POLLIN,
};
- int ret;
/* wide version: try to complete the multibyte sequence */
/* poll for more bytes on stdin, without timeout */
- ret = poll(&pfd, 1, 0);
- if (ret <= 0)
+ if (poll(&pfd, 1, 0) <= 0)
/* no more input from keyboard */
break;
static void
wreadln_delete_char(struct wreadln *wr, size_t x)
{
- size_t rest, length;
-
assert(x < strlen(wr->line));
- length = next_char_size(&wr->line[x]);
- rest = strlen(&wr->line[x + length]) + 1;
+ size_t length = next_char_size(&wr->line[x]);
+ size_t rest = strlen(&wr->line[x + length]) + 1;
memmove(&wr->line[x], &wr->line[x + length], rest);
}
.start = 0,
};
GList *hlist = NULL, *hcurrent = NULL;
- gint key = 0;
- size_t i;
#ifdef NCMPC_MINI
(void)gcmp;
drawline(&wr);
}
+ gint key = 0;
while (key != 13 && key != '\n') {
key = wgetch(w);
/* check if key is a function key */
- for (i = 0; i < 63; i++)
+ for (size_t i = 0; i < 63; i++)
if (key == (int)KEY_F(i)) {
key = KEY_F(1);
i = 64;
}
switch (key) {
+ size_t i;
+
#ifdef HAVE_GETMOUSE
case KEY_MOUSE: /* ignore mouse events */
#endif