File curses-bsd4.4-linux.patch of Package termcap
Index: ChangeLog
===================================================================
--- /dev/null
+++ ChangeLog
@@ -0,0 +1,19 @@
+Fri Nov 18 20:11:55 1994 J. Alan Eldridge (alane@wozzle.linet.org)
+
+ * curses-bsd4.4/newwin.c (__set_subwin): fix
+ "olp" and "lp->line". Please test it.
+
+Wed Aug 31 17:05:00 1994 H.J. Lu (hlu@fudan)
+
+ * curses.c: initialize all uninitialized variables to 0 or
+ NULL.
+
+ * curses.h: include <features.h>.
+ include <termcap.h>. remove termcap function declarations.
+ remove <sys/cdefs.h>.
+ remove <compat.h>.
+ (__BEGIN_DECLS/__END_DECLS): added.
+
+ * printw.c (vwprintw): don't use funopen () for Linux.
+
+ * tty.c (__tcaction): set it to 1 only if TCSASOFT != 0.
Index: Makefile
===================================================================
--- Makefile.orig
+++ Makefile
@@ -1,33 +1,91 @@
-# $OpenBSD: Makefile,v 1.7 1998/12/02 15:45:43 espie Exp $
+#
+# This is Makefile of curses for Linux
+#
+
+prefix = /usr
+lib = lib
+LIBNAME = libcurses
+
+MAJOR = 1
+MINOR = 0
+RELEASE = 0
+SHLIB = $(LIBNAME).so.$(MAJOR).$(MINOR).$(RELEASE)
+SONAME = $(LIBNAME).so.$(MAJOR)
+STLIB = $(LIBNAME).a
+
+TOPDIR = ..
+TARGETS = $(SHLIB) $(STLIB)
+TERMCAP = $(TOPDIR)/termcap-2.0.8/
+
+INC_CFLAGS =-I. -I$(TERMCAP)
+BASE_CFLAGS =-Wall $(RPM_OPT_FLAGS) -pipe -include nowarn.h
+CURSES_CFLAGS =-DPOSIX -D__USE_BSD_SIGNAL -D_CURSES_PRIVATE -D_GNU_SOURCE
+CFLAGS =$(BASE_CFLAGS) $(CURSES_CFLAGS) $(INC_CFLAGS)
+CC =gcc
+AR =ar
+ARFLAGS =ucvr
+LN =ln
+INSTALL =install
-CFLAGS+=#-DTFILE=\"/dev/ttyp0\"
-CFLAGS+=-D_CURSES_PRIVATE -I${.CURDIR}
-CFLAGS+=-DCM_N -DCM_GT -DCM_B -DCM_D
-LIB= ocurses
SRCS= addbytes.c addch.c addnstr.c box.c clear.c clrtobot.c clrtoeol.c \
cr_put.c ctrace.c cur_hash.c curses.c delch.c deleteln.c delwin.c \
erase.c fullname.c getch.c getstr.c id_subwins.c idlok.c initscr.c \
insch.c insertln.c longname.c move.c mvwin.c newwin.c overlay.c \
overwrite.c printw.c putchar.c refresh.c scanw.c scroll.c setterm.c \
standout.c toucholap.c touchwin.c tscroll.c tstp.c tty.c unctrl.c
-SRCS+= termcap.c tgoto.c tputs.c
-MAN= ocurses.3 otermcap.3
+#
+# We use an other termcap library
+#
+#SRCS+= termcap.c tgoto.c tputs.c
+
+OBJS= $(SRCS:.c=.o)
+SOBJS= $(SRCS:%.c=pic/%.o)
+
+#
+# The people should use ncurses
+#
+#MAN= ocurses.3 otermcap.3
+MAN=
+
+.c.o:
+ $(CC) $(CFLAGS) -c $<
+
+pic/%.o: %.c
+ $(CC) $(CFLAGS) -fPIC -c $< -o $@
+
+all lib: pic .depend $(SHLIB) $(STLIB) $(TERMCAP)/libtermcap.so
+
+$(SHLIB):: pic
+$(SHLIB):: $(SOBJS)
+ $(CC) -shared -o $@ -Wl,-soname,$(SONAME) $^ -Wl,-rpath-link,$(TERMCAP) -L$(TERMCAP) -ltermcap
+
+$(STLIB): $(OBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJS)
+
+pic:
+ -if [ ! -d pic ]; then mkdir pic; fi
+
+install:
+ $(INSTALL) -d $(prefix)/include/curses
+ $(INSTALL) -d $(prefix)/$(lib)/curses
+ $(INSTALL) $(SHLIB) $(prefix)/$(lib)/
+ $(INSTALL) curses.h $(prefix)/include/curses/
+ $(LN) -sf $(SHLIB) $(prefix)/$(lib)/$(SONAME)
+ $(LN) -sf ../$(SHLIB) $(prefix)/$(lib)/curses/$(LIBNAME).so
+ $(INSTALL) $(STLIB) $(prefix)/$(lib)/curses/
+
+clean:
+ rm -rf *.o pic $(SHLIB) $(SOBJS)
+
+distclean: clean
+ -rm -f .depend
+
+depend:: .depend
-.if make(install)
-SUBDIR+= PSD.doc
-.endif
-
-includes:
- -cd ${.CURDIR}; cmp -s curses.h ${DESTDIR}/usr/include/ocurses.h || \
- ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 \
- curses.h ${DESTDIR}/usr/include/ocurses.h
-
-# Link libotermcap to libocurses for programs that need full compatibility
-# with the old termcap behavior
-afterinstall:
- -cd ${DESTDIR}/usr/lib; \
- for i in ${_LIBS}; do \
- ln -f $$i `echo $$i | sed 's/ocurses/otermcap/'`; \
- done
+.depend: $(SRCS)
+ $(CC) $(CFLAGS) -M $(SRCS) | \
+ sed -e 's,^[ ]*\(.*\.o\)[ ]*:,\1 pic/\1:,' > .depend
-.include <bsd.lib.mk>
+ifeq (.depend,$(wildcard .depend))
+include .depend
+endif
Index: Makefile.bsd-4.4
===================================================================
--- /dev/null
+++ Makefile.bsd-4.4
@@ -0,0 +1,33 @@
+# $OpenBSD: Makefile,v 1.7 1998/12/02 15:45:43 espie Exp $
+
+CFLAGS+=#-DTFILE=\"/dev/ttyp0\"
+CFLAGS+=-D_CURSES_PRIVATE -I${.CURDIR}
+CFLAGS+=-DCM_N -DCM_GT -DCM_B -DCM_D
+LIB= ocurses
+SRCS= addbytes.c addch.c addnstr.c box.c clear.c clrtobot.c clrtoeol.c \
+ cr_put.c ctrace.c cur_hash.c curses.c delch.c deleteln.c delwin.c \
+ erase.c fullname.c getch.c getstr.c id_subwins.c idlok.c initscr.c \
+ insch.c insertln.c longname.c move.c mvwin.c newwin.c overlay.c \
+ overwrite.c printw.c putchar.c refresh.c scanw.c scroll.c setterm.c \
+ standout.c toucholap.c touchwin.c tscroll.c tstp.c tty.c unctrl.c
+SRCS+= termcap.c tgoto.c tputs.c
+MAN= ocurses.3 otermcap.3
+
+.if make(install)
+SUBDIR+= PSD.doc
+.endif
+
+includes:
+ -cd ${.CURDIR}; cmp -s curses.h ${DESTDIR}/usr/include/ocurses.h || \
+ ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 \
+ curses.h ${DESTDIR}/usr/include/ocurses.h
+
+# Link libotermcap to libocurses for programs that need full compatibility
+# with the old termcap behavior
+afterinstall:
+ -cd ${DESTDIR}/usr/lib; \
+ for i in ${_LIBS}; do \
+ ln -f $$i `echo $$i | sed 's/ocurses/otermcap/'`; \
+ done
+
+.include <bsd.lib.mk>
Index: clrtobot.c
===================================================================
--- clrtobot.c.orig
+++ clrtobot.c
@@ -46,7 +46,7 @@ wclrtobot(win)
register WINDOW *win;
{
register int minx, startx, starty, y;
- register __LDATA *sp, *end, *maxx;
+ register __LDATA *sp, *end, *maxx = NULL;
if (win->lines[win->cury]->flags & __ISPASTEOL) {
starty = win->cury + 1;
@@ -66,7 +66,7 @@ wclrtobot(win)
sp->ch = ' ';
sp->attr = 0;
}
- if (minx != -1)
+ if (maxx && minx != -1)
__touchline(win, y, minx, maxx - win->lines[y]->line,
0);
startx = 0;
Index: cr_put.c
===================================================================
--- cr_put.c.orig
+++ cr_put.c
@@ -102,12 +102,12 @@ fgoto(in_refresh)
while (l > 0) {
if (__pfast) {
if (CR)
- tputs(CR, 0, __cputchar);
+ tputs(CR, 0, (int (*)(int))__cputchar);
else
putchar('\r');
}
if (NL)
- tputs(NL, 0, __cputchar);
+ tputs(NL, 0, (int (*)(int))__cputchar);
else
putchar('\n');
l--;
@@ -148,7 +148,7 @@ fgoto(in_refresh)
* Eggert's Superbee description which wins better.
*/
if (NL /* && !XB */ && __pfast)
- tputs(NL, 0, __cputchar);
+ tputs(NL, 0, (int (*)(int))__cputchar);
else
putchar('\n');
l--;
@@ -168,7 +168,7 @@ fgoto(in_refresh)
if (outcol != COLS - 1 && plod(strlen(cgp), in_refresh) > 0)
plod(0, in_refresh);
else
- tputs(cgp, 0, __cputchar);
+ tputs(cgp, 0, (int (*)(int))__cputchar);
} else
plod(0, in_refresh);
outline = destline;
@@ -245,7 +245,7 @@ plod(cnt, in_refresh)
* Cheaper to home. Do it now and pretend it's a
* regular local motion.
*/
- tputs(HO, 0, plodput);
+ tputs(HO, 0, (int (*)(int))plodput);
outcol = outline = 0;
} else if (LL) {
/*
@@ -254,7 +254,7 @@ plod(cnt, in_refresh)
*/
k = (LINES - 1) - destline;
if (i + k + 2 < j && (k <= 0 || UP)) {
- tputs(LL, 0, plodput);
+ tputs(LL, 0, (int (*)(int))plodput);
outcol = 0;
outline = LINES - 1;
}
@@ -304,12 +304,12 @@ plod(cnt, in_refresh)
* into account.
*/
if (CR)
- tputs(CR, 0, plodput);
+ tputs(CR, 0, (int (*)(int))plodput);
else
plodput('\r');
if (NC) {
if (NL)
- tputs(NL, 0, plodput);
+ tputs(NL, 0, (int (*)(int))plodput);
else
plodput('\n');
outline++;
@@ -320,7 +320,7 @@ plod(cnt, in_refresh)
dontcr: while (outline < destline) {
outline++;
if (NL)
- tputs(NL, 0, plodput);
+ tputs(NL, 0, (int (*)(int))plodput);
else
plodput('\n');
if (plodcnt < 0)
@@ -335,7 +335,7 @@ dontcr: while (outline < destline) {
goto out;
#ifdef notdef
if (BT && outcol - destcol > k + 4) {
- tputs(BT, 0, plodput);
+ tputs(BT, 0, (int (*)(int))plodput);
outcol--;
outcol &= ~7;
continue;
@@ -343,13 +343,13 @@ dontcr: while (outline < destline) {
#endif
outcol--;
if (BC)
- tputs(BC, 0, plodput);
+ tputs(BC, 0, (int (*)(int))plodput);
else
plodput('\b');
}
while (outline > destline) {
outline--;
- tputs(UP, 0, plodput);
+ tputs(UP, 0, (int (*)(int))plodput);
if (plodcnt < 0)
goto out;
}
@@ -359,21 +359,21 @@ dontcr: while (outline < destline) {
if (i > destcol)
break;
if (TA)
- tputs(TA, 0, plodput);
+ tputs(TA, 0, (int (*)(int))plodput);
else
plodput('\t');
outcol = i;
}
if (destcol - outcol > 4 && i < COLS && (BC || BS)) {
if (TA)
- tputs(TA, 0, plodput);
+ tputs(TA, 0, (int (*)(int))plodput);
else
plodput('\t');
outcol = i;
while (outcol > destcol) {
outcol--;
if (BC)
- tputs(BC, 0, plodput);
+ tputs(BC, 0, (int (*)(int))plodput);
else
plodput('\b');
}
@@ -398,7 +398,7 @@ dontcr: while (outline < destline) {
}
} else
nondes: if (ND)
- tputs(ND, 0, plodput);
+ tputs(ND, 0, (int (*)(int))plodput);
else
plodput(' ');
outcol++;
Index: curses.c
===================================================================
--- curses.c.orig
+++ curses.c
@@ -39,23 +39,29 @@ static char sccsid[] = "@(#)curses.c 8.3
/* Private. */
int __echoit = 1; /* If stty indicates ECHO. */
-int __pfast;
+int __pfast = 0;
int __rawmode = 0; /* If stty indicates RAW mode. */
int __noqch = 0; /*
* If terminal doesn't have
* insert/delete line capabilities
* for quick change on refresh.
*/
-char AM, BS, CA, DA, EO, HC, IN, MI, MS, NC, NS, OS, PC,
- UL, XB, XN, XT, XS, XX;
-char *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
- *DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
- *K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
- *KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
- *SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
- *VE, *al, *dl, *sf, *sr,
- *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM, *LEFT_PARM,
- *RIGHT_PARM;
+char AM = 0, BS = 0, CA = 0, DA = 0, EO = 0, HC = 0, IN = 0,
+ MI = 0, MS = 0, NC = 0, NS = 0, OS = 0, PC = 0,
+ UL = 0, XB = 0, XN = 0, XT = 0, XS = 0, XX = 0;
+char *AL = 0, *BC = 0, *BT = 0, *CD = 0, *CE = 0, *CL = 0,
+ *CM = 0, *CR = 0, *CS = 0, *DC = 0, *DL = 0,
+ *DM = 0, *DO = 0, *ED = 0, *EI = 0, *K0 = 0, *K1 = 0,
+ *K2 = 0, *K3 = 0, *K4 = 0, *K5 = 0, *K6 = 0,
+ *K7 = 0, *K8 = 0, *K9 = 0, *HO = 0, *IC = 0, *IM = 0,
+ *IP = 0, *KD = 0, *KE = 0, *KH = 0, *KL = 0,
+ *KR = 0, *KS = 0, *KU = 0, *LL = 0, *MA = 0, *ND = 0,
+ *NL = 0, *RC = 0, *SC = 0, *SE = 0, *SF = 0,
+ *SO = 0, *SR = 0, *TA = 0, *TE = 0, *TI = 0, *UC = 0,
+ *UE = 0, *UP = 0, *US = 0, *VB = 0, *VS = 0,
+ *VE = 0, *al = 0, *dl = 0, *sf = 0, *sr = 0,
+ *AL_PARM = 0, *DL_PARM = 0, *UP_PARM = 0, *DOWN_PARM = 0,
+ *LEFT_PARM = 0, *RIGHT_PARM = 0;
/*
* Public.
*
Index: curses.h
===================================================================
--- curses.h.orig
+++ curses.h
@@ -36,18 +36,17 @@
#ifndef _OCURSES_H_
#define _OCURSES_H_
+#include <features.h>
#include <sys/types.h>
-#include <sys/cdefs.h>
-
#include <stdio.h>
+#include <termcap/termcap.h>
-#define bool char
-
-#ifndef TRUE
-#define TRUE (1)
+#ifndef _BSD_VA_LIST_
+#define _BSD_VA_LIST_ va_list
#endif
-#ifndef FALSE
-#define FALSE (0)
+
+#ifndef TCSASOFT
+#define TCSASOFT 0
#endif
/*
@@ -57,8 +56,18 @@
* START BACKWARD COMPATIBILITY ONLY.
*/
#ifndef _CURSES_PRIVATE
-#define _puts(s) tputs(s, 0, __cputchar)
-#define _putchar(c) __cputchar(c)
+#define bool char
+#define reg register
+
+#ifndef TRUE
+#define TRUE (1)
+#endif
+#ifndef FALSE
+#define FALSE (0)
+#endif
+
+#define _puts(s) tputs(s, 0, (int (*)(int))__cputchar)
+#define _putchar(c) ((int (*)(int))__cputchar(c))
/* Old-style terminal modes access. */
#define baudrate() (cfgetospeed(&__baset))
@@ -327,14 +336,4 @@ extern int __rawmode;
extern int __noqch;
#endif
-/* Termcap functions. */
-__BEGIN_DECLS
-int tgetent __P((char *, char *));
-int tgetnum __P((char *));
-int tgetflag __P((char *));
-char *tgetstr __P((char *, char **));
-char *tgoto __P((char *, int, int));
-void tputs __P((char *, int, void (*)(int)));
-__END_DECLS
-
#endif /* !_OCURSES_H_ */
Index: erase.c
===================================================================
--- erase.c.orig
+++ erase.c
@@ -47,7 +47,7 @@ werase(win)
{
register int minx, y;
- register __LDATA *sp, *end, *start, *maxx;
+ register __LDATA *sp, *end, *start, *maxx = NULL;
#ifdef DEBUG
__CTRACE("werase: (%0.2o)\n", win);
@@ -64,7 +64,7 @@ werase(win)
sp->ch = ' ';
sp->attr = 0;
}
- if (minx != -1)
+ if (maxx && minx != -1)
__touchline(win, y, minx, maxx - win->lines[y]->line,
0);
}
Index: insertln.c
===================================================================
--- insertln.c.orig
+++ insertln.c
@@ -49,7 +49,7 @@ winsertln(win)
{
register int y, i;
- register __LINE *temp;
+ register __LINE *temp = NULL;
#ifdef DEBUG
__CTRACE("insertln: (%0.2o)\n", win);
@@ -67,7 +67,7 @@ winsertln(win)
win->maxx * __LDATASIZE);
__touchline(win, y, 0, win->maxx - 1, 0);
}
- if (win->orig == NULL)
+ if (temp && win->orig == NULL)
win->lines[y] = temp;
else
temp = win->lines[y];
Index: newwin.c
===================================================================
--- newwin.c.orig
+++ newwin.c
@@ -134,8 +134,8 @@ __set_subwin(orig, win)
/* Point line pointers to line space. */
for (lp = win->lspace, i = 0; i < win->maxy; i++, lp++) {
win->lines[i] = lp;
- olp = orig->lines[i + win->begy];
- lp->line = &olp->line[win->begx];
+ olp = orig->lines[i + win->begy - orig->begy];
+ lp->line = &olp->line[win->ch_off];
lp->firstchp = &olp->firstch;
lp->lastchp = &olp->lastch;
lp->hash = __hash((char *) lp->line, win->maxx * __LDATASIZE);
Index: nowarn.h
===================================================================
--- /dev/null
+++ nowarn.h
@@ -0,0 +1 @@
+static char sccsid[] __attribute__ ((unused));
Index: printw.c
===================================================================
--- printw.c.orig
+++ printw.c
@@ -191,10 +191,18 @@ vwprintw(win, fmt, ap)
const char *fmt;
va_list ap;
{
+#ifdef __linux__
+ char buf[1024];
+ int len;
+
+ len = vsprintf(buf, fmt, ap);
+ return __winwrite(win, buf, len) ? ERR : OK;
+#else
FILE *f;
if ((f = funopen(win, NULL, __winwrite, NULL, NULL)) == NULL)
return (ERR);
(void)vfprintf(f, fmt, ap);
return (fclose(f) ? ERR : OK);
+#endif
}
Index: refresh.c
===================================================================
--- refresh.c.orig
+++ refresh.c
@@ -36,6 +36,7 @@ static char sccsid[] = "@(#)refresh.c 8.
#endif /* not lint */
#include <string.h>
+#include <stdlib.h>
#include "curses.h"
@@ -77,7 +78,7 @@ wrefresh(win)
if (win->flags & __CLEAROK || curscr->flags & __CLEAROK || curwin) {
if ((win->flags & __FULLWIN) || curscr->flags & __CLEAROK) {
- tputs(CL, 0, __cputchar);
+ tputs(CL, 0, (int (*)(int))__cputchar);
ly = 0;
lx = 0;
if (!curwin) {
@@ -220,7 +221,7 @@ makech(win, wy)
static __LDATA blank = {' ', 0};
__LDATA *nsp, *csp, *cp, *cep;
u_int force;
- int clsp, nlsp; /* Last space in lines. */
+ int clsp, nlsp = 0; /* Last space in lines. */
int lch, wx, y;
char *ce;
@@ -264,9 +265,9 @@ makech(win, wy)
if (force) {
if (CM)
- tputs(tgoto(CM, lx, ly), 0, __cputchar);
+ tputs(tgoto(CM, lx, ly), 0, (int (*)(int))__cputchar);
else {
- tputs(HO, 0, __cputchar);
+ tputs(HO, 0, (int (*)(int))__cputchar);
__mvcur(0, 0, ly, lx, 1);
}
}
@@ -313,10 +314,10 @@ makech(win, wy)
&& clsp < win->maxx * __LDATASIZE) ||
wy == win->maxy - 1) {
if (curscr->flags & __WSTANDOUT) {
- tputs(SE, 0, __cputchar);
+ tputs(SE, 0, (int (*)(int))__cputchar);
curscr->flags &= ~__WSTANDOUT;
}
- tputs(CE, 0, __cputchar);
+ tputs(CE, 0, (int (*)(int))__cputchar);
lx = wx + win->begx;
while (wx++ <= clsp) {
csp->ch = ' ';
@@ -336,13 +337,13 @@ makech(win, wy)
if (nsp->attr & __STANDOUT) {
if (!(curscr->flags & __WSTANDOUT) &&
SO != NULL && SE != NULL) {
- tputs(SO, 0, __cputchar);
+ tputs(SO, 0, (int (*)(int))__cputchar);
curscr->flags |= __WSTANDOUT;
}
} else
if (curscr->flags & __WSTANDOUT &&
SE != NULL) {
- tputs(SE, 0, __cputchar);
+ tputs(SE, 0, (int (*)(int))__cputchar);
curscr->flags &= ~__WSTANDOUT;
}
@@ -353,7 +354,7 @@ makech(win, wy)
&& win->flags & __ENDLINE)
if (!MS) {
tputs(SE, 0,
- __cputchar);
+ (int (*)(int))__cputchar);
curscr->flags &=
~__WSTANDOUT;
}
@@ -387,7 +388,7 @@ makech(win, wy)
#endif
if (UC && (nsp->attr & __STANDOUT)) {
putchar('\b');
- tputs(UC, 0, __cputchar);
+ tputs(UC, 0, (int (*)(int))__cputchar);
}
nsp++;
#ifdef DEBUG
@@ -411,7 +412,7 @@ makech(win, wy)
/* Don't leave the screen in standout mode. */
if (curscr->flags & __WSTANDOUT) {
- tputs(SE, 0, __cputchar);
+ tputs(SE, 0, (int (*)(int))__cputchar);
curscr->flags &= ~__WSTANDOUT;
}
return (OK);
@@ -426,7 +427,7 @@ domvcur(oy, ox, ny, nx)
int oy, ox, ny, nx;
{
if (curscr->flags & __WSTANDOUT && !MS) {
- tputs(SE, 0, __cputchar);
+ tputs(SE, 0, (int (*)(int))__cputchar);
curscr->flags &= ~__WSTANDOUT;
}
@@ -446,7 +447,7 @@ quickch(win)
#define THRESH (int) win->maxy / 4
register __LINE *clp, *tmp1, *tmp2;
- register int bsize, curs, curw, starts, startw, i, j;
+ register int bsize, curs = 0, curw = 0, starts = 0, startw = 0, i, j;
int n, target, cur_period, bot, top, sc_region;
__LDATA buf[1024];
u_int blank_hash;
@@ -679,8 +680,8 @@ quickch(win)
* Need to repoint any subwindow lines to the rotated
* line structured.
*/
- for (wp = curscr->nextp; wp != curscr; wp = wp->nextp)
- __set_subwin(wp->orig, wp);
+ for (wp = win->nextp; wp != win; wp = wp->nextp)
+ __set_subwin(win, wp);
}
}
@@ -724,20 +725,20 @@ scrolln(win, starts, startw, curs, bot,
*/
if (n > 0) {
if (CS != NULL && HO != NULL && (SF != NULL ||
- (AL == NULL || DL == NULL ||
- top > 3 || bot + 3 < win->maxy) && sf != NULL)) {
- tputs(__tscroll(CS, top, bot + 1), 0, __cputchar);
+ ((AL == NULL || DL == NULL ||
+ top > 3 || bot + 3 < win->maxy) && sf != NULL))) {
+ tputs(__tscroll(CS, top, bot + 1), 0, (int (*)(int))__cputchar);
__mvcur(oy, ox, 0, 0, 1);
- tputs(HO, 0, __cputchar);
+ tputs(HO, 0, (int (*)(int))__cputchar);
__mvcur(0, 0, bot, 0, 1);
if (SF != NULL)
- tputs(__tscroll(SF, n, 0), 0, __cputchar);
+ tputs(__tscroll(SF, n, 0), 0, (int (*)(int))__cputchar);
else
for (i = 0; i < n; i++)
- tputs(sf, 0, __cputchar);
- tputs(__tscroll(CS, 0, win->maxy), 0, __cputchar);
+ tputs(sf, 0, (int (*)(int))__cputchar);
+ tputs(__tscroll(CS, 0, win->maxy), 0, (int (*)(int))__cputchar);
__mvcur(bot, 0, 0, 0, 1);
- tputs(HO, 0, __cputchar);
+ tputs(HO, 0, (int (*)(int))__cputchar);
__mvcur(0, 0, oy, ox, 1);
return;
}
@@ -745,28 +746,28 @@ scrolln(win, starts, startw, curs, bot,
/* Scroll up the block. */
if (SF != NULL && top == 0) {
__mvcur(oy, ox, bot, 0, 1);
- tputs(__tscroll(SF, n, 0), 0, __cputchar);
+ tputs(__tscroll(SF, n, 0), 0, (int (*)(int))__cputchar);
} else if (DL != NULL) {
__mvcur(oy, ox, top, 0, 1);
- tputs(__tscroll(DL, n, 0), 0, __cputchar);
+ tputs(__tscroll(DL, n, 0), 0, (int (*)(int))__cputchar);
} else if (dl != NULL) {
__mvcur(oy, ox, top, 0, 1);
for (i = 0; i < n; i++)
- tputs(dl, 0, __cputchar);
+ tputs(dl, 0, (int (*)(int))__cputchar);
} else if (sf != NULL && top == 0) {
__mvcur(oy, ox, bot, 0, 1);
for (i = 0; i < n; i++)
- tputs(sf, 0, __cputchar);
+ tputs(sf, 0, (int (*)(int))__cputchar);
} else
abort();
/* Push down the bottom region. */
__mvcur(top, 0, bot - n + 1, 0, 1);
if (AL != NULL)
- tputs(__tscroll(AL, n, 0), 0, __cputchar);
+ tputs(__tscroll(AL, n, 0), 0, (int (*)(int))__cputchar);
else if (al != NULL)
for (i = 0; i < n; i++)
- tputs(al, 0, __cputchar);
+ tputs(al, 0, (int (*)(int))__cputchar);
else
abort();
__mvcur(bot - n + 1, 0, oy, ox, 1);
@@ -779,21 +780,21 @@ scrolln(win, starts, startw, curs, bot,
* See the above comments for details.
*/
if (CS != NULL && HO != NULL && (SR != NULL ||
- (AL == NULL || DL == NULL ||
- top > 3 || bot + 3 < win->maxy) && sr != NULL)) {
- tputs(__tscroll(CS, top, bot + 1), 0, __cputchar);
+ ((AL == NULL || DL == NULL ||
+ top > 3 || bot + 3 < win->maxy) && sr != NULL))) {
+ tputs(__tscroll(CS, top, bot + 1), 0, (int (*)(int))__cputchar);
__mvcur(oy, ox, 0, 0, 1);
- tputs(HO, 0, __cputchar);
+ tputs(HO, 0, (int (*)(int))__cputchar);
__mvcur(0, 0, top, 0, 1);
if (SR != NULL)
- tputs(__tscroll(SR, -n, 0), 0, __cputchar);
+ tputs(__tscroll(SR, -n, 0), 0, (int (*)(int))__cputchar);
else
for (i = n; i < 0; i++)
- tputs(sr, 0, __cputchar);
- tputs(__tscroll(CS, 0, win->maxy), 0, __cputchar);
+ tputs(sr, 0, (int (*)(int))__cputchar);
+ tputs(__tscroll(CS, 0, win->maxy), 0, (int (*)(int))__cputchar);
__mvcur(top, 0, 0, 0, 1);
- tputs(HO, 0, __cputchar);
+ tputs(HO, 0, (int (*)(int))__cputchar);
__mvcur(0, 0, oy, ox, 1);
return;
}
@@ -801,25 +802,25 @@ scrolln(win, starts, startw, curs, bot,
/* Preserve the bottom lines. */
__mvcur(oy, ox, bot + n + 1, 0, 1);
if (SR != NULL && bot == win->maxy)
- tputs(__tscroll(SR, -n, 0), 0, __cputchar);
+ tputs(__tscroll(SR, -n, 0), 0, (int (*)(int))__cputchar);
else if (DL != NULL)
- tputs(__tscroll(DL, -n, 0), 0, __cputchar);
+ tputs(__tscroll(DL, -n, 0), 0, (int (*)(int))__cputchar);
else if (dl != NULL)
for (i = n; i < 0; i++)
- tputs(dl, 0, __cputchar);
+ tputs(dl, 0, (int (*)(int))__cputchar);
else if (sr != NULL && bot == win->maxy)
for (i = n; i < 0; i++)
- tputs(sr, 0, __cputchar);
+ tputs(sr, 0, (int (*)(int))__cputchar);
else
abort();
/* Scroll the block down. */
__mvcur(bot + n + 1, 0, top, 0, 1);
if (AL != NULL)
- tputs(__tscroll(AL, -n, 0), 0, __cputchar);
+ tputs(__tscroll(AL, -n, 0), 0, (int (*)(int))__cputchar);
else if (al != NULL)
for (i = n; i < 0; i++)
- tputs(al, 0, __cputchar);
+ tputs(al, 0, (int (*)(int))__cputchar);
else
abort();
__mvcur(top, 0, oy, ox, 1);
Index: setterm.c
===================================================================
--- setterm.c.orig
+++ setterm.c
@@ -164,8 +164,8 @@ setterm(type)
/* If no scrolling commands, no quick change. */
__noqch =
(CS == NULL || HO == NULL ||
- SF == NULL && sf == NULL || SR == NULL && sr == NULL) &&
- (AL == NULL && al == NULL || DL == NULL && dl == NULL);
+ (SF == NULL && sf == NULL) || (SR == NULL && sr == NULL)) &&
+ ((AL == NULL && al == NULL) || (DL == NULL && dl == NULL));
return (unknown ? ERR : OK);
}
Index: standout.c
===================================================================
--- standout.c.orig
+++ standout.c
@@ -49,7 +49,7 @@ wstandout(win)
* If standout/standend strings, or can underline, set the
* screen standout bit.
*/
- if (SO != NULL && SE != NULL || UC != NULL)
+ if ((SO != NULL && SE != NULL) || UC != NULL)
win->flags |= __WSTANDOUT;
return (1);
}
Index: tty.c
===================================================================
--- tty.c.orig
+++ tty.c
@@ -48,7 +48,7 @@ static char sccsid[] = "@(#)tty.c 8.5 (B
* those attributes at each change, or at least when stopped and restarted.
* See also the comments in getterm().
*/
-#ifdef TCSASOFT
+#if TCSASOFT != 0
int __tcaction = 1; /* Ignore hardware settings. */
#else
int __tcaction = 0;
@@ -235,8 +235,8 @@ __startwin()
}
(void)setvbuf(stdout, stdbuf, _IOFBF, len);
- tputs(TI, 0, __cputchar);
- tputs(VS, 0, __cputchar);
+ tputs(TI, 0, (int (*)(int))__cputchar);
+ tputs(VS, 0, (int (*)(int))__cputchar);
}
int
@@ -246,14 +246,14 @@ endwin()
if (curscr != NULL) {
if (curscr->flags & __WSTANDOUT) {
- tputs(SE, 0, __cputchar);
+ tputs(SE, 0, (int (*)(int))__cputchar);
curscr->flags &= ~__WSTANDOUT;
}
__mvcur(curscr->cury, curscr->cury, curscr->maxy - 1, 0, 0);
}
- (void)tputs(VE, 0, __cputchar);
- (void)tputs(TE, 0, __cputchar);
+ (void)tputs(VE, 0, (int (*)(int))__cputchar);
+ (void)tputs(TE, 0, (int (*)(int))__cputchar);
(void)fflush(stdout);
(void)setvbuf(stdout, NULL, _IOLBF, 0);
Index: PSD.doc/Makefile
===================================================================
--- PSD.doc/Makefile.orig
+++ PSD.doc/Makefile
@@ -3,10 +3,6 @@
DIR= psd/19.curses
SRCS= Master
MACROS= -me
-EXTRA= appen.A appen.B appen.C c_macros doc.I doc.II doc.III \
- doc.IV ex1.c ex2.c fns.doc intro.0 intro.1 intro.2 intro.3 \
- intro.4 intro.5 intro.6 life.c macros twinkle1.c twinkle2.c \
- win_st.c
CLEANFILES+=win_st.gr twinkle1.gr twinkle2.gr life.gr intro.2.tbl appen.A.tbl \
ex1.gr ex2.gr