diff options
author | Thorsten Lockert <tholo@cvs.openbsd.org> | 1996-09-21 19:22:30 +0000 |
---|---|---|
committer | Thorsten Lockert <tholo@cvs.openbsd.org> | 1996-09-21 19:22:30 +0000 |
commit | a6ef908eb49a3c3b5dd9580e23357e941669ebce (patch) | |
tree | 81edb6e16afad07c6f762aa88370f5065b2b59c5 | |
parent | 3843631d7cc380bd3d50bf322a8f82b8ddc1e140 (diff) |
Make vidattr() and vidputs() weak bindings, avoids problems with linking to
the curses library on some platforms (and the curses library has more
complete implementation of them).
-rw-r--r-- | lib/libtermlib/Makefile | 6 | ||||
-rw-r--r-- | lib/libtermlib/_vidattr.c | 45 | ||||
-rw-r--r-- | lib/libtermlib/_vidputs.c | 127 | ||||
-rw-r--r-- | lib/libtermlib/vidattr.c | 22 | ||||
-rw-r--r-- | lib/libtermlib/vidputs.c | 100 |
5 files changed, 197 insertions, 103 deletions
diff --git a/lib/libtermlib/Makefile b/lib/libtermlib/Makefile index 31a0e9b2814..173f56fabef 100644 --- a/lib/libtermlib/Makefile +++ b/lib/libtermlib/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.2 1996/08/31 02:36:59 tholo Exp $ +# $OpenBSD: Makefile,v 1.3 1996/09/21 19:22:25 tholo Exp $ # # Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> # All rights reserved. @@ -35,7 +35,9 @@ SRCS= captoinfo.c def_prog_mode.c def_shell_mode.c del_curterm.c \ outc.c putp.c reset_prog_mode.c reset_shell_mode.c \ restartterm.c setterm.c setupterm.c set_curterm.c tgetent.c \ tgetflag.c tgetnum.c tgetstr.c tgoto.c tigetflag.c tigetnum.c \ - tigetstr.c tparm.c tputs.c tty_init.c vidattr.c vidputs.c \ + tigetstr.c tparm.c tputs.c tty_init.c \ + vidattr.c _vidattr.c \ + vidputs.c _vidputs.c \ captoidx.c infotoidx.c \ boolnames.c boolcodes.c boolfnames.c \ numnames.c numcodes.c numfnames.c \ diff --git a/lib/libtermlib/_vidattr.c b/lib/libtermlib/_vidattr.c new file mode 100644 index 00000000000..3c73b66f14e --- /dev/null +++ b/lib/libtermlib/_vidattr.c @@ -0,0 +1,45 @@ +/* $OpenBSD: _vidattr.c,v 1.1 1996/09/21 19:22:26 tholo Exp $ */ + +/* + * Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by SigmaSoft, Th. Lockert. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef lint +static char rcsid[] = "$OpenBSD: _vidattr.c,v 1.1 1996/09/21 19:22:26 tholo Exp $"; +#endif + +#include <stdlib.h> +#include "term.h" + +int +_vidattr(attrs) + chtype attrs; +{ + return vidputs(attrs, _ti_outc); +} diff --git a/lib/libtermlib/_vidputs.c b/lib/libtermlib/_vidputs.c new file mode 100644 index 00000000000..1ae3d6f3225 --- /dev/null +++ b/lib/libtermlib/_vidputs.c @@ -0,0 +1,127 @@ +/* $OpenBSD: _vidputs.c,v 1.1 1996/09/21 19:22:27 tholo Exp $ */ + +/* + * Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by SigmaSoft, Th. Lockert. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef lint +static char rcsid[] = "$OpenBSD: _vidputs.c,v 1.1 1996/09/21 19:22:27 tholo Exp $"; +#endif + +#include <stdlib.h> +#include "term.h" + +int +_vidputs(attr, outc) + chtype attr; + int (*outc) __P((int)); +{ + static chtype old_attr; + chtype attr_on, attr_off; + + if (attr == old_attr) + return OK; + + attr_on = (~attr & old_attr) & (chtype)(~A_COLOR); + attr_off = (attr & ~old_attr) & (chtype)(~A_COLOR); + + if (attr == A_NORMAL) { + if ((old_attr & A_ALTCHARSET) && exit_alt_charset_mode != NULL) { + tputs(exit_alt_charset_mode, 1, outc); + old_attr &= ~A_ALTCHARSET; + } + if (old_attr) + tputs(exit_attribute_mode, 1, outc); + } + else if (set_attributes) { + if (attr_on || attr_off) { + tputs(tparm(set_attributes, + attr_on & A_STANDOUT, + attr_on & A_UNDERLINE, + attr_on & A_REVERSE, + attr_on & A_BLINK, + attr_on & A_DIM, + attr_on & A_BOLD, + attr_on & A_INVIS, + attr_on & A_PROTECT, + attr_on & A_ALTCHARSET), + 1, outc); + } + } + else { + if ((attr_off & A_ALTCHARSET) && exit_alt_charset_mode != NULL) { + tputs(exit_alt_charset_mode, 1, outc); + attr_off &= ~A_ALTCHARSET; + } + if ((attr_off & A_UNDERLINE) && exit_underline_mode != NULL) { + tputs(exit_underline_mode, 1, outc); + attr_off &= ~A_UNDERLINE; + } + if ((attr_off & A_STANDOUT) && exit_standout_mode != NULL) { + tputs(exit_standout_mode, 1, outc); + attr_off &= ~A_STANDOUT; + } + if (attr_off && exit_attribute_mode != NULL) { + tputs(exit_attribute_mode, 1, outc); + attr_on |= (attr & (chtype)(~A_COLOR)); + } + if ((attr_on & A_ALTCHARSET) && enter_alt_charset_mode != NULL) + tputs(enter_alt_charset_mode, 1, outc); + if ((attr_on & A_BLINK) && enter_blink_mode != NULL) + tputs(enter_blink_mode, 1, outc); + if ((attr_on & A_BOLD) && enter_bold_mode != NULL) + tputs(enter_bold_mode, 1, outc); + if ((attr_on & A_DIM) && enter_dim_mode != NULL) + tputs(enter_dim_mode, 1, outc); + if ((attr_on & A_REVERSE) && enter_reverse_mode != NULL) + tputs(enter_reverse_mode, 1, outc); + if ((attr_on & A_STANDOUT) && enter_standout_mode != NULL) + tputs(enter_standout_mode, 1, outc); + if ((attr_on & A_PROTECT) && enter_protected_mode != NULL) + tputs(enter_protected_mode, 1, outc); + if ((attr_on & A_INVIS) && enter_secure_mode != NULL) + tputs(enter_secure_mode, 1, outc); + if ((attr_on & A_UNDERLINE) && enter_underline_mode != NULL) + tputs(enter_underline_mode, 1, outc); + if ((attr_on & A_HORIZONTAL) && enter_horizontal_hl_mode != NULL) + tputs(enter_horizontal_hl_mode, 1, outc); + if ((attr_on & A_LEFT) && enter_left_hl_mode != NULL) + tputs(enter_left_hl_mode, 1, outc); + if ((attr_on & A_LOW) && enter_low_hl_mode != NULL) + tputs(enter_low_hl_mode, 1, outc); + if ((attr_on & A_RIGHT) && enter_right_hl_mode != NULL) + tputs(enter_right_hl_mode, 1, outc); + if ((attr_on & A_TOP) && enter_top_hl_mode != NULL) + tputs(enter_top_hl_mode, 1, outc); + if ((attr_on & A_VERTICAL) && enter_vertical_hl_mode != NULL) + tputs(enter_vertical_hl_mode, 1, outc); + } + old_attr = attr; + return OK; +} diff --git a/lib/libtermlib/vidattr.c b/lib/libtermlib/vidattr.c index fb54cc41529..7b97bef3a2c 100644 --- a/lib/libtermlib/vidattr.c +++ b/lib/libtermlib/vidattr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vidattr.c,v 1.1 1996/05/31 05:40:02 tholo Exp $ */ +/* $OpenBSD: vidattr.c,v 1.2 1996/09/21 19:22:28 tholo Exp $ */ /* * Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> @@ -31,17 +31,17 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: vidattr.c,v 1.1 1996/05/31 05:40:02 tholo Exp $"; +static char rcsid[] = "$OpenBSD: vidattr.c,v 1.2 1996/09/21 19:22:28 tholo Exp $"; #endif -#include <stdlib.h> -#include "term.h" +#include <sys/cdefs.h> -#undef vidattr +#ifdef __indr_reference +__indr_reference(_vidattr, vidattr); +#else -int -vidattr(attrs) - chtype attrs; -{ - return vidputs(attrs, _ti_outc); -} +#define _vidattr vidattr +#define rcsid _rcsid +#include "_vidattr.c" + +#endif diff --git a/lib/libtermlib/vidputs.c b/lib/libtermlib/vidputs.c index 5639ac212db..51a79b8f014 100644 --- a/lib/libtermlib/vidputs.c +++ b/lib/libtermlib/vidputs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vidputs.c,v 1.2 1996/07/20 07:35:04 tholo Exp $ */ +/* $OpenBSD: vidputs.c,v 1.3 1996/09/21 19:22:29 tholo Exp $ */ /* * Copyright (c) 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> @@ -31,97 +31,17 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: vidputs.c,v 1.2 1996/07/20 07:35:04 tholo Exp $"; +static char rcsid[] = "$OpenBSD: vidputs.c,v 1.3 1996/09/21 19:22:29 tholo Exp $"; #endif -#include <stdlib.h> -#include "term.h" +#include <sys/cdefs.h> -int -vidputs(attr, outc) - chtype attr; - int (*outc) __P((int)); -{ - static chtype old_attr; - chtype attr_on, attr_off; +#ifdef __indr_reference +__indr_reference(_vidputs, vidputs); +#else - if (attr == old_attr) - return OK; +#define _vidputs vidputs +#define rcsid _rcsid +#include "_vidputs.c" - attr_on = (~attr & old_attr) & (chtype)(~A_COLOR); - attr_off = (attr & ~old_attr) & (chtype)(~A_COLOR); - - if (attr == A_NORMAL) { - if ((old_attr & A_ALTCHARSET) && exit_alt_charset_mode != NULL) { - tputs(exit_alt_charset_mode, 1, outc); - old_attr &= ~A_ALTCHARSET; - } - if (old_attr) - tputs(exit_attribute_mode, 1, outc); - } - else if (set_attributes) { - if (attr_on || attr_off) { - tputs(tparm(set_attributes, - attr_on & A_STANDOUT, - attr_on & A_UNDERLINE, - attr_on & A_REVERSE, - attr_on & A_BLINK, - attr_on & A_DIM, - attr_on & A_BOLD, - attr_on & A_INVIS, - attr_on & A_PROTECT, - attr_on & A_ALTCHARSET), - 1, outc); - } - } - else { - if ((attr_off & A_ALTCHARSET) && exit_alt_charset_mode != NULL) { - tputs(exit_alt_charset_mode, 1, outc); - attr_off &= ~A_ALTCHARSET; - } - if ((attr_off & A_UNDERLINE) && exit_underline_mode != NULL) { - tputs(exit_underline_mode, 1, outc); - attr_off &= ~A_UNDERLINE; - } - if ((attr_off & A_STANDOUT) && exit_standout_mode != NULL) { - tputs(exit_standout_mode, 1, outc); - attr_off &= ~A_STANDOUT; - } - if (attr_off && exit_attribute_mode != NULL) { - tputs(exit_attribute_mode, 1, outc); - attr_on |= (attr & (chtype)(~A_COLOR)); - } - if ((attr_on & A_ALTCHARSET) && enter_alt_charset_mode != NULL) - tputs(enter_alt_charset_mode, 1, outc); - if ((attr_on & A_BLINK) && enter_blink_mode != NULL) - tputs(enter_blink_mode, 1, outc); - if ((attr_on & A_BOLD) && enter_bold_mode != NULL) - tputs(enter_bold_mode, 1, outc); - if ((attr_on & A_DIM) && enter_dim_mode != NULL) - tputs(enter_dim_mode, 1, outc); - if ((attr_on & A_REVERSE) && enter_reverse_mode != NULL) - tputs(enter_reverse_mode, 1, outc); - if ((attr_on & A_STANDOUT) && enter_standout_mode != NULL) - tputs(enter_standout_mode, 1, outc); - if ((attr_on & A_PROTECT) && enter_protected_mode != NULL) - tputs(enter_protected_mode, 1, outc); - if ((attr_on & A_INVIS) && enter_secure_mode != NULL) - tputs(enter_secure_mode, 1, outc); - if ((attr_on & A_UNDERLINE) && enter_underline_mode != NULL) - tputs(enter_underline_mode, 1, outc); - if ((attr_on & A_HORIZONTAL) && enter_horizontal_hl_mode != NULL) - tputs(enter_horizontal_hl_mode, 1, outc); - if ((attr_on & A_LEFT) && enter_left_hl_mode != NULL) - tputs(enter_left_hl_mode, 1, outc); - if ((attr_on & A_LOW) && enter_low_hl_mode != NULL) - tputs(enter_low_hl_mode, 1, outc); - if ((attr_on & A_RIGHT) && enter_right_hl_mode != NULL) - tputs(enter_right_hl_mode, 1, outc); - if ((attr_on & A_TOP) && enter_top_hl_mode != NULL) - tputs(enter_top_hl_mode, 1, outc); - if ((attr_on & A_VERTICAL) && enter_vertical_hl_mode != NULL) - tputs(enter_vertical_hl_mode, 1, outc); - } - old_attr = attr; - return OK; -} +#endif |