aboutsummaryrefslogtreecommitdiff
path: root/src/hyper/dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hyper/dialog.c')
-rw-r--r--src/hyper/dialog.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/hyper/dialog.c b/src/hyper/dialog.c
index fe7b78aa..e3ae5122 100644
--- a/src/hyper/dialog.c
+++ b/src/hyper/dialog.c
@@ -88,6 +88,13 @@ static void redraw_win();
static void tough_enter(InputItem * sym);
static void
+strnmov(char *dest, const char *src, size_t n)
+{
+ while (n-- && (*dest++ = *src++));
+}
+
+
+static void
redraw_win()
{
XUnmapSubwindows(gXDisplay, gWindow->fMainWindow);
@@ -248,7 +255,7 @@ move_sym_forward(LineStruct *line, int num, int size, InputItem *sym)
return 1;
}
else {
- strncpy(&line->buffer[num], line->buffer, line->len);
+ strnmov(&line->buffer[num], line->buffer, line->len);
line->len += num;
line->changed = 1;
return 0;
@@ -310,7 +317,7 @@ insert_buffer(char *buffer, InputItem *sym)
else {
line->next->buffer[0] = line->buffer[size - 1];
line->changed = 1;
- strncpy(&line->buffer[line->buff_pntr + 1],
+ strnmov(&line->buffer[line->buff_pntr + 1],
&line->buffer[line->buff_pntr], size - line->buff_pntr - 1);
line->buffer[line->buff_pntr++] = buffer[0];
line->changed = 1;
@@ -346,7 +353,7 @@ insert_buffer(char *buffer, InputItem *sym)
/* we are not the leaders */
newline->buffer[0] = line->buffer[size - 1];
newline->len = 1;
- strncpy(&line->buffer[line->buff_pntr + 1],
+ strnmov(&line->buffer[line->buff_pntr + 1],
&line->buffer[line->buff_pntr], size - line->buff_pntr);
if (line->buff_pntr < size - 1) {
line->buffer[line->buff_pntr++] = buffer[0];
@@ -672,7 +679,7 @@ move_rest_back(LineStruct *line, int size)
return c;
while (line->next != NULL && line->len > size) {
- strncpy(line->buffer, &(line->buffer[1]), size - 1);
+ strnmov(line->buffer, &(line->buffer[1]), size - 1);
line->buffer[size - 1] = line->next->buffer[0];
line->changed = 1;
line = line->next;
@@ -685,7 +692,7 @@ move_rest_back(LineStruct *line, int size)
if (line->len > 0) {
line->changed = 1;
if (line->len > 1)
- strncpy(line->buffer, &(line->buffer[1]), line->len - 1);
+ strnmov(line->buffer, &(line->buffer[1]), line->len - 1);
line->buffer[--line->len] = 0;
if (line->len == 0) {
/* I have to fix the previous line */
@@ -867,7 +874,7 @@ move_back_one_char(InputItem *sym)
else if (line->len > 0) {
d = line->buffer[0];
if (line->len <= sym->size) {
- strncpy(line->buffer, &(line->buffer[1]), line->len - 1);
+ strnmov(line->buffer, &(line->buffer[1]), line->len - 1);
if (c == 0) {
line->len--;
line->buffer[line->len] = 0;
@@ -876,7 +883,7 @@ move_back_one_char(InputItem *sym)
line->buffer[line->len - 1] = c;
}
else {
- strncpy(line->buffer, &(line->buffer[1]), sym->size - 2);
+ strnmov(line->buffer, &(line->buffer[1]), sym->size - 2);
if (c == 0) {
line->buffer[sym->size - 1] = 0;
line->len--;
@@ -905,7 +912,7 @@ move_back_one_char(InputItem *sym)
if (line->len <= sym->size) {
- strncpy(&line->buffer[line->buff_pntr - 1],
+ strnmov(&line->buffer[line->buff_pntr - 1],
&(line->buffer[line->buff_pntr]),
line->len - line->buff_pntr);
if (c == 0)
@@ -914,7 +921,7 @@ move_back_one_char(InputItem *sym)
line->buffer[line->len - 1] = c;
}
else {
- strncpy(&(line->buffer[line->buff_pntr - 1]),
+ strnmov(&(line->buffer[line->buff_pntr - 1]),
&(line->buffer[line->buff_pntr]),
sym->size - line->buff_pntr);
if (c == 0) {
@@ -1040,7 +1047,7 @@ delete_one_char(InputItem *sym)
* exists at the end
*/
if (line->len <= sym->size) {
- strncpy(&line->buffer[line->buff_pntr],
+ strnmov(&line->buffer[line->buff_pntr],
&(line->buffer[line->buff_pntr + 1]),
line->len - line->buff_pntr);
if (c == 0)
@@ -1049,7 +1056,7 @@ delete_one_char(InputItem *sym)
line->buffer[line->len - 1] = c;
}
else {
- strncpy(&(line->buffer[line->buff_pntr]),
+ strnmov(&(line->buffer[line->buff_pntr]),
&(line->buffer[line->buff_pntr + 1]),
sym->size - line->buff_pntr);
if (c == 0) {