[net.sources] Color

xev@leah.UUCP (04/01/87)

This program changes the colors on a vt240 terminal.

      __    __    __    __                      __    __    __    __
---- |_< --|_< --|_< --|_< -- Eat This Line! -- >_|-- >_|-- >_|-- >_| ----
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	Makefile
#	color.c
#	color.l
#	getopt.c
# This archive created: Tue Mar 31 16:08:20 1987
export PATH; PATH=/bin:$PATH
if test -f 'Makefile'
then
	echo shar: will not over-write existing file "'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'
DEST	      = /usr/local/bin

EXTHDRS	      = /usr/include/stdio.h

HDRS	      =

LDFLAGS	      =

LIBS	      =

LINKER	      = cc

MAKEFILE      = Makefile

MANDEST       = /usr/man/manl

MANS	      = color.l

OBJS	      = color.o \
		getopt.o

PRINT	      = pr

PROGRAM	      = color

SRCS	      = color.c \
		getopt.c

all:		$(PROGRAM)

$(PROGRAM):     $(OBJS) $(LIBS)
		@echo -n "Loading $(PROGRAM) ... "
		@$(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM)
		@echo "done"

clean:;		@rm -f $(OBJS)

depend:;	@mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST)

index:;		@ctags -wx $(HDRS) $(SRCS)

install:	$(PROGRAM)
		@echo Installing $(PROGRAM) in $(DEST)
		@install -s $(PROGRAM) $(DEST)
		@echo Installing $(MANS) in $(MANDEST)
		@cp $(MANS) $(MANDEST)

print:;		@$(PRINT) $(HDRS) $(SRCS)

program:        $(PROGRAM)

tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

update:		$(DEST)/$(PROGRAM)

$(DEST)/$(PROGRAM): $(SRCS) $(LIBS) $(HDRS) $(EXTHDRS)
		@make -f $(MAKEFILE) DEST=$(DEST) install
###
color.o: /usr/include/stdio.h
getopt.o: /usr/include/stdio.h
SHAR_EOF
fi # end of overwriting check
if test -f 'color.c'
then
	echo shar: will not over-write existing file "'color.c'"
else
cat << \SHAR_EOF > 'color.c'
/*
 *      Color.c ->>     Change colors on a VT240.
 *      Author  ->>     Xev, SUNYA, 1987
 *
 *
 *      Options: [-t text-color] [-c cursor-color] [-b background-color]
 *      colors:  aquamarine, md-aquamarine, black, blue, cadet-blue, 
 *               cornflwr-blue, dk-slate-blue, lt-blue, lt-steel-blue, 
 *               md-blue, md-slate-blue, midnight-blue, navy-blue,
 *               sky-blue, slate-blue, steel-blue, coral, cyan, firebrick, 
 *               gold, goldenrod, md-goldenrod, green, dk-green,
 *               dk-olive-green, forest-green, lime-green, md-forest-green, 
 *               md-sea-green, md-spring-green, pale-green, sea-green,
 *               spring-green, yellow-green, dk-slate-grey, dim-grey, 
 *               lt-grey, khaki, magenta, maroon, orange, orchid, dk-orchid, 
 *               md-orchid, pink, plum, red, indian-red, md-violet-red, 
 *               orange-red, violet-red, salmon, sienna, tan, thistle, 
 *               turquoise, dk-turquoise, md-turquoise, violet, violet-blue,
 *               wheat, white, yellow, yellow-green
 *
 *      If no options are given, the defaults are used, which are set 
 *              in defines at the beginning, and at this time, contain
 *              the following values:
 *              c = White, b = Red, t = Black.
 *
 *      The following is the format of the color command on a VT240:
 *              <ESC>P3s(e)s(m<Type>(<Color>))<ESC>\<ESC>[2H
 *      Where:
 *              <ESC> is escape,
 *              <Type> is 0 for background,
 *                        1 for cursor, and
 *                        2 for text, and,
 *              <Color> is taken from the massive set of if statements.
 *
 *      The commands may be strung together, with just the 
 *              <Type>(<Color>)   repeated.
 *
 *
 */
 
