From 8056066083b0e40a28dd06b098f0abcef55e87a6 Mon Sep 17 00:00:00 2001 From: gdr Date: Fri, 3 Oct 1997 04:53:06 +0000 Subject: [PATCH] - initial build for GNO (untested) - changed some path names --- lib/libtermcap/Makefile | 55 ++++++---- lib/libtermcap/TEST/tc1.c | 6 +- lib/libtermcap/libtermcap.rez | 30 ++++++ lib/libtermcap/pathnames.h | 6 ++ lib/libtermcap/termcap.3 | 20 ++-- lib/libtermcap/termcap.c | 2 +- lib/libtermcap/termcap.h | 4 +- lib/libtermcap/tgoto.c | 3 +- lib/libtermcap/tospeed.c | 11 +- lib/libtermcap/tparm.c | 191 ++++++++++++++++++---------------- lib/libtermcap/tputs.c | 10 +- 11 files changed, 209 insertions(+), 129 deletions(-) create mode 100644 lib/libtermcap/libtermcap.rez diff --git a/lib/libtermcap/Makefile b/lib/libtermcap/Makefile index 5445de0..d3d0311 100644 --- a/lib/libtermcap/Makefile +++ b/lib/libtermcap/Makefile @@ -1,27 +1,36 @@ -# @(#)Makefile 8.1 (Berkeley) 6/4/93 +# +# This is the top-level makefile for libtermcap, GNO v2.0.6 +# +# $Id: Makefile,v 1.2 1997/10/03 04:52:59 gdr Exp $ +# -LIB= termcap -SHLIB_MAJOR= 2 -SHLIB_MINOR= 1 -CFLAGS+=-DCM_N -DCM_GT -DCM_B -DCM_D -I${.CURDIR} -SRCS= termcap.c tgoto.c tputs.c tparm.c tospeed.c +.INCLUDE: ../../paths.mk +.INCLUDE: ../const.mk -MAN3= termcap.3 -MLINKS= termcap.3 tgetent.3 termcap.3 tgetflag.3 termcap.3 tgetnum.3 \ - termcap.3 tgetstr.3 termcap.3 tgoto.3 termcap.3 tputs.3 \ - termcap.3 tparm.3 -LINKS= ${LIBDIR}/libtermcap.a ${LIBDIR}/libtermlib.a -.if !defined(NOPIC) -LINKS+= ${SHLIBDIR}/libtermcap.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \ - ${SHLIBDIR}/libtermlib.so.${SHLIB_MAJOR}.${SHLIB_MINOR} -.endif -.if !defined(NOPROFILE) -LINKS+= ${LIBDIR}/libtermcap_p.a ${LIBDIR}/libtermlib_p.a -.endif +LIB = libtermcap +OBJS = termcap.o tgoto.o tputs.o tparm.o tospeed.o +LIBDIR = /usr/lib +MANDIR = /usr/man/man3 + +CFLAGS += -O78 -Slibtermcap -G25 -v -w +CFLAGS += -DCM_N -DCM_GT -DCM_B -DCM_D -I. + +build: $(LIB) + +$(LIB): $(OBJS) $(LIB).r + $(RM) -f $@ + $(MAKELIB) $(MAKELIBFLAGS) -l $@ $(OBJS) + $(CATREZ) -d $@ $(LIB).r + +install: beforeinstall $(LIB) + $(INSTALL) -d $(LIBDIR) $(MANDIR) + $(INSTALL) $(LIB) $(LIBDIR) + $(INSTALL) termcap.3 $(MANDIR) + +release: beforeinstall $(LIB) + $(INSTALL) -d $(RELEASE_DIR)$(LIBDIR) $(RELEASE_DIR)$(MANDIR) + $(INSTALL) $(LIB) $(RELEASE_DIR)$(LIBDIR) + $(INSTALL) termcap.3 $(RELEASE_DIR)$(MANDIR) beforeinstall: - -cd ${.CURDIR}; cmp -s termcap.h ${DESTDIR}/usr/include/termcap.h || \ - ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 termcap.h \ - ${DESTDIR}/usr/include - -.include + cmp ../../include/termcap.h termcap.h diff --git a/lib/libtermcap/TEST/tc1.c b/lib/libtermcap/TEST/tc1.c index fd0870a..60acc26 100644 --- a/lib/libtermcap/TEST/tc1.c +++ b/lib/libtermcap/TEST/tc1.c @@ -46,11 +46,13 @@ static char sccsid[] = "@(#)tc1.c 8.1 (Berkeley) 6/4/93"; * dummy program to test termlib. * gets entry, counts it, and prints it. */ +#include #include +#include char buf[1024]; -char *getenv(); -main(argc, argv) char **argv; { +int +main(int argc, char **argv) { char *p; int rc; diff --git a/lib/libtermcap/libtermcap.rez b/lib/libtermcap/libtermcap.rez new file mode 100644 index 0000000..76cba10 --- /dev/null +++ b/lib/libtermcap/libtermcap.rez @@ -0,0 +1,30 @@ +/* + * Resources for version and comment + * + * $Id: libtermcap.rez,v 1.1 1997/10/03 04:52:59 gdr Exp $ + */ + +#define LIB "libtermcap for GNO" +#define PORTED "Ported from 4.4BSD by Devin Reade." + +#include "Types.rez" + +/* + * Version + */ +resource rVersion (1, purgeable3) { + { 2, 0, 6, /* Version 2.0.6 */ + alpha, /* development|alpha|beta|final|release */ + 1 }, /* non-final release number */ + verUS, /* Country */ + LIB, + PORTED +}; + +/* + * Comment + */ +resource rComment (1, purgeable3) { + LIB "\n" + PORTED +}; diff --git a/lib/libtermcap/pathnames.h b/lib/libtermcap/pathnames.h index db3ccf7..7d142aa 100644 --- a/lib/libtermcap/pathnames.h +++ b/lib/libtermcap/pathnames.h @@ -31,6 +31,12 @@ * SUCH DAMAGE. * * @(#)pathnames.h 8.1 (Berkeley) 6/4/93 + * + * $Id: pathnames.h,v 1.2 1997/10/03 04:52:59 gdr Exp $ */ +#ifdef __GNO__ +#define _PATH_DEF "termcap /etc/termcap" +#else #define _PATH_DEF ".termcap /usr/share/misc/termcap" +#endif diff --git a/lib/libtermcap/termcap.3 b/lib/libtermcap/termcap.3 index d85ec45..80d9617 100644 --- a/lib/libtermcap/termcap.3 +++ b/lib/libtermcap/termcap.3 @@ -31,6 +31,8 @@ .\" .\" @(#)termcap.3 8.2 (Berkeley) 12/11/93 .\" +.\" $Id: termcap.3,v 1.2 1997/10/03 04:52:59 gdr Exp $ +.\" .TH TERMCAP 3 "September 1997" GNO "Library Routines" .SH NAME .BR tgetent , @@ -73,7 +75,8 @@ void \fB_set_ospeed\fR (long \fIspeed\fR); .SH DESCRIPTION These functions extract and use capabilities from a terminal capability data base, usually -.BR /usr/share/misc/termcap , +.\" /usr/share/misc/termcap , +.BR /etc/termcap , the format of which is described in .BR termcap (5). These are low level routines; @@ -131,7 +134,8 @@ is different from searches the files .BR $HOME/.termcap and -.BR /usr/share/misc/termcap , +.\" /usr/share/misc/termcap , +.BR /etc/termcap , in that order, unless the environment variable .BR TERMPATH exists, @@ -145,7 +149,8 @@ This can speed up entry into programs that call .BR tgetent , as well as help debug new terminal descriptions or make one for your terminal if you can't write the file -.BR /usr/share/misc/termcap . +.\" /usr/share/misc/termcap . +.BR /etc/termcap . .LP The .BR tgetnum @@ -272,14 +277,17 @@ returns .BR OOPS . .SH FILES .RS -.IP \fB/usr/lib/libtermcap.a\fR +.\" \fB/usr/lib/libtermcap.a\fR +.IP \fB/usr/lib/libtermcap\fR The .BR ltermcap library (also known as .BR ltermlib ). -.IP \fB/usr/share/misc/termcap\fR +.\" \fB/usr/share/misc/termcap\fR +.IP \fB/etc/termcap\fR standard terminal capability data base -.IP \fB$HOME/.termcap\fR +.\" \fB$HOME/.termcap\fR +.IP \fB$HOME/termcap\fR user's terminal capability data base .RE .SH SEE ALSO diff --git a/lib/libtermcap/termcap.c b/lib/libtermcap/termcap.c index 7f8d39d..aa9b38b 100644 --- a/lib/libtermcap/termcap.c +++ b/lib/libtermcap/termcap.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#ifndef lint +#if !defined(lint) && !defined(__GNO__) static char sccsid[] = "@(#)termcap.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ diff --git a/lib/libtermcap/termcap.h b/lib/libtermcap/termcap.h index bec39cf..5cb1a3a 100644 --- a/lib/libtermcap/termcap.h +++ b/lib/libtermcap/termcap.h @@ -24,12 +24,14 @@ * SUCH DAMAGE. */ -/* $Id: termcap.h,v 1.1 1997/09/30 06:23:55 gdr Exp $ */ +/* Don't include a cvs ident string; it interferes with the builds */ #ifndef _TERMCAP_H_ #define _TERMCAP_H_ +#ifndef _SYS_CDEFS_H_ #include +#endif __BEGIN_DECLS diff --git a/lib/libtermcap/tgoto.c b/lib/libtermcap/tgoto.c index e28a85c..b96aa7f 100644 --- a/lib/libtermcap/tgoto.c +++ b/lib/libtermcap/tgoto.c @@ -31,10 +31,11 @@ * SUCH DAMAGE. */ -#ifndef lint +#if !defined(lint) && !defined(__GNO__) static char sccsid[] = "@(#)tgoto.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ +#include #include "termcap.h" #define CTRL(c) ((c) & 037) diff --git a/lib/libtermcap/tospeed.c b/lib/libtermcap/tospeed.c index dd2026a..926221f 100644 --- a/lib/libtermcap/tospeed.c +++ b/lib/libtermcap/tospeed.c @@ -31,7 +31,17 @@ static struct stable { speed_t speed; short code; } table[] = { +#ifndef __GNO__ + /* It may actually be possible to compile this speed for GNO. + * There are, however, some concerns: + * 1. Will any hardware support it? + * 2. Do we overflow any state variables when we go past + * B57600? + * 3. Do we need any changes to the kernel? + * These issues are as yet unresolved. + */ {B115200,17}, +#endif {B57600, 16}, {B38400, 15}, {B19200, 14}, @@ -69,4 +79,3 @@ void __set_ospeed(speed_t speed) } ospeed = 1; /* 50, min and not hangup */ } - diff --git a/lib/libtermcap/tparm.c b/lib/libtermcap/tparm.c index 6a537ce..cbfe395 100644 --- a/lib/libtermcap/tparm.c +++ b/lib/libtermcap/tparm.c @@ -52,8 +52,8 @@ static int argcnt; static va_list tparm_args; static int -pusharg(arg) -int arg; { +pusharg(int arg) +{ if (pos == MAX_PUSHED) return 1; S[pos].type = ARG; @@ -62,8 +62,8 @@ int arg; { } static int -pushnum(num) -int num; { +pushnum(int num) +{ if (pos == MAX_PUSHED) return 1; S[pos].type = NUM; @@ -73,9 +73,8 @@ int num; { /* VARARGS2 */ static int -getarg(argnum, type, p) -int argnum, type; -anyptr p; { +getarg(int argnum, int type, anyptr p) +{ while (argcnt < argnum) { arg_list[argcnt].type = INTEGER; arg_list[argcnt++].integer = (int) va_arg(tparm_args, int); @@ -100,8 +99,8 @@ anyptr p; { static int -popstring(str) -char **str; { +popstring(char **str) +{ if (pos-- == 0) return 1; if (S[pos].type != ARG) @@ -110,8 +109,8 @@ char **str; { } static int -popnum(num) -int *num; { +popnum(int *num) +{ if (pos-- == 0) return 1; switch (S[pos].type) { @@ -125,8 +124,8 @@ int *num; { } static int -cvtchar(sp, c) -register char *sp, *c; { +cvtchar(register char *sp, register char *c) +{ switch(*sp) { case '\\': switch(*++sp) { @@ -237,6 +236,14 @@ static int termcap; */ +#ifdef __ORCAC__ +#pragma debug 0 +#pragma optimize 78 +#define STATIC static +#else +#define STATIC +#endif + char *tparm(const char *str, ...) { static char OOPS[] = "OOPS"; static char buf[MAX_LINE]; @@ -248,8 +255,8 @@ char *tparm(const char *str, ...) { int scan_depth = 0, if_depth; static int i, j; static char *s, c; - char fmt_buf[MAX_LINE]; - char sbuf[MAX_LINE]; + STATIC char fmt_buf[MAX_LINE]; + STATIC char sbuf[MAX_LINE]; va_start(tparm_args, str); @@ -283,7 +290,7 @@ char *tparm(const char *str, ...) { if_depth++; else if (*sp == ';') { if (if_depth == 0) - return OOPS; + goto ret_OOPS; else if_depth--; } @@ -298,10 +305,10 @@ char *tparm(const char *str, ...) { case '+': if (!termcap) { if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i += j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; } @@ -309,7 +316,7 @@ char *tparm(const char *str, ...) { case 'C': if (*sp == 'C') { if (getarg(termcap - 1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; if (i >= 96) { i /= 96; if (i == '$') @@ -321,11 +328,11 @@ char *tparm(const char *str, ...) { /* FALLTHROUGH */ case 'a': if (!termcap) - return OOPS; + goto ret_OOPS; if (getarg(termcap - 1, INTEGER, (anyptr) &i)) - return OOPS; + goto ret_OOPS; if (*++sp == '\0') - return OOPS; + goto ret_OOPS; if ((sp[1] == 'p' || sp[1] == 'c') && sp[2] != '\0' && fmt == NULL) { /* GNU aritmitic parameter, what they @@ -334,7 +341,7 @@ char *tparm(const char *str, ...) { if (sp[1] == 'p' && getarg(termcap - 1 + sp[2] - '@', INTEGER, (anyptr) &val)) - return OOPS; + goto ret_OOPS; if (sp[1] == 'c') { lc = cvtchar(sp + 2, &c) + 2; /* Mask out 8th bit so \200 can be @@ -376,10 +383,10 @@ char *tparm(const char *str, ...) { case '-': if (!termcap) { if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i -= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; } @@ -388,9 +395,9 @@ char *tparm(const char *str, ...) { case 's': if (termcap && (fmt == NULL || *sp == '-')) { if (getarg(termcap - 1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; if (*++sp == '\0') - return OOPS; + goto ret_OOPS; sp += cvtchar(sp, &c); arg_list[termcap - 1].integer = c - i; if (fmt == NULL) @@ -398,7 +405,7 @@ char *tparm(const char *str, ...) { sp--; } if (!termcap) - return OOPS; + goto ret_OOPS; ;/* FALLTHROUGH */ case '.': if (termcap && fmt == NULL) @@ -422,14 +429,14 @@ char *tparm(const char *str, ...) { case '6': case '7': case '8': case '9': if (fmt == NULL) { if (termcap) - return OOPS; + goto ret_OOPS; if (*sp == ':') sp++; fmt = fmt_buf; *fmt++ = '%'; while(*sp != 's' && *sp != 'x' && *sp != 'X' && *sp != 'd' && *sp != 'o' && *sp != 'c' && *sp != 'u') { if (*sp == '\0') - return OOPS; + goto ret_OOPS; *fmt++ = *sp++; } *fmt++ = *sp; @@ -439,16 +446,16 @@ char *tparm(const char *str, ...) { conv_char = fmt[strlen(fmt) - 1]; if (conv_char == 's') { if (popstring(&s)) - return OOPS; + goto ret_OOPS; sprintf(sbuf, fmt, s); } else { if (termcap) { if (getarg(termcap++ - 1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; } else if (popnum(&i)) - return OOPS; + goto ret_OOPS; if (i == 0 && conv_char == 'c') strcpy(sbuf, "\000"); else @@ -464,7 +471,7 @@ char *tparm(const char *str, ...) { break; case 'r': if (!termcap || getarg(1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; arg_list[1].integer = arg_list[0].integer; arg_list[0].integer = i; sp++; @@ -472,14 +479,14 @@ char *tparm(const char *str, ...) { case 'i': if (getarg(1, INTEGER, &i) || arg_list[0].type != INTEGER) - return OOPS; + goto ret_OOPS; arg_list[1].integer++; arg_list[0].integer++; sp++; break; case 'n': if (!termcap || getarg(1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; arg_list[0].integer ^= 0140; arg_list[1].integer ^= 0140; sp++; @@ -487,15 +494,15 @@ char *tparm(const char *str, ...) { case '>': if (!termcap) { if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i = (i > j); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; } if (getarg(termcap-1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; sp += cvtchar(sp, &c); if (i > c) { sp += cvtchar(sp, &c); @@ -506,40 +513,40 @@ char *tparm(const char *str, ...) { break; case 'B': if (!termcap || getarg(termcap-1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; arg_list[termcap-1].integer = 16*(i/10)+i%10; sp++; break; case 'D': if (!termcap || getarg(termcap-1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; arg_list[termcap-1].integer = i - 2 * (i % 16); sp++; break; case 'p': if (termcap > 1) - return OOPS; + goto ret_OOPS; if (*++sp == '\0') - return OOPS; + goto ret_OOPS; if (*sp == '0') i = 9; else i = *sp - '1'; if (i < 0 || i > 9) - return OOPS; + goto ret_OOPS; if (pusharg(i)) - return OOPS; + goto ret_OOPS; termcap = 0; sp++; break; case 'P': if (termcap || *++sp == '\0') - return OOPS; + goto ret_OOPS; i = *sp++ - 'a'; if (i < 0 || i > 25) - return OOPS; + goto ret_OOPS; if (pos-- == 0) - return OOPS; + goto ret_OOPS; switch(vars[i].type = S[pos].type) { case ARG: vars[i].argnum = S[pos].argnum; @@ -551,164 +558,164 @@ char *tparm(const char *str, ...) { break; case 'g': if (termcap || *++sp == '\0') - return OOPS; + goto ret_OOPS; i = *sp++ - 'a'; if (i < 0 || i > 25) - return OOPS; + goto ret_OOPS; switch(vars[i].type) { case ARG: if (pusharg(vars[i].argnum)) - return OOPS; + goto ret_OOPS; break; case NUM: if (pushnum(vars[i].value)) - return OOPS; + goto ret_OOPS; break; } break; case '\'': if (termcap > 1) - return OOPS; + goto ret_OOPS; if (*++sp == '\0') - return OOPS; + goto ret_OOPS; sp += cvtchar(sp, &c); if (pushnum(c) || *sp++ != '\'') - return OOPS; + goto ret_OOPS; termcap = 0; break; case '{': if (termcap > 1) - return OOPS; + goto ret_OOPS; i = 0; sp++; while(isdigit(*sp)) i = 10 * i + *sp++ - '0'; if (*sp++ != '}' || pushnum(i)) - return OOPS; + goto ret_OOPS; termcap = 0; break; case 'l': if (termcap || popstring(&s)) - return OOPS; + goto ret_OOPS; i = strlen(s); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '*': if (termcap || popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i *= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '/': if (termcap || popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i /= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case 'm': if (termcap) { if (getarg(1, INTEGER, &i)) - return OOPS; + goto ret_OOPS; arg_list[0].integer ^= 0177; arg_list[1].integer ^= 0177; sp++; break; } if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i %= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '&': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i &= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '|': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i |= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '^': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i ^= j; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '=': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i = (i == j); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '<': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i = (i < j); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case 'A': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i = (i && j); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case 'O': if (popnum(&j) || popnum(&i)) - return OOPS; + goto ret_OOPS; i = (i || j); if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '!': if (popnum(&i)) - return OOPS; + goto ret_OOPS; i = !i; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '~': if (popnum(&i)) - return OOPS; + goto ret_OOPS; i = ~i; if (pushnum(i)) - return OOPS; + goto ret_OOPS; sp++; break; case '?': if (termcap > 1) - return OOPS; + goto ret_OOPS; termcap = 0; if_depth++; sp++; break; case 't': if (popnum(&i) || if_depth == 0) - return OOPS; + goto ret_OOPS; if (!i) { scan_for = 'e'; scan_depth = if_depth; @@ -717,24 +724,24 @@ char *tparm(const char *str, ...) { break; case 'e': if (if_depth == 0) - return OOPS; + goto ret_OOPS; scan_for = ';'; scan_depth = if_depth; sp++; break; case ';': if (if_depth-- == 0) - return OOPS; + goto ret_OOPS; sp++; break; case 'b': if (--termcap < 1) - return OOPS; + goto ret_OOPS; sp++; break; case 'f': if (!termcap++) - return OOPS; + goto ret_OOPS; sp++; break; } @@ -750,4 +757,8 @@ char *tparm(const char *str, ...) { va_end(tparm_args); *dp = '\0'; return buf; + +ret_OOPS: + va_end(tparm_args); + return OOPS; } diff --git a/lib/libtermcap/tputs.c b/lib/libtermcap/tputs.c index 46b6dc2..ffcceff 100644 --- a/lib/libtermcap/tputs.c +++ b/lib/libtermcap/tputs.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#ifndef lint +#if !defined(lint) || !defined(__GNO__) static char sccsid[] = "@(#)tputs.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ @@ -57,13 +57,14 @@ char PC; * The number of affected lines is affcnt, and the routine * used to output one character is outc. */ +int tputs(const char *cp, int affcnt, int (*outc)(int)) { register int i = 0; register int mspc10; if (cp == 0) - return; + return 0; /* * Convert the number representing the delay. @@ -103,9 +104,9 @@ tputs(const char *cp, int affcnt, int (*outc)(int)) * not comprehensible, then don't try to delay. */ if (i == 0) - return; + return 0; if (ospeed <= 0 || ospeed >= (sizeof tmspc10 / sizeof tmspc10[0])) - return; + return 0; /* * Round up by a half a character frame, @@ -118,4 +119,5 @@ tputs(const char *cp, int affcnt, int (*outc)(int)) i += mspc10 / 2; for (i /= mspc10; i > 0; i--) (*outc)(PC); + return 0; }