xenl (xm) only matters for the last line - you can't write into the very bottom right position without causing the terminal to scroll. No xenl is a pain and most applications solve it by just leaving that position always empty. The only terminal still about without xenl that I am aware of is the NetBSD console.
am only matters if you care where the cursor is after you write to the last character - that is, if you want to rely on it moving to the next line automatically. You can still write at the rightmost cursor position, just don't rely on the cursor moving to the next line or the terminal scrolling when you do. I expect top doesn't need to worry about this. You could probably just use the full width except for the last line and trim the last line by 1 if tgetflag("xm") is true. Or doesn't ncurses take care of all this anyway? Maybe it doesn't... On Wed, Jun 03, 2020 at 02:49:48PM +0200, Klemens Nanni wrote: > On Wed, Jun 03, 2020 at 12:45:35PM +0100, Stuart Henderson wrote: > > It should check terminal capabilities for this, see termcap(5). > > If 'am' (auto-margin) is set then it shouldn't write to the final column. > > If 'xn' is set then it's OK in some circumstances (it's probably easier to > > skip writing to the final column if this is set too). > Thanks mark and Stuart, I did not know about auto-margin (or autoWrap as > xterm(1) seems to call it). > > What I understand is that writing to the screen's last terminal should > be avoided in terminal without the "am" capability, presumably because > it would cause a line wrap - is that correct? > > Preliminary testing however indicates to me that at least xterm(1) > behaves the same in top's interactive screen with my patch, regardless > of the auto-margin capablility. > > According to termcap(5) I did the following to disable "am", with > tput(1) I verify that it gets indeed disabled: > > $ echo $TERM ; tput am ; echo $? > xterm > 0 > $ TERM=vt100-nam ; tput am ; echo $? > 1 > > But in both cases, starting ./obj/top in the very same terminal/shell > behaves the same, that is to say the last column is written properly and > I see no line wrap or any change of behaviour. >