static char rcsid[] = "$Header: color.c,v 1.4 87/03/30 15:47:45 xev Locked $";

/*
 *
 * $Author: xev $
 * $Date: 87/03/30 15:47:45 $
 * 
 * $Log:	color.c,v $
 * Revision 1.4  87/03/30  15:47:45  xev
 * Some more little changes.
 * 
 * Revision 1.3  87/03/30  12:03:13  xev
 * Well, a couple of other little changes.
 * 
 * Revision 1.2  87/03/30  09:57:04  xev
 * Changed printusage() to make it compatible with the vax.
 * Also, changed a lot of strcpy()s to strcat()s.
 * 
 *
 */ 
 
#define DEFB "h280l35s60"       /*  Sea-Green   */
#define DEFC "h120l50s100"      /*  Red         */
#define DEFT "h180l65s60"       /*  Goldenrod   */
#define SAME 0
#define CLEARS  "\033[2J\033[1;1H"
#include <stdio.h>


        char color[20];

main(argc, argv)
int argc;
char **argv;
{
        int c;
        extern int optind;
        extern char *optarg;
        char type[2];
        char cmd[100];

/* Check for 0 args. If so, just set defaults. */

        if (argc == 1) {
                printf ("P3ps(e)s(m0(%s)1(%s)2(%s))\[2H", DEFB, DEFC, DEFT);
                printf ("%s", CLEARS);
                exit (0);
        }

/* Begin to setup the command string. */
        
        strcpy (cmd, "P3ps(e)s(m");
        
/* Get the options, and act upon them. */
        
        while ((c = getopt(argc, argv, "hb:t:c:")) != EOF) {
                switch (c) {
                        case 'b':
                                strcat (cmd,"0(");
                                break;
                        case 'c':
                                strcat (cmd,"1(");
                                break;
                        case 't':
                                strcat (cmd,"2(");
                                break;
                        default:
                                printusage(argv);
                                exit();
                                break;
                }
                getcolor(optarg);
                strcat (cmd, color);
                strcat (cmd, ")");
        }
        strcat (cmd, ")\[2H");
        printf ("%s",cmd);
        printf ("%s", CLEARS);  
}

printusage(argv)
char **argv;
{
	printf ("\n  %8s:  options: [-t text-color] [-c cursor-color] [-b background-color]\n", argv[0]);
	printf ("                          [-h help]\n");
	printf ("               colors:    aquamarine, md-aquamarine, black, blue, \n");
	printf ("                          cadet-blue, cornflwr-blue, dk-slate-blue,\n");
	printf ("                          lt-blue, lt-steel-blue, md-blue, md-slate-blue,\n");
	printf ("                          midnight-blue, navy-blue, sky-blue, slate-blue,\n");
	printf ("                          steel-blue, coral, cyan, firebrick, gold,\n");
	printf ("                          goldenrod, md-goldenrod, green, dk-green,\n");
	printf ("                          dk-olive-green, forest-green, lime-green,\n");
	printf ("                          md-forest-green, md-sea-green, md-spring-green,\n");
	printf ("                          pale-green, sea-green, spring-green, yellow-green,\n");
	printf ("                          dk-slate-grey, dim-grey, lt-grey, khaki, magenta,\n");
	printf ("                          maroon, orange, orchid, dk-orchid, md-orchid, pink,\n");
	printf ("                          plum, red, indian-red, md-violet-red, orange-red,\n");
	printf ("                          violet-red, salmon, sienna, tan, thistle,\n");
	printf ("                          turquoise, dk-turquoise, md-turquoise, violet,\n");
	printf ("                          violet-blue, wheat, white, yellow, yellow-green\n");

}

