[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-ed] [Patch] Remove arbitrary 80-character prompt limitation
From: |
Tim Chase |
Subject: |
[Bug-ed] [Patch] Remove arbitrary 80-character prompt limitation |
Date: |
Mon, 15 Apr 2019 10:16:47 -0500 |
Currently GNU ed(1) has a hard-coded limit of 80-characters in
main_loop.c:
static char prompt_str[80] = "*";
However, this silently truncates if you create a prompt longer than
80 characters:
ed -p"$(tput sc; tput home; seq $(( $COLUMNS / 10 )) | xargs printf %10i ;
tput rc)" file.txt
The above maintains a ruler at the top of the screen and works in BSD
ed(1) but fails in GNU ed(1) because the resulting prompt is longer
than 80 chars. GNU ed(1) silently truncates with strncpy() which can
truncate in the middle of ANSI escape sequences (or allow them to set
attributes but then be unable to unset them).
The attached diff dynamically allocates the prompt at run-time. In
theory, it's just pointing at a constant/known string from argv so
these should be able to use `const * char` but ap_argument's .data
element doesn't seem to point directly to the const argv string but
rather a (non-const) copy of it.
Consider the patch released under whatever OSI-approved license you
need (WTFPL, BSD, MIT, Apache, GPL v2 or v3 or AGPL).
-Tim
allow_arbitrary_length_prompt.diff
Description: Text Data
- [Bug-ed] [Patch] Remove arbitrary 80-character prompt limitation,
Tim Chase <=