<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/lib/libcurses/insertln.c, branch upstream/2.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=upstream%2F2.0_cvs</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=upstream%2F2.0_cvs'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>1994-08-28T21:47:13Z</updated>
<entry>
<title>newwin.c</title>
<updated>1994-08-28T21:47:13Z</updated>
<author>
<name>Andrey A. Chernov</name>
<email>ache@FreeBSD.org</email>
</author>
<published>1994-08-28T21:47:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f20105311324cd9998979d6302c79f7b6dc1879f'/>
<id>urn:sha1:f20105311324cd9998979d6302c79f7b6dc1879f</id>
<content type='text'>
o __FULLINE added for AL/DL/CS optimization with __noqch.

refresh.c

o Attributes does not turned off before clearing screen, cause
  highlighted screen.
o Proper usage of 'affcnt' tputs parameter, affects terminals with
  padding.
o make AL/DL/CS optimize not only for __FULLWIN but for __FULLLINE.
  ATTENTION: original code works _only_for_ FULLWIN, i.e. if you
  use two FULLLINE windows like in 'talk', you have full slow repaint with
  original code, I enhance this thing. All other fixes marked
  with phrase 'wrong for non-full windows' or WFNFW is continue of this fix.
  I rewrite scroll code too for proper working (see below and tty.c
  changes).
o DEBUG code always use 'i' index from 0 to curscr-&gt;maxy instead of
  'i - win-&gt;begy', fixed
o check added into DEBUG to be shure that index inside current window.
o -&gt;hash assigment code is WFNFW (forget win-&gt;begy).
o when CE usage required, and last spaces number counted, code don't check
  attributes, so last standouted space will be incorrectly cleared.
o cep (start pointer) forget to add win-&gt;begy/win-&gt;begx, code WFNFW.
o clsp (last space) wrong in two places at once: forget to add win-&gt;begy
  (WFNFW) and incorrectly use 'win-&gt;begx * __LDATASIZE' in pointer
  arithmetics.
o clsp check incorrect: was 'clsp &lt; win-&gt;maxx * __LDATASIZE', need to
  be 'clsp &lt; win-&gt;maxx
o Attributes does not turned off before clearing end of line, cause
  highlighted end of line.
o When find how many lines from the top/bottom of the screen are unchanged,
  code always forget '- win-&gt;begy', WFNFW.
o NO_JERKINESS code forgets to add win-&gt;begy, WFNFW.
o Curw &amp; Curs changed in comment description
o In search for the largest block of text not changed forget to add
  '- win-&gt;begy' (several places), WFNFW.
o Forget to add '- win-&gt;begy' for non-dirty lines, WFNFW.
o touchline forget to add '- win-&gt;begy', WFNFW.
o rewrite scrolln():
	* remove win parameter, we deal with whole screen (curscr) now;
	* use NL or '\n' instead of sf, it is faster in any case;
	  (imagine: cat written on curses now use '\n' for scroll
	  like standard cat, no ugly escapes)
	* use dl (if present) instead of DL, if abs(n) == 1, the same
	  about al/sr, it is faster;
	* change win-&gt;maxy to 'curscr-&gt;maxy - 1', we deal with whole screen
	  here, WFNFW.
	* SF can be correctly issued only if cursor at bottom of scroll
	  region (whole screen region included too), fix this;
	* sr/SR can be correctly issued only if cursor at top of scroll
	  region (whole screen region included too), fix this;
	* use pre-calculaded (in setterm.c) __usecs variable to determine
	  usage of CS or AL/DL;
	* completely rewrite scroll region stuff using __set_scroll_region
	  from tty.c (see below);

tty.c

o Added __set_scroll_region function which set CS region and stays
  back in old position. Use SC/RC (save/restore cursor) if possible,
  else use HO and __mvcur.

o __startwin: added __set_scroll_region(whole screen) at program
  startup, if __usecs;

o endwin: added __set_scroll_region(whole screen) at program
  exit, if __usecs;

o Fix all tc{set/get}attrs to works properly, when stdin redirected,
  use /dev/tty in this case (needed for some applications).

setterm.c