getcolor(arg)
char *arg;
{
        if ((strcmp (arg, "aqua")) == SAME) {
                strcpy (color, "h260l65s60");
                return;
        }
        if ((strcmp (arg, "md-aqua")) == SAME) {
                strcpy (color, "h280l50s60");  
                return;
        }
        if ((strcmp (arg, "black")) == SAME) {
                strcpy (color, "h0l0s0");   
                return;
        }
        if ((strcmp (arg, "blue")) == SAME) {
                strcpy (color, "h0l50s100");
                return;
        }
        if ((strcmp (arg, "cadet-blue")) == SAME) {
                strcpy (color, "h300l50s25");
                return;
        }
        if ((strcmp (arg, "cornflwr-blue")) == SAME) {
                strcpy (color, "h0l35s25");
                return;
        }
        if ((strcmp (arg, "dk-slate-blue")) == SAME) {
                strcpy (color, "h40l35s60");    
                return;
        }
        if ((strcmp (arg, "lt-blue")) == SAME) {
                strcpy (color, "h300l80s25");   
                return;
        }
        if ((strcmp (arg, "lt-steel-blue")) == SAME) {
                strcpy (color, "h0l65s25");     
                return;
        }
        if ((strcmp (arg, "md-blue")) == SAME) {
                strcpy (color, "h0l50s60");    
                return;
        }
        if ((strcmp (arg, "md-slate-blue")) == SAME) {
                strcpy (color, "h30l50s100");  
                return;
        }
        if ((strcmp (arg, "midnight-blue")) == SAME) {
                strcpy (color, "h0l25s25");    
                return;
        }
        if ((strcmp (arg, "navy-blue")) == SAME) {
                strcpy (color, "h0l35s60");    
                return;
        }
        if ((strcmp (arg, "sky-blue")) == SAME) {
                strcpy (color, "h320l50s60");  
                return;
        }
        if ((strcmp (arg, "slate-blue")) == SAME) {
                strcpy (color, "h330l50s100"); 
                return;
        }
        if ((strcmp (arg, "steel-blue")) == SAME) {
                strcpy (color, "h320l35s60");  
                return;
        }
        if ((strcmp (arg, "coral")) == SAME) {
                strcpy (color, "h150l50s100"); 
                return;
        }
        if ((strcmp (arg, "cyan")) == SAME) {
                strcpy (color, "h300l50s100"); 
                return;
        }
        if ((strcmp (arg, "firebrick")) == SAME) {
                strcpy (color, "h120l35s60");       
                return;
        }
        if ((strcmp (arg, "gold")) == SAME) {
                strcpy (color, "h150l50s60");  
                return;
        }
        if ((strcmp (arg, "goldenrod")) == SAME) {
                strcpy (color, "h180l65s60");
                return;
        }
        if ((strcmp (arg, "md-goldenrod")) == SAME) {
                strcpy (color, "h180l80s60");       
                return;
        }
        if ((strcmp (arg, "green")) == SAME) {
                strcpy (color, "h240l50s100"); 
                return;
        }
        if ((strcmp (arg, "dk-green")) == SAME) {
                strcpy (color, "h240l25s25");       
                return;
        }
        if ((strcmp (arg, "dk-olive-green")) == SAME) {
                strcpy (color, "h180l25s25");       
                return;
        }
        if ((strcmp (arg, "forest-green")) == SAME) {
                strcpy (color, "h240l35s60");       
                return;
        }
        if ((strcmp (arg, "lime-green")) == SAME) {
                strcpy (color, "h240l50s60");       
                return;
        }
        if ((strcmp (arg, "md-forest-green")) == SAME) {
                strcpy (color, "h200l35s60");       
                return;
        }
        if ((strcmp (arg, "md-sea-green")) == SAME) {
                strcpy (color, "h240l35s25");       
                return;
        }
        if ((strcmp (arg, "md-spring-green")) == SAME) {
                strcpy (color, "h210l50s100"); 
                return;
        }
        if ((strcmp (arg, "pale-green")) == SAME) {
                strcpy (color, "h240l65s25");       
                return;
        }
        if ((strcmp (arg, "sea-green")) == SAME) {
                strcpy (color, "h280l35s60");       
                return;
        }
        if ((strcmp (arg, "spring-green")) == SAME) {
                strcpy (color, "h270l50s100"); 
                return;
        }
        if ((strcmp (arg, "yellow-green")) == SAME) {
                strcpy (color, "h200l50s60");       
                return;
        }
        if ((strcmp (arg, "dk-slate-green")) == SAME) {
                strcpy (color, "h300l25s25");       
                return;
        }
        if ((strcmp (arg, "dim-grey")) == SAME) {
                strcpy (color, "h0l33s0");  
                return;
        }
        if ((strcmp (arg, "lt-grey")) == SAME) {
                strcpy (color, "h0l66s0");  
                return;
        }
        if ((strcmp (arg, "khaki")) == SAME) {
                strcpy (color, "h180l50s25");       
                return;
        }
        if ((strcmp (arg, "magenta")) == SAME) {
                strcpy (color, "h60l50s100");       
                return;
        }
        if ((strcmp (arg, "maroon")) == SAME) {
                strcpy (color, "h80l35s60");        
                return;
        }
        if ((strcmp (arg, "orange")) == SAME) {
                strcpy (color, "h120l50s60");     
                return;
        }
        if ((strcmp (arg, "orchid")) == SAME) {
                strcpy (color, "h60l65s60");        
                return;
        }
        if ((strcmp (arg, "dk-orchid")) == SAME) {
                strcpy (color, "h40l50s60");        
                return;
        }
        if ((strcmp (arg, "md-orchid")) == SAME) {
                strcpy (color, "h20l65s60");        
                return;
        }
        if ((strcmp (arg, "pink")) == SAME) {
                strcpy (color, "h120l65s25");       
                return;
        }
        if ((strcmp (arg, "plum")) == SAME) {
                strcpy (color, "h60l80s60");        
                return;
        }
        if ((strcmp (arg, "red")) == SAME) {
                strcpy (color, "h120l50s100"); 
                return;
        }
        if ((strcmp (arg, "indian-red")) == SAME) {
                strcpy (color, "h120l25s25");       
                return;
        }
        if ((strcmp (arg, "md-violet-red")) == SAME) {
                strcpy (color, "h100l65s60");       
                return;
        }
        if ((strcmp (arg, "orange-red")) == SAME) {
                strcpy (color, "h90l50s100");       
                return;
        }
        if ((strcmp (arg, "violet-red")) == SAME) {
                strcpy (color, "h80l50s60");        
                return;
        }
        if ((strcmp (arg, "salmon")) == SAME) {
                strcpy (color, "h120l35s25");       
                return;
        }
        if ((strcmp (arg, "sienna")) == SAME) {
                strcpy (color, "h160l35s60");       
                return;
        }
        if ((strcmp (arg, "tan")) == SAME) {
                strcpy (color, "h140l65s60");       
                return;
        }
        if ((strcmp (arg, "thistle")) == SAME) {
                strcpy (color, "h60l80s25");        
                return;
        }
        if ((strcmp (arg, "turquoise")) == SAME) {
                strcpy (color, "h300l80s60");       
                return;
        }
        if ((strcmp (arg, "dk-turquoise")) == SAME) {
                strcpy (color, "h340l65s60");       
                return;
        }
        if ((strcmp (arg, "md-turquoise")) == SAME) {
                strcpy (color, "h300l65s60");       
                return;
        }
        if ((strcmp (arg, "violet")) == SAME) {
                strcpy (color, "h60l25s25");        
                return;
        }
        if ((strcmp (arg, "violet-blue")) == SAME) {
                strcpy (color, "h60l50s25");        
                return;
        }
        if ((strcmp (arg, "wheat")) == SAME) {
                strcpy (color, "h180l80s25");       
                return;
        }
        if ((strcmp (arg, "white")) == SAME) {
                strcpy (color, "h0l99s0");  
                return;
        }
        if ((strcmp (arg, "yellow")) == SAME) {
                strcpy (color, "h180l50s100"); 
                return;
        }
        if ((strcmp (arg, "yellow-green")) == SAME) {
                strcpy (color, "h220l65s60");       
                return;
        }
        printf ("Color %s not found. Exiting.\n", arg);
        exit (1);
}
SHAR_EOF
fi # end of overwriting check
if test -f 'color.l'
then
	echo shar: will not over-write existing file "'color.l'"
