Commit Graph

27 Commits

Author SHA1 Message Date
Andrey A. Chernov
fafeaee340 Fix scroll bug bringed by 'vi <several_small_files>'
and :n command then. :prev bug still exists because it syscons
bug itself, I work on it.
1994-11-21 14:16:31 +00:00
Andrey A. Chernov
fce9eaf109 Add const to termcap prototypes to help libg++ 2.6.1 compiling,
this change must not affect other curses pgms
1994-11-04 15:14:03 +00:00
Andrey A. Chernov
c0d678dc83 Finally move DB declaration under _CURSES_PRIVATE 1994-10-28 23:38:18 +00:00
Andrey A. Chernov
986f04fb6b Continue previous fix still 1994-10-28 23:27:57 +00:00
Andrey A. Chernov
88c2b17a8f After some thinking better place to fix appearse curses again, not
vi(1). Remove DB from curses.h and still implement it provide
this variable for programs that expect it in any case.
1994-10-28 23:27:00 +00:00
Andrey A. Chernov
4b05df4e20 Rename cDB to DB back like old good BSD curses always does,
check ultrix for example. Real place for fix will be vi(1),
wait for next commit.
1994-10-28 23:18:26 +00:00
Poul-Henning Kamp
a1ebd387e5 Missed one reference to the DB variable. 1994-10-28 21:53:17 +00:00
Poul-Henning Kamp
1eb01a4975 Renamed a variable from 'DB' to 'cDB', so the vi(1) will compile again.
Nice to see that people test their fixes before they commit :-(
1994-10-28 21:39:58 +00:00
Andrey A. Chernov
80299b0177 Previous commit was incompleted, yet one step required 1994-10-27 23:13:53 +00:00
Andrey A. Chernov
d8f07fabd5 Fix scroll bug bringed by vi(1), from phk's flame
(I still wait for apologies)
1994-10-27 22:36:56 +00:00
Andrey A. Chernov
2041b760c8 SHARED_LDADD --> LDADD
cmp redirection removed
1994-10-12 01:57:56 +00:00
Andrey A. Chernov
f5729156af Back out ospeed change (why all bugs discovered immediately _after_ commits
and no one before?)
1994-10-06 21:05:23 +00:00
Andrey A. Chernov
3a163b361a Enable PC back, because it is ouside visible 1994-10-06 20:44:51 +00:00
Andrey A. Chernov
4ba0245103 ospeed/PC code ifdefed out, our libtermcap use usleep now 1994-10-06 20:36:34 +00:00
Andrey A. Chernov
7f3d874be4 Disable direct ioctls to /dev/tty, search only stdin/stdout
and don't return error, if non-terminals. This fix allows curses
to work into full duplex pipes under control of main program,
like good old curses does.
1994-10-03 12:58:05 +00:00
Andrey A. Chernov
cbe192eeb8 Fix bug in %i format, second argument not incremented 1994-09-24 14:16:04 +00:00
Andrey A. Chernov
50da2881de Fix bug with scroll region parameters (x changed to y) 1994-09-24 14:15:16 +00:00
Andrey A. Chernov
fd437b2bb2 Attention to all cc hackers, here workaround for gcc 2.6.0
optimizer bug (old code works without -O and don't works with -O)
old !(x & y) != !(a & b) changed to !!(x & y) != !!(a & b)
1994-09-22 03:58:43 +00:00
Andrey A. Chernov
8354392e6b Fix mvcur typo bug from my previous fix 1994-09-22 03:09:04 +00:00
Andrey A. Chernov
8c37ae4d2c Subwin code forget to subtract orig->beg{x,y} cause SEGV
Submitted by: derek@free.org & ache
1994-09-12 11:41:29 +00:00
Andrey A. Chernov
53e1aa653e Bug fixed:
when refreshing standouted line curses outputs SO for all characters
Submitted by: ZW6T-KND@j.asahi-net.or.jp
1994-09-07 16:52:33 +00:00
Andrey A. Chernov
043e2ebbd9 SHARED_LDADD added 1994-08-28 21:48:11 +00:00
Andrey A. Chernov
f201053113 newwin.c
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->maxy instead of
  'i - win->begy', fixed
o check added into DEBUG to be shure that index inside current window.
o ->hash assigment code is WFNFW (forget win->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->begy/win->begx, code WFNFW.
o clsp (last space) wrong in two places at once: forget to add win->begy
  (WFNFW) and incorrectly use 'win->begx * __LDATASIZE' in pointer
  arithmetics.
o clsp check incorrect: was 'clsp < win->maxx * __LDATASIZE', need to
  be 'clsp < win->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->begy', WFNFW.
o NO_JERKINESS code forgets to add win->begy, WFNFW.
o Curw & Curs changed in comment description
o In search for the largest block of text not changed forget to add
  '- win->begy' (several places), WFNFW.
o Forget to add '- win->begy' for non-dirty lines, WFNFW.
o touchline forget to add '- win->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->maxy to 'curscr->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) && CS && (SC && RC || HO)
  (save/restore cursor used in __set_scroll_region in tty.c).

o Set __noqch, if !__usecs && (!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 <sgtty.h>,
  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 && 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->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->cury, this produce
  big number (cast to (unsigned)) if y < 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.
1994-08-28 21:47:13 +00:00
Sean Eric Fagan
f98d56227f More stuff from the latest curses. Really minor this time.
Reviewed by:	Sean Eric Fagan
1994-08-13 23:23:53 +00:00
Sean Eric Fagan
6c8ac72df7 Brought the 2.0 libcurses up-to-date with the current 4.4 stuff, as
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
1994-08-13 23:15:38 +00:00
Garrett Wollman
ab532cffe5 Make it work with our make macros. 1994-08-05 01:42:04 +00:00
Rodney W. Grimes
58f0484fa2 BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00