1*00b67f09SDavid van Moolenbroek /* $NetBSD: tcap.c,v 1.1.1.1 2015/07/08 15:37:48 christos Exp $ */
2*00b67f09SDavid van Moolenbroek
3*00b67f09SDavid van Moolenbroek /*****************************************************************
4*00b67f09SDavid van Moolenbroek **
5*00b67f09SDavid van Moolenbroek ** tcap.c -- termcap color capabilities
6*00b67f09SDavid van Moolenbroek **
7*00b67f09SDavid van Moolenbroek ** (c) Jan 1991 - Feb 2010 by hoz
8*00b67f09SDavid van Moolenbroek **
9*00b67f09SDavid van Moolenbroek ** Feb 2002 max line size increased to 512 byte
10*00b67f09SDavid van Moolenbroek ** default terminal "html" added
11*00b67f09SDavid van Moolenbroek ** Feb 2010 color capabilities added
12*00b67f09SDavid van Moolenbroek **
13*00b67f09SDavid van Moolenbroek *****************************************************************/
14*00b67f09SDavid van Moolenbroek
15*00b67f09SDavid van Moolenbroek #include <stdio.h>
16*00b67f09SDavid van Moolenbroek #include <string.h>
17*00b67f09SDavid van Moolenbroek
18*00b67f09SDavid van Moolenbroek #ifdef HAVE_CONFIG_H
19*00b67f09SDavid van Moolenbroek # include <config.h>
20*00b67f09SDavid van Moolenbroek #endif
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van Moolenbroek # include "config_zkt.h"
23*00b67f09SDavid van Moolenbroek
24*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
25*00b67f09SDavid van Moolenbroek # ifdef HAVE_TERM_H
26*00b67f09SDavid van Moolenbroek # include <term.h>
27*00b67f09SDavid van Moolenbroek # endif
28*00b67f09SDavid van Moolenbroek # ifdef HAVE_CURSES_H
29*00b67f09SDavid van Moolenbroek # include <curses.h>
30*00b67f09SDavid van Moolenbroek # endif
31*00b67f09SDavid van Moolenbroek #endif
32*00b67f09SDavid van Moolenbroek
33*00b67f09SDavid van Moolenbroek #define extern
34*00b67f09SDavid van Moolenbroek # include "tcap.h"
35*00b67f09SDavid van Moolenbroek #undef extern
36*00b67f09SDavid van Moolenbroek
37*00b67f09SDavid van Moolenbroek /*****************************************************************
38*00b67f09SDavid van Moolenbroek ** global vars
39*00b67f09SDavid van Moolenbroek *****************************************************************/
40*00b67f09SDavid van Moolenbroek /* termcap strings */
41*00b67f09SDavid van Moolenbroek static const char *is1 = "";
42*00b67f09SDavid van Moolenbroek static const char *is2 = "";
43*00b67f09SDavid van Moolenbroek static const char *r1 = "";
44*00b67f09SDavid van Moolenbroek static const char *r2 = "";
45*00b67f09SDavid van Moolenbroek static const char *bold_on = "";
46*00b67f09SDavid van Moolenbroek static const char *bold_off = "";
47*00b67f09SDavid van Moolenbroek static const char *italic_on = "";
48*00b67f09SDavid van Moolenbroek static const char *italic_off = "";
49*00b67f09SDavid van Moolenbroek static char colortab[8][31+1];
50*00b67f09SDavid van Moolenbroek
51*00b67f09SDavid van Moolenbroek /* termcap numbers */
52*00b67f09SDavid van Moolenbroek static int maxcolor;
53*00b67f09SDavid van Moolenbroek
54*00b67f09SDavid van Moolenbroek /* function declaration */
55*00b67f09SDavid van Moolenbroek static int tc_printattr (FILE *fp, const char *attstr);
56*00b67f09SDavid van Moolenbroek static int tc_color (FILE *fp, int color);
57*00b67f09SDavid van Moolenbroek
58*00b67f09SDavid van Moolenbroek static int html = 0;
59*00b67f09SDavid van Moolenbroek
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van Moolenbroek
62*00b67f09SDavid van Moolenbroek /*****************************************************************
63*00b67f09SDavid van Moolenbroek ** global functions
64*00b67f09SDavid van Moolenbroek *****************************************************************/
65*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
tc_init(FILE * fp,const char * term)66*00b67f09SDavid van Moolenbroek int tc_init (FILE *fp, const char *term)
67*00b67f09SDavid van Moolenbroek {
68*00b67f09SDavid van Moolenbroek static char area[1024];
69*00b67f09SDavid van Moolenbroek char buf[1024];
70*00b67f09SDavid van Moolenbroek char *ap = area;
71*00b67f09SDavid van Moolenbroek char *af = ""; /* AF */ /* ansi foreground */
72*00b67f09SDavid van Moolenbroek int i;
73*00b67f09SDavid van Moolenbroek
74*00b67f09SDavid van Moolenbroek /* clear all color strings */
75*00b67f09SDavid van Moolenbroek for ( i = 0; i < 8; i++ )
76*00b67f09SDavid van Moolenbroek colortab[i][0] = '\0';
77*00b67f09SDavid van Moolenbroek
78*00b67f09SDavid van Moolenbroek if ( term == NULL || *term == '\0' ||
79*00b67f09SDavid van Moolenbroek strcmp (term, "none") == 0 || strcmp (term, "dumb") == 0 )
80*00b67f09SDavid van Moolenbroek return 0;
81*00b67f09SDavid van Moolenbroek
82*00b67f09SDavid van Moolenbroek if ( strcmp (term, "html") == 0 || strcmp (term, "HTML") == 0 )
83*00b67f09SDavid van Moolenbroek {
84*00b67f09SDavid van Moolenbroek bold_on = "<B>";
85*00b67f09SDavid van Moolenbroek bold_off = "</B>";
86*00b67f09SDavid van Moolenbroek italic_on = "<I>";
87*00b67f09SDavid van Moolenbroek italic_off = "</I>";
88*00b67f09SDavid van Moolenbroek af = "";
89*00b67f09SDavid van Moolenbroek maxcolor = 8;
90*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_BLACK], sizeof colortab[0], "<font color=black>");
91*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_BLUE], sizeof colortab[0], "<font color=blue>");
92*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_GREEN], sizeof colortab[0], "<font color=green>");
93*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_CYAN], sizeof colortab[0], "<font color=cyan>");
94*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_RED], sizeof colortab[0], "<font color=red>");
95*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_MAGENTA], sizeof colortab[0], "<font color=magenta>");
96*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_YELLOW], sizeof colortab[0], "<font color=yellow>");
97*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_WHITE], sizeof colortab[0], "<font color=white>");
98*00b67f09SDavid van Moolenbroek html = 1;
99*00b67f09SDavid van Moolenbroek return 0;
100*00b67f09SDavid van Moolenbroek }
101*00b67f09SDavid van Moolenbroek #if 0
102*00b67f09SDavid van Moolenbroek if ( !istty (fp) )
103*00b67f09SDavid van Moolenbroek return 0;
104*00b67f09SDavid van Moolenbroek #endif
105*00b67f09SDavid van Moolenbroek switch ( tgetent (buf, term) )
106*00b67f09SDavid van Moolenbroek {
107*00b67f09SDavid van Moolenbroek case -1: perror ("termcap file");
108*00b67f09SDavid van Moolenbroek return -1;
109*00b67f09SDavid van Moolenbroek case 0: fprintf (stderr, "unknown terminal %s\n", term);
110*00b67f09SDavid van Moolenbroek return -1;
111*00b67f09SDavid van Moolenbroek }
112*00b67f09SDavid van Moolenbroek
113*00b67f09SDavid van Moolenbroek if ( !(is1 = tgetstr ("is1", &ap)) )
114*00b67f09SDavid van Moolenbroek is1 = "";
115*00b67f09SDavid van Moolenbroek if ( !(is2 = tgetstr ("is2", &ap)) )
116*00b67f09SDavid van Moolenbroek is2 = "";
117*00b67f09SDavid van Moolenbroek if ( !(r1 = tgetstr ("r1", &ap)) )
118*00b67f09SDavid van Moolenbroek r1 = "";
119*00b67f09SDavid van Moolenbroek if ( !(r2 = tgetstr ("r2", &ap)) )
120*00b67f09SDavid van Moolenbroek r2 = "";
121*00b67f09SDavid van Moolenbroek
122*00b67f09SDavid van Moolenbroek /* if bold is not present */
123*00b67f09SDavid van Moolenbroek if ( !(bold_on = tgetstr ("md", &ap)) )
124*00b67f09SDavid van Moolenbroek /* use standout mode */
125*00b67f09SDavid van Moolenbroek if ( !(bold_on = tgetstr ("so", &ap)) )
126*00b67f09SDavid van Moolenbroek bold_on = bold_off = "";
127*00b67f09SDavid van Moolenbroek else
128*00b67f09SDavid van Moolenbroek bold_off = tgetstr ("se", &ap);
129*00b67f09SDavid van Moolenbroek else
130*00b67f09SDavid van Moolenbroek bold_off = tgetstr ("me", &ap);
131*00b67f09SDavid van Moolenbroek
132*00b67f09SDavid van Moolenbroek /* if italic not present */
133*00b67f09SDavid van Moolenbroek if ( !(italic_on = tgetstr ("ZH", &ap)) )
134*00b67f09SDavid van Moolenbroek /* use underline mode */
135*00b67f09SDavid van Moolenbroek if ( !(italic_on = tgetstr ("us", &ap)) )
136*00b67f09SDavid van Moolenbroek italic_on = italic_off = "";
137*00b67f09SDavid van Moolenbroek else
138*00b67f09SDavid van Moolenbroek italic_off = tgetstr ("ue", &ap);
139*00b67f09SDavid van Moolenbroek else
140*00b67f09SDavid van Moolenbroek italic_off = tgetstr ("ZR", &ap);
141*00b67f09SDavid van Moolenbroek
142*00b67f09SDavid van Moolenbroek maxcolor = tgetnum ("Co");
143*00b67f09SDavid van Moolenbroek if ( maxcolor < 0 ) /* no colors ? */
144*00b67f09SDavid van Moolenbroek return 0;
145*00b67f09SDavid van Moolenbroek if ( maxcolor > 8 )
146*00b67f09SDavid van Moolenbroek maxcolor = 8;
147*00b67f09SDavid van Moolenbroek
148*00b67f09SDavid van Moolenbroek if ( (af = tgetstr ("AF", &ap)) ) /* set ansi color foreground */
149*00b67f09SDavid van Moolenbroek {
150*00b67f09SDavid van Moolenbroek for ( i = 0; i < maxcolor; i++ )
151*00b67f09SDavid van Moolenbroek snprintf (colortab[i], sizeof colortab[0], "%s", tparm (af, i));
152*00b67f09SDavid van Moolenbroek }
153*00b67f09SDavid van Moolenbroek else if ( (af = tgetstr ("Sf", &ap)) ) /* or set color foreground */
154*00b67f09SDavid van Moolenbroek {
155*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_BLACK], sizeof colortab[0], "%s", tparm (af, 0));
156*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_BLUE], sizeof colortab[0], "%s", tparm (af, 1));
157*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_GREEN], sizeof colortab[0], "%s", tparm (af, 2));
158*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_CYAN], sizeof colortab[0], "%s", tparm (af, 3));
159*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_RED], sizeof colortab[0], "%s", tparm (af, 4));
160*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_MAGENTA], sizeof colortab[0], "%s", tparm (af, 5));
161*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_YELLOW], sizeof colortab[0], "%s", tparm (af, 6));
162*00b67f09SDavid van Moolenbroek snprintf (colortab[TC_WHITE], sizeof colortab[0], "%s", tparm (af, 7));
163*00b67f09SDavid van Moolenbroek }
164*00b67f09SDavid van Moolenbroek
165*00b67f09SDavid van Moolenbroek #if 0
166*00b67f09SDavid van Moolenbroek if ( is1 && *is1 )
167*00b67f09SDavid van Moolenbroek tc_printattr (fp, is1);
168*00b67f09SDavid van Moolenbroek if ( is2 && *is2 )
169*00b67f09SDavid van Moolenbroek tc_printattr (fp, is2);
170*00b67f09SDavid van Moolenbroek #endif
171*00b67f09SDavid van Moolenbroek
172*00b67f09SDavid van Moolenbroek return 0;
173*00b67f09SDavid van Moolenbroek }
174*00b67f09SDavid van Moolenbroek #else
tc_init(FILE * fp,const char * term)175*00b67f09SDavid van Moolenbroek int tc_init (FILE *fp, const char *term)
176*00b67f09SDavid van Moolenbroek {
177*00b67f09SDavid van Moolenbroek int i;
178*00b67f09SDavid van Moolenbroek
179*00b67f09SDavid van Moolenbroek is1 = "";
180*00b67f09SDavid van Moolenbroek is2 = "";
181*00b67f09SDavid van Moolenbroek r1 = "";
182*00b67f09SDavid van Moolenbroek r2 = "";
183*00b67f09SDavid van Moolenbroek bold_on = "";
184*00b67f09SDavid van Moolenbroek bold_off = "";
185*00b67f09SDavid van Moolenbroek italic_on = "";
186*00b67f09SDavid van Moolenbroek italic_off = "";
187*00b67f09SDavid van Moolenbroek for ( i = 0; i < 8; i++ )
188*00b67f09SDavid van Moolenbroek colortab[i][0] = '\0';
189*00b67f09SDavid van Moolenbroek maxcolor = 0;
190*00b67f09SDavid van Moolenbroek html = 0;
191*00b67f09SDavid van Moolenbroek
192*00b67f09SDavid van Moolenbroek return 0;
193*00b67f09SDavid van Moolenbroek }
194*00b67f09SDavid van Moolenbroek #endif
195*00b67f09SDavid van Moolenbroek
196*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
tc_end(FILE * fp,const char * term)197*00b67f09SDavid van Moolenbroek int tc_end (FILE *fp, const char *term)
198*00b67f09SDavid van Moolenbroek {
199*00b67f09SDavid van Moolenbroek #if 0
200*00b67f09SDavid van Moolenbroek if ( term )
201*00b67f09SDavid van Moolenbroek {
202*00b67f09SDavid van Moolenbroek // if ( r1 && *r1 ) tc_printattr (fp, r1);
203*00b67f09SDavid van Moolenbroek if ( r2 && *r2 )
204*00b67f09SDavid van Moolenbroek tc_printattr (fp, r2);
205*00b67f09SDavid van Moolenbroek }
206*00b67f09SDavid van Moolenbroek #endif
207*00b67f09SDavid van Moolenbroek return 0;
208*00b67f09SDavid van Moolenbroek }
209*00b67f09SDavid van Moolenbroek #else
tc_end(FILE * fp,const char * term)210*00b67f09SDavid van Moolenbroek int tc_end (FILE *fp, const char *term)
211*00b67f09SDavid van Moolenbroek {
212*00b67f09SDavid van Moolenbroek return 0;
213*00b67f09SDavid van Moolenbroek }
214*00b67f09SDavid van Moolenbroek #endif
215*00b67f09SDavid van Moolenbroek
216*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
tc_attr(FILE * fp,tc_att_t attr,int on)217*00b67f09SDavid van Moolenbroek int tc_attr (FILE *fp, tc_att_t attr, int on)
218*00b67f09SDavid van Moolenbroek {
219*00b67f09SDavid van Moolenbroek int len;
220*00b67f09SDavid van Moolenbroek
221*00b67f09SDavid van Moolenbroek len = 0;
222*00b67f09SDavid van Moolenbroek if ( on ) /* turn attributes on ? */
223*00b67f09SDavid van Moolenbroek {
224*00b67f09SDavid van Moolenbroek if ( (attr & TC_BOLD) == TC_BOLD )
225*00b67f09SDavid van Moolenbroek len += tc_printattr (fp, bold_on);
226*00b67f09SDavid van Moolenbroek if ( (attr & TC_ITALIC) == TC_ITALIC )
227*00b67f09SDavid van Moolenbroek len += tc_printattr (fp, italic_on);
228*00b67f09SDavid van Moolenbroek
229*00b67f09SDavid van Moolenbroek if ( attr & 0xFF )
230*00b67f09SDavid van Moolenbroek len += tc_color (fp, attr & 0xFF);
231*00b67f09SDavid van Moolenbroek }
232*00b67f09SDavid van Moolenbroek else /* turn attributes off */
233*00b67f09SDavid van Moolenbroek {
234*00b67f09SDavid van Moolenbroek if ( html )
235*00b67f09SDavid van Moolenbroek len += fprintf (fp, "</font>");
236*00b67f09SDavid van Moolenbroek else
237*00b67f09SDavid van Moolenbroek len += tc_color (fp, TC_BLACK);
238*00b67f09SDavid van Moolenbroek
239*00b67f09SDavid van Moolenbroek if ( (attr & TC_ITALIC) == TC_ITALIC )
240*00b67f09SDavid van Moolenbroek len += tc_printattr (fp, italic_off);
241*00b67f09SDavid van Moolenbroek if ( !html || (attr & TC_BOLD) == TC_BOLD )
242*00b67f09SDavid van Moolenbroek len += tc_printattr (fp, bold_off);
243*00b67f09SDavid van Moolenbroek }
244*00b67f09SDavid van Moolenbroek
245*00b67f09SDavid van Moolenbroek return len;
246*00b67f09SDavid van Moolenbroek }
247*00b67f09SDavid van Moolenbroek #else
tc_attr(FILE * fp,tc_att_t attr,int on)248*00b67f09SDavid van Moolenbroek int tc_attr (FILE *fp, tc_att_t attr, int on)
249*00b67f09SDavid van Moolenbroek {
250*00b67f09SDavid van Moolenbroek return 0;
251*00b67f09SDavid van Moolenbroek }
252*00b67f09SDavid van Moolenbroek #endif
253*00b67f09SDavid van Moolenbroek
254*00b67f09SDavid van Moolenbroek /*****************************************************************
255*00b67f09SDavid van Moolenbroek ** internal functions
256*00b67f09SDavid van Moolenbroek *****************************************************************/
257*00b67f09SDavid van Moolenbroek static FILE *tc_outfp;
put(int c)258*00b67f09SDavid van Moolenbroek static int put (int c)
259*00b67f09SDavid van Moolenbroek {
260*00b67f09SDavid van Moolenbroek return putc (c, tc_outfp);
261*00b67f09SDavid van Moolenbroek }
262*00b67f09SDavid van Moolenbroek
263*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
tc_printattr(FILE * fp,const char * attstr)264*00b67f09SDavid van Moolenbroek static int tc_printattr (FILE *fp, const char *attstr)
265*00b67f09SDavid van Moolenbroek {
266*00b67f09SDavid van Moolenbroek tc_outfp = fp;
267*00b67f09SDavid van Moolenbroek return tputs (attstr, 0, put);
268*00b67f09SDavid van Moolenbroek }
269*00b67f09SDavid van Moolenbroek #else
tc_printattr(FILE * fp,const char * attstr)270*00b67f09SDavid van Moolenbroek static int tc_printattr (FILE *fp, const char *attstr)
271*00b67f09SDavid van Moolenbroek {
272*00b67f09SDavid van Moolenbroek return 0;
273*00b67f09SDavid van Moolenbroek }
274*00b67f09SDavid van Moolenbroek #endif
275*00b67f09SDavid van Moolenbroek
276*00b67f09SDavid van Moolenbroek #if defined(COLOR_MODE) && COLOR_MODE && HAVE_LIBNCURSES
tc_color(FILE * fp,int color)277*00b67f09SDavid van Moolenbroek static int tc_color (FILE *fp, int color)
278*00b67f09SDavid van Moolenbroek {
279*00b67f09SDavid van Moolenbroek tc_outfp = fp;
280*00b67f09SDavid van Moolenbroek
281*00b67f09SDavid van Moolenbroek if ( color < 0 || color >= maxcolor )
282*00b67f09SDavid van Moolenbroek return 0;
283*00b67f09SDavid van Moolenbroek return tputs (colortab[color], 0, put);
284*00b67f09SDavid van Moolenbroek }
285*00b67f09SDavid van Moolenbroek #else
tc_color(FILE * fp,int color)286*00b67f09SDavid van Moolenbroek static int tc_color (FILE *fp, int color)
287*00b67f09SDavid van Moolenbroek {
288*00b67f09SDavid van Moolenbroek return 0;
289*00b67f09SDavid van Moolenbroek }
290*00b67f09SDavid van Moolenbroek #endif
291*00b67f09SDavid van Moolenbroek
292*00b67f09SDavid van Moolenbroek
293*00b67f09SDavid van Moolenbroek #ifdef TEST
294*00b67f09SDavid van Moolenbroek static const char *progname;
295*00b67f09SDavid van Moolenbroek /*****************************************************************
296*00b67f09SDavid van Moolenbroek ** test main()
297*00b67f09SDavid van Moolenbroek *****************************************************************/
main(int argc,const char * argv[])298*00b67f09SDavid van Moolenbroek main (int argc, const char *argv[])
299*00b67f09SDavid van Moolenbroek {
300*00b67f09SDavid van Moolenbroek extern char *getenv ();
301*00b67f09SDavid van Moolenbroek char *term = getenv ("TERM");
302*00b67f09SDavid van Moolenbroek int i;
303*00b67f09SDavid van Moolenbroek const char *text;
304*00b67f09SDavid van Moolenbroek
305*00b67f09SDavid van Moolenbroek progname = *argv;
306*00b67f09SDavid van Moolenbroek
307*00b67f09SDavid van Moolenbroek tc_init (stdout, term);
308*00b67f09SDavid van Moolenbroek
309*00b67f09SDavid van Moolenbroek // printattr (is); /* Initialisierungsstring ausgeben */
310*00b67f09SDavid van Moolenbroek
311*00b67f09SDavid van Moolenbroek text = "Test";
312*00b67f09SDavid van Moolenbroek if ( argc > 1 )
313*00b67f09SDavid van Moolenbroek text = *++argv;
314*00b67f09SDavid van Moolenbroek
315*00b67f09SDavid van Moolenbroek tc_attr (stdout, TC_BOLD, 1);
316*00b67f09SDavid van Moolenbroek printf ("Bold Headline\n");
317*00b67f09SDavid van Moolenbroek tc_attr (stdout, TC_BOLD, 0);
318*00b67f09SDavid van Moolenbroek for ( i = 0; i < 8; i++ )
319*00b67f09SDavid van Moolenbroek {
320*00b67f09SDavid van Moolenbroek tc_attr (stdout, i, 1);
321*00b67f09SDavid van Moolenbroek printf ("%s", text);
322*00b67f09SDavid van Moolenbroek tc_attr (stdout, i, 0);
323*00b67f09SDavid van Moolenbroek
324*00b67f09SDavid van Moolenbroek #if 0
325*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_BOLD), 1);
326*00b67f09SDavid van Moolenbroek printf ("\t%s", text);
327*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_BOLD), 0);
328*00b67f09SDavid van Moolenbroek
329*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_ITALIC), 1);
330*00b67f09SDavid van Moolenbroek printf ("\t%s", text);
331*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_ITALIC), 0);
332*00b67f09SDavid van Moolenbroek
333*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_BOLD | TC_ITALIC), 1);
334*00b67f09SDavid van Moolenbroek printf ("\t%s", text);
335*00b67f09SDavid van Moolenbroek tc_attr (stdout, (i | TC_BOLD | TC_ITALIC), 0);
336*00b67f09SDavid van Moolenbroek #endif
337*00b67f09SDavid van Moolenbroek printf ("\n");
338*00b67f09SDavid van Moolenbroek }
339*00b67f09SDavid van Moolenbroek printf ("now back to black\n");
340*00b67f09SDavid van Moolenbroek
341*00b67f09SDavid van Moolenbroek // printattr (r2); /* Zuruecksetzen */
342*00b67f09SDavid van Moolenbroek
343*00b67f09SDavid van Moolenbroek return (0);
344*00b67f09SDavid van Moolenbroek }
345*00b67f09SDavid van Moolenbroek #endif
346