else
cat << \SHAR_EOF > 'color.l'
.TH COLOR 1L
.UC
.SH NAME
.I color 
\- Change colors on a VT240 terminal.
.SH SYNOPSIS
.I color
[-t text-color] [-b background-color] [-c cursor-color] [-h]
.SH DESCRIPTION
.I Color
will change the color on a VT240 terminal.
If no options are specified, then the default colors
are selected. Otherwise, the options are;
.TP 1.0i
.B "-h"
Help - shows the options and possible colors.
.TP
.B "-t text-color"
Change Text Color - Changes the color of the text.
.TP
.B "-b background-color"
Change Background Color - Changes the color of the background.
.TP
.B "-c cursor-color"
Change Cursor Color - Changes the color of the cursor.
.PP
The options t, b, and c can be used in the same command.
The option h will cause all others to be ignored.
.SH COLORS
The following are the available colors:
.PP
aquamarine, md-aquamarine, black, blue, cadet-blue, 
cornflwr-blue, dk-slate-blue, lt-blue, lt-steel-blue, 
md-blue, md-slate-blue, midnight-blue, navy-blue,
sky-blue, slate-blue, steel-blue, coral, cyan, firebrick, 
gold, goldenrod, md-goldenrod, green, dk-green,
dk-olive-green, forest-green, lime-green, md-forest-green, 
md-sea-green, md-spring-green, pale-green, sea-green,
spring-green, yellow-green, dk-slate-grey, dim-grey, 
lt-grey, khaki, magenta, maroon, orange, orchid, dk-orchid, 
md-orchid, pink, plum, red, indian-red, md-violet-red, 
orange-red, violet-red, salmon, sienna, tan, thistle, 
turquoise, dk-turquoise, md-turquoise, violet, violet-blue,
wheat, white, yellow, yellow-green

