prompt_buffer
free(c->prompt_buffer);
size = utf8_strlen(c->prompt_buffer);
c->prompt_buffer = xreallocarray(c->prompt_buffer, size + n + 1,
sizeof *c->prompt_buffer);
memcpy(c->prompt_buffer + c->prompt_index, ud,
n * sizeof *c->prompt_buffer);
c->prompt_buffer[c->prompt_index].size = 0;
memmove(c->prompt_buffer + c->prompt_index + n,
c->prompt_buffer + c->prompt_index,
sizeof *c->prompt_buffer);
memcpy(c->prompt_buffer + c->prompt_index, ud,
n * sizeof *c->prompt_buffer);
size = utf8_strlen(c->prompt_buffer);
first = &c->prompt_buffer[idx];
while (first > c->prompt_buffer && !status_prompt_space(first))
last = &c->prompt_buffer[idx];
while (last > c->prompt_buffer && status_prompt_space(last))
first - c->prompt_buffer);
n = size - (last - c->prompt_buffer) + 1; /* with \0 */
memmove(first, last, n * sizeof *c->prompt_buffer);
off = first - c->prompt_buffer;
c->prompt_buffer = xreallocarray(c->prompt_buffer, size + 1,
sizeof *c->prompt_buffer);
first = c->prompt_buffer + off;
memmove(first + strlen(s), first, n * sizeof *c->prompt_buffer);
c->prompt_index = (first - c->prompt_buffer) + strlen(s);
status_prompt_space(&c->prompt_buffer[idx]))
&c->prompt_buffer[idx]) &&
!status_prompt_space(&c->prompt_buffer[idx]);
if (status_prompt_space(&c->prompt_buffer[idx])) {
status_prompt_space(&c->prompt_buffer[idx]))
separators, &c->prompt_buffer[idx]));
} while (status_prompt_space(&c->prompt_buffer[idx]));
&c->prompt_buffer[idx]);
} while (!status_prompt_space(&c->prompt_buffer[idx]) &&
&c->prompt_buffer[idx]));
if (!status_prompt_space(&c->prompt_buffer[idx]))
&c->prompt_buffer[idx]);
if (status_prompt_space(&c->prompt_buffer[idx]) ||
&c->prompt_buffer[idx])) {
size = utf8_strlen(c->prompt_buffer);
s = utf8_tocstr(c->prompt_buffer);
c->prompt_buffer[--c->prompt_index].size = 0;
memmove(c->prompt_buffer + c->prompt_index - 1,
c->prompt_buffer + c->prompt_index,
sizeof *c->prompt_buffer);
memmove(c->prompt_buffer + c->prompt_index,
c->prompt_buffer + c->prompt_index + 1,
sizeof *c->prompt_buffer);
c->prompt_buffer[0].size = 0;
c->prompt_buffer[c->prompt_index].size = 0;
if (!status_prompt_space(&c->prompt_buffer[idx]))
&c->prompt_buffer[idx]);
if (status_prompt_space(&c->prompt_buffer[idx]) ||
separators, &c->prompt_buffer[idx])) {
c->prompt_saved = xcalloc(sizeof *c->prompt_buffer,
memcpy(c->prompt_saved, c->prompt_buffer + idx,
(c->prompt_index - idx) * sizeof *c->prompt_buffer);
memmove(c->prompt_buffer + idx,
c->prompt_buffer + c->prompt_index,
sizeof *c->prompt_buffer);
memset(c->prompt_buffer + size - (c->prompt_index - idx),
'\0', (c->prompt_index - idx) * sizeof *c->prompt_buffer);
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(histstr);
c->prompt_index = utf8_strlen(c->prompt_buffer);
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(histstr);
c->prompt_index = utf8_strlen(c->prompt_buffer);
utf8_copy(&tmp, &c->prompt_buffer[idx - 2]);
utf8_copy(&c->prompt_buffer[idx - 2],
&c->prompt_buffer[idx - 1]);
utf8_copy(&c->prompt_buffer[idx - 1], &tmp);
s = utf8_tocstr(c->prompt_buffer);
if (c->prompt_buffer[0].size == 0) {
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(c->prompt_last);
c->prompt_index = utf8_strlen(c->prompt_buffer);
if (c->prompt_buffer[0].size == 0) {
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(c->prompt_last);
c->prompt_index = utf8_strlen(c->prompt_buffer);
c->prompt_buffer = xreallocarray(c->prompt_buffer, size + 2,
sizeof *c->prompt_buffer);
utf8_copy(&c->prompt_buffer[c->prompt_index], &tmp);
c->prompt_buffer[c->prompt_index].size = 0;
memmove(c->prompt_buffer + c->prompt_index + 1,
c->prompt_buffer + c->prompt_index,
sizeof *c->prompt_buffer);
utf8_copy(&c->prompt_buffer[c->prompt_index], &tmp);
if (utf8_strlen(c->prompt_buffer) != 1)
s = utf8_tocstr(c->prompt_buffer);
s = utf8_tocstr(c->prompt_buffer);
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(s);
c->prompt_index = utf8_strlen(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr("");
c->prompt_buffer = utf8_fromcstr(tmp);
c->prompt_index = utf8_strlen(c->prompt_buffer);
free(c->prompt_buffer);
c->prompt_buffer = NULL;
free(c->prompt_buffer);
c->prompt_buffer = utf8_fromcstr(tmp);
c->prompt_index = utf8_strlen(c->prompt_buffer);
tmp = utf8_tocstr(c->prompt_buffer);
pcursor = utf8_strwidth(c->prompt_buffer, c->prompt_index);
pwidth = utf8_strwidth(c->prompt_buffer, -1);
for (i = 0; c->prompt_buffer[i].size != 0; i++) {
&width, &gc, &c->prompt_buffer[i]))