From: Ben Gras Date: Wed, 20 Jul 2011 13:44:59 +0000 (+0200) Subject: cleanup of libterminfo introduction X-Git-Tag: v3.2.0~437 X-Git-Url: http://zhaoyanbai.com/repos/rndc.html?a=commitdiff_plain;h=000a9d36bec7fe78630b4b57b61c98b8074cf8b9;p=minix.git cleanup of libterminfo introduction . don't install minix as libterminfo has its own (but still install it in /usr/include.ack) . forget minix termcap functions in -lcompat_minix . make commands use -lterminfo in netbsd libc compile mode --- diff --git a/commands/Makefile.inc b/commands/Makefile.inc index f10e293fb..f927292cc 100644 --- a/commands/Makefile.inc +++ b/commands/Makefile.inc @@ -1,6 +1,6 @@ .if (${NBSD_LIBC} != "no") CPPFLAGS+= -D_MINIX -D_NETBSD_SOURCE -D_MINIX_COMPAT -LDADD+= -lminlib -lcompat_minix -lasyn +LDADD+= -lminlib -lcompat_minix -lasyn -lterminfo .else CPPFLAGS+= -D_MINIX -D_POSIX_SOURCE .endif diff --git a/lib/nbsd_libcompat_minix/Makefile b/lib/nbsd_libcompat_minix/Makefile index f91adba7a..619fdcb5a 100644 --- a/lib/nbsd_libcompat_minix/Makefile +++ b/lib/nbsd_libcompat_minix/Makefile @@ -24,12 +24,6 @@ SRCS+= nlist.c # NetBSD's 'mtab' format. SRCS+= mtab.c -# Termcap. -# Included in the Minix libc. -# -# Should be removed once we switch to terminfo. -SRCS+= termcap.c - # Minix legacy passwd format # These should be removed when we switch to # NetBSD's 'passwd' db-based format. diff --git a/lib/nbsd_libcompat_minix/include/Makefile.inc b/lib/nbsd_libcompat_minix/include/Makefile.inc index c07ff6715..88965f3e8 100644 --- a/lib/nbsd_libcompat_minix/include/Makefile.inc +++ b/lib/nbsd_libcompat_minix/include/Makefile.inc @@ -2,7 +2,7 @@ INCSDIR= /usr/include -INCS+= configfile.h termcap.h +INCS+= configfile.h INCS+= compat/a.out.h compat/regexp.h compat/syslog.h \ compat/pwd.h INCS+= net/gen/netdb.h net/gen/resolv.h net/gen/nameser.h diff --git a/lib/nbsd_libcompat_minix/include/termcap.h b/lib/nbsd_libcompat_minix/include/termcap.h deleted file mode 100644 index 5dfc50ff3..000000000 --- a/lib/nbsd_libcompat_minix/include/termcap.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _TERMCAP_H -#define _TERMCAP_H - -#include - -_PROTOTYPE( int tgetent, (char *_bp, char *_name) ); -_PROTOTYPE( int tgetflag, (char *_id) ); -_PROTOTYPE( int tgetnum, (char *_id) ); -_PROTOTYPE( char *tgetstr, (char *_id, char **_area) ); -_PROTOTYPE( char *tgoto, (char *_cm, int _destcol, int _destline) ); -_PROTOTYPE( int tputs, (char *_cp, int _affcnt, void (*_outc)(int)) ); - -#endif /* _TERMCAP_H */ diff --git a/lib/nbsd_libcompat_minix/termcap.c b/lib/nbsd_libcompat_minix/termcap.c deleted file mode 100644 index 2f08af286..000000000 --- a/lib/nbsd_libcompat_minix/termcap.c +++ /dev/null @@ -1,326 +0,0 @@ -/* - * termcap.c V1.1 20/7/87 agc Joypace Ltd - * - * Copyright Joypace Ltd, London, UK, 1987. All rights reserved. - * This file may be freely distributed provided that this notice - * remains attached. - * - * A public domain implementation of the termcap(3) routines. - * - * - * - * Klamer Schutte V1.2 Nov. 1988 - * - * - Can match multiple terminal names [tgetent] - * - Removal of **area assignments [tgetstr] - * - * Terrence W. Holm V1.3 May, Sep, Oct. 1988 - * - * - Correct when TERM != name and TERMCAP is defined [tgetent] - * - Correct the comparison for the terminal name [tgetent] - * - Correct the value of ^x escapes [tgetstr] - * - Added %r to reverse row/column [tgoto] - * - Fixed end of definition test [tgetnum/flag/str] - * - * Terrence W. Holm V1.4 Jan. 1989 - * - * - Incorporated Klamer's V1.2 fixes into V1.3 - * - Added %d, (old %d is now %2) [tgoto] - * - Allow '#' comments in definition file [tgetent] - */ - -#include -#include -#include -#include -#include -#include -#include - -char *capab = (char *)NULL; /* the capability itself */ - -#if 0 -/* The following are not yet used. */ -extern short ospeed; /* output speed */ -extern char PC; /* padding character */ -extern char *BC; /* back cursor movement */ -extern char *UP; /* up cursor movement */ -#endif - -/* - * tgetent - get the termcap entry for terminal name, and put it - * in bp (which must be an array of 1024 chars). Returns 1 if - * termcap entry found, 0 if not found, and -1 if file not found. - */ - -int tgetent(bp, name) -char *bp; -char *name; -{ - FILE *fp; - char *file; - char *term; - short len = strlen(name); - - capab = bp; - - /* If TERMCAP begins with a '/' then use TERMCAP as the path */ - /* Name of the termcap definitions file. If TERMCAP is a */ - /* Definition and TERM equals "name" then use TERMCAP as the */ - /* Definition. Otherwise use "/etc/termcap" as the path name. */ - - if ((file = getenv("TERMCAP")) == (char *)NULL) - file = "/etc/termcap"; - else if (*file != '/') - if ((term = getenv("TERM")) != (char *)NULL && strcmp(term, name) == 0) { - *bp = '\0'; - strncat(bp, file, 1023); - return(1); - } else - file = "/etc/termcap"; - - if ((fp = fopen(file, "r")) == (FILE *) NULL) { - capab = (char *)NULL; /* no valid termcap */ - return(-1); - } - for (;;) { - /* Read in each definition */ - int def_len = 0; - char *cp = bp; - - do { - if (fgets(&bp[def_len], (unsigned int)(1024 - def_len), fp) == (char *)NULL) { - fclose(fp); - capab = (char *)NULL; /* no valid termcap */ - return(0); - } - def_len = strlen(bp) - 2; - } while (bp[def_len] == '\\'); - - while (isspace(*cp)) cp++; - - /* Comment lines start with a '#' */ - if (*cp == '#') continue; - - /* See if any of the terminal names in this definition */ - /* Match "name". */ - - do { - if (strncmp(name, cp, len) == 0 && - (cp[len] == '|' || cp[len] == ':')) { - fclose(fp); - return(1); - } - while ((*cp) && (*cp != '|') && (*cp != ':')) cp++; - } while (*cp++ == '|'); - } -} - - -/* - * tgetnum - get the numeric terminal capability corresponding - * to id. Returns the value, -1 if invalid. - */ - -int tgetnum(id) -char *id; -{ - register char *cp = capab; - - if (cp == (char *)NULL || id == (char *)NULL) return(-1); - - for (;;) { - while (*cp++ != ':') - if (cp[-1] == '\0') return(-1); - - while (isspace(*cp)) cp++; - - if (strncmp(cp, id, 2) == 0 && cp[2] == '#') return(atoi(cp + 3)); - } -} - - -/* - * tgetflag - get the boolean flag corresponding to id. Returns -1 - * if invalid, 0 if the flag is not in termcap entry, or 1 if it is - * present. - */ - -int tgetflag(id) -char *id; -{ - register char *cp = capab; - - if (cp == (char *)NULL || id == (char *)NULL) return(-1); - - for (;;) { - while (*cp++ != ':') - if (cp[-1] == '\0') return(0); - - while (isspace(*cp)) cp++; - - if (strncmp(cp, id, 2) == 0) return(1); - } -} - - -/* - * tgetstr - get the string capability corresponding to id and place - * it in area (advancing area at same time). Expand escape sequences - * etc. Returns the string, or NULL if it can't do it. - */ - -char *tgetstr(id, area) -char *id; -char **area; -{ - register char *cp = capab; - register char *wsp = *area; /* workspace pointer */ - - if (cp == (char *)NULL || id == (char *)NULL) return((char *)NULL); - - for (;;) { - while (*cp++ != ':') - if (cp[-1] == '\0') return((char *)NULL); - - while (isspace(*cp)) cp++; - - if (strncmp(cp, id, 2) == 0 && cp[2] == '=') { - for (cp += 3; *cp && *cp != ':'; wsp++, cp++) switch (*cp) { - case '^': - *wsp = *++cp - '@'; - break; - - case '\\': - switch (*++cp) { - case 'E': - *wsp = '\033'; - break; - case 'n': - *wsp = '\n'; - break; - case 'r': - *wsp = '\r'; - break; - case 't': - *wsp = '\t'; - break; - case 'b': - *wsp = '\b'; - break; - case 'f': - *wsp = '\f'; - break; - case '0': - case '1': - case '2': - case '3': - { - int i; - int t = 0; - for (i = 0; i < 3 && - isdigit(*cp); ++i, ++cp) - t = t * 8 + *cp - '0'; - *wsp = t; - cp--; - break; - } - default: - *wsp = *cp; - } - break; - - default: *wsp = *cp; - } - - *wsp++ = '\0'; - - { - char *ret = *area; - *area = wsp; - return(ret); - } - } - } /* end for(;;) */ -} - - - -/* - * tgoto - given the cursor motion string cm, make up the string - * for the cursor to go to (destcol, destline), and return the string. - * Returns "OOPS" if something's gone wrong, or the string otherwise. - */ - -char *tgoto(cm, destcol, destline) -char *cm; -int destcol; -int destline; -{ - PRIVATE char ret[24]; - char *rp = ret; - int incr = 0; - int argno = 0; - int numval; - - for (; *cm; cm++) { - if (*cm == '%') { - switch (*++cm) { - case 'i': incr = 1; break; - - case 'r': argno = 1; break; - - case '+': - numval = (argno == 0 ? destline : destcol); - *rp++ = numval + incr + *++cm; - argno = 1 - argno; - break; - - case '2': - numval = (argno == 0 ? destline : destcol); - numval = (numval + incr) % 100; - *rp++ = '0' + (numval / 10); - *rp++ = '0' + (numval % 10); - argno = 1 - argno; - break; - - case 'd': - numval = (argno == 0 ? destline : destcol); - numval = (numval + incr) % 1000; - if (numval > 99) *rp++ = '0' + (numval / 100); - if (numval > 9) *rp++ = '0' + (numval / 10) % 10; - *rp++ = '0' + (numval % 10); - argno = 1 - argno; - break; - - case '%': *rp++ = '%'; break; - - default: return("OOPS"); - } - - } else - *rp++ = *cm; - } - - *rp = '\0'; - return(ret); -} - - - -/* - * tputs - put the string cp out onto the terminal, using the function - * outc. This should do padding for the terminal, but I can't find a - * terminal that needs padding at the moment... - */ - -int tputs(cp, affcnt, outc) -register char *cp; -int affcnt; -_PROTOTYPE( void (*outc), (int ch)); -{ - if (cp == (char *)NULL) return(1); - /* Do any padding interpretation - left null for MINIX just now */ - while (*cp) (*outc) (*cp++); - return(1); -}