o Add new variable __usecs, if (!AL/al || !Dl/dl) &amp;&amp; CS &amp;&amp; (SC &amp;&amp; RC || HO)
  (save/restore cursor used in __set_scroll_region in tty.c).

o Set __noqch, if !__usecs &amp;&amp; (!AL/al || !DL/dl).

o Proper ospeed initialization for tputs, i.e. if speed == B9600,
  ospeed = 13

curses.c

o Add __usecs variable that indicates usage of CS (if AL/DL absent).

curses.h

o Allow translation with applications which includes &lt;sgtty.h&gt;,
  undef BXXX manually to avoid redefinition and include termios
  to define proper ones.

o Define old-style names curx/begx/maxx/etc. for old applications.
  Define _tty like __baset too.

o Typedef SGTTY type for old applications (SGTTY == struct termios).

o wstandout/wstandend should be int and not char*, some old
  applications relay on this fact. See standout.c too.

o __FULLINE added indicated line width == terminal width, needed
  for refresh using AL/DL/CS with __noqch, see refresh.c changes.

o Add extern __usecs variable that indicates usage of CS (if AL/DL absent).

o Add __set_scroll_region() prototype, see tty.c and refresh.c changes
  for details.

o Change winch() character mask from 0177 to 0377, we don't need to
  strip high bit on national characters.

o Allow translate on systems with _BSD_VA_LIST_ undefined, such as
  FreeBSD 1.1.5.1

o __tty_fileno added to allows work with stdin redirected, see tty.c

o Privately declare tputs (..., void) and externally tputs(..., int),
  many applications require this. Maybe not nice thing, but needed.

o Remove _putchar definition and replace it to proper _putchar
  prototype, some old apps declares: 'extern int _putchar()'
  and don't even include curses.h in such modules. See putchar.c

cr_put.c

o __mvcur: if destline == destcol &amp;&amp; outline == outcol do nothing,
  i.e. don't issue any escapes.

o Proper usage of 'affcnt' tputs parameter, affects terminals with
  padding.

cur_hash.c

o Change char-&gt;unsigned char for proper sum 8-bit national characters.

getch.c

o check for inp == EOF added, don't add EOF to window.

getstr.c

o check for EOF added, don't add EOF to str.

insertln.c

o add cast to (int) in comparation of y and win-&gt;cury, this produce
  big number (cast to (unsigned)) if y &lt; 0

tstp.c

o Fix all tc{set/get}attrs to works properly, when stdin redirected,
  use /dev/tty in this case (needed for some applications).

o add tstp() function for compatibility, some applications wants it.

standout.c

o Some old applications relay in fact that wstandout/wstandend
  returns int instead of char*, change return type to OK/ERR.

putchar.c

o Add _putchar function (which calls __cputchar),
  some old apps declares: 'extern int _putchar()'
  and don't even include curses.h in such modules.
</content>
</entry>
<entry>
<title>Brought the 2.0 libcurses up-to-date with the current 4.4 stuff, as</title>
<updated>1994-08-13T23:15:38Z</updated>
<author>
<name>Sean Eric Fagan</name>
<email>sef@FreeBSD.org</email>
</author>
<published>1994-08-13T23:15:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6c8ac72df7e99e77d81dd92c2f6b552ef77727ad'/>
<id>urn:sha1:6c8ac72df7e99e77d81dd92c2f6b552ef77727ad</id>
<content type='text'>
distributed in keith bostic's nvi (got his permission first).  Most changes
are cosmetic, but a few errors (mostly in tty..c) were cleared up.

Reviewed by:	Sean Eric Fagan
</content>
</entry>
<entry>
<title>BSD 4.4 Lite Lib Sources</title>
<updated>1994-05-27T05:00:24Z</updated>
<author>
<name>Rodney W. Grimes</name>
<email>rgrimes@FreeBSD.org</email>
</author>
<published>1994-05-27T05:00:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=58f0484fa251c266ede97b591b499fe3dd4f578e'/>
<id>urn:sha1:58f0484fa251c266ede97b591b499fe3dd4f578e</id>
<content type='text'>
</content>
</entry>
</feed>