.SH AUTHOR
Xev Gittler, SUNYA, 1987
SHAR_EOF
fi # end of overwriting check
if test -f 'getopt.c'
then
	echo shar: will not over-write existing file "'getopt.c'"
else
cat << \SHAR_EOF > 'getopt.c'
/* got this off net.sources */
#include <stdio.h>

/*
 * get option letter from argument vector
 */
int	opterr = 1,		/* useless, never set or used */
	optind = 1,		/* index into parent argv vector */
	optopt;			/* character checked for validity */
char	*optarg;		/* argument associated with option */

#define BADCH	(int)'?'
#define EMSG	""
#define tell(s)	fputs(*nargv,stderr);fputs(s,stderr); \
		fputc(optopt,stderr);fputc('\n',stderr);return(BADCH);

getopt(nargc,nargv,ostr)
int	nargc;
char	**nargv,
	*ostr;
{
	static char	*place = EMSG;	/* option letter processing */
	register char	*oli;		/* option letter list index */
	char	*index();

	if(!*place) {			/* update scanning pointer */
		if(optind >= nargc || *(place = nargv[optind]) != '-' || !*++place) return(EOF);
		if (*place == '-') {	/* found "--" */
			++optind;
			return(EOF);
		}
	}				/* option letter okay? */
	if ((optopt = (int)*place++) == (int)':' || !(oli = index(ostr,optopt))) {
		if(!*place) ++optind;
		tell(": illegal option -- ");
	}
	if (*++oli != ':') {		/* don't need argument */
		optarg = NULL;
		if (!*place) ++optind;
	}
	else {				/* need an argument */
		if (*place) optarg = place;	/* no white space */
		else if (nargc <= ++optind) {	/* no arg */
			place = EMSG;
			tell(": option requires an argument -- ");
		}
	 	else optarg = nargv[optind];	/* white space */
		place = EMSG;
		++optind;
	}
	return(optopt);			/* dump back option letter */
}
SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0