diff options
Diffstat (limited to 'src/hyper/dialog.c')
-rw-r--r-- | src/hyper/dialog.c | 29 |
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) { |