menu(1) part 8 of 11

Paul J. Condie pjc at pcbox.UUCP
Sat Apr 7 03:55:24 AEST 1990


#!/bin/sh
# this is part 8 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file utilities.d/libgeti.d/GetInput.c continued
#
CurArch=8
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file utilities.d/libgeti.d/GetInput.c"
sed 's/^X//' << 'SHAR_EOF' >> utilities.d/libgeti.d/GetInput.c
X				/*
X				**  Toggle between typeover/insert mode.
X				*/
X				insertmode = (insertmode) ? FALSE : TRUE;
X				break;
X
X			   case KEY_SAVE:
X            		   	ScrnFile(win, LINES, COLS) ;
X            		   	clearok(win, TRUE) ;
X            		   	wmove(win, row, col) ;
X            		   	break;
X
X			   case KEY_PRINT:
X            		      	ScrnPrnt(win, LINES, COLS, fldErrRow) ;
X            		      	clearok(win, TRUE);
X            		      	wmove(win, row, col) ;
X            		      	continue ;
X
X         		   case KEY_BACKSPACE:
X            			if (col > colStart) 
X	    			{
X               				wattrset(win, fldAttrib) ;
X               				mvwaddch(win, rowStart, --col, ' ') ;
X               				wattrset(win, 0) ;
X               				wmove(win, rowStart, col) ;
X            			} 
X	    			else
X               				BELL;
X            			break ;
X
X         		   case KEY_RETURN:
X         		   case KEY_ENTER:
X			   case KEY_DOWN:
X			   case KEY_UP:
X			   case KEY_TAB:
X			   case KEY_BTAB:
X			   case KEY_ACCEPT:
X				/*
X				**	bug fix - 9/26/86 pjc
X				**	if (col == colend) byteskeyed was not 
X				**	being counted.
X				**	Determine number of bytes keyed by user.
X				*/
X	    			bytesKeyed = 0;
X	    			for (i = 0; i < strlen (charKeyed); i++)
X	       				if (charKeyed[i] == 'Y')
X	          				bytesKeyed++;
X
X            			if (fldCharType == SET  ||  fldCharType == MENU)
X	    			{
X               				col = colEnd ;
X               				wmove(win, rowStart, col) ;
X               				notFinished = FALSE ;
X               				break ;
X            			} 
X
X	       			if (col == colEnd) 
X	       			{
X                  			notFinished = FALSE ;
X                  			break ;
X               			} 
X
X	          		if (initFld) 
X		  		{
X                     			col = colEnd - 1 ;
X                     			while (*(charKeyed+col-colStart) != 'Y')
X                        			col--;
X                     			wmove(win, rowStart, col) ;
X                  		}
X
X            			colMove = colStart ;
X            			bytesKeyed = 0 ;
X            			while (colMove < colEnd) 
X            			{
X               				if (*(charKeyed+colMove-colStart)=='Y')
X	       				{
X                  				col = colMove ;
X                  				bytesKeyed++;
X               				}
X               				colMove++;
X            			}
X            			while (*(charKeyed + ++col - colStart) == 'M')
X               				;
X            			wmove(win, rowStart, col) ;
X
X            			if (bytesKeyed == 0 && mustEnter) 
X            			{
X               				BELL;
X					CLEARROW (fldErrRow);
X					wattrOn (stdscr, A_REVERSE|A_BOLD);
X              				mvwaddstr(stdscr, 
X		((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X						"This is a must enter field.") ;
X					wattrOff (stdscr);
X               				wmove(win, rowStart, colStart) ;
X               				break ;
X            			} 
X
X       				if (fldMin > 0  && bytesKeyed > 0 && 
X				    bytesKeyed < fldMin)
X       				{
X		
X               				BELL;
X					CLEARROW (fldErrRow);
X					wattrOn (stdscr, A_REVERSE|A_BOLD);
X               				mvwprintw(stdscr, fldErrRow, 1,
X	     					"The minimum length for this field is: %d keyed %d",
X                      				fldMin, bytesKeyed) ;
X					wattrOff (stdscr);
X               				wmove(win, rowStart, col) ;
X               				break ;
X       				}
X
X            			if (fldAdjust != NOFILL)
X               				AdjField(win, rowStart, colStart, 
X						fldAttrib, fldAdjust, colEnd, 
X						charKeyed) ;
X
X            			notFinished = FALSE ;
X            			break ;
X
X         		   default:
X				/* check for control character */
X            			if (ch < 32  ||  ch > 127) 
X            			{
X               				int   ch1 ;
X
X
X               				notFinished = FALSE ;
X               				wmove(win, rowStart, colEnd) ;
X               				controlKey = ch ;
X					break;
X            			} 
X
X	       			if (fldCharType == SET) 
X	       			{
X		  			if (fldType == CHAR)
X		  			{
X		     				/*  pjc - 7/87
X		     				**  match ch to the first char 
X						**  in set values
X		     				*/
X		     				int	rc;  /* return code */
X
X		     				Fld->strVal[0] = ch;
X		     				Fld->strVal[1] = '\0';
X      		     				rc = FindSet(Fld, fldRange, 
X							fldLength, fldType);
X		     				setNumb = rc == -1 ? ++setNumb : rc;
X		  			}
X		  			else
X		     				setNumb++;
X
X                  			ShowSet(win, rowStart, colStart, 
X						fldAttrib, fldRange, fldLength, 
X						&setNumb, colEnd, charKeyed, 
X						origAttr) ;
X                  			wmove(win, rowStart, colStart);
X					break;
X       				}
X
X				if (fldCharType == MENU)
X				{
X					junk = popmenu (menuid);
X					setNumb = junk >= 1 ? junk-1 : setNumb;
X					strcpy (Fld->strVal, menu[setNumb]);
X                  			ShowSet(win, rowStart, colStart, 
X						fldAttrib, fldRange, fldLength, 
X						&setNumb, colEnd, charKeyed, 
X						origAttr) ;
X                  			wmove(win, rowStart, colStart);
X					touchwin (stdscr);
X					touchwin (win);
X					break;
X				}
X
X	          		if (col == colEnd)
X       					BELL;
X       				else
X       					notFinished = ShowChar (win, rowStart, 
X						colStart, fldAttrib, fldMask, 
X						fldRange, fldLength, 
X						fldCharType, fldDispRow, 
X						fldType, keyStream, fldErrRow,
X						charKeyed,colEnd, &ch,origAttr);
X       				break ;
X
X			}  /* end switch */
X		} while (notFinished) ;
X
X      		if ( controlKey  &&  bytesKeyed == 0)
X      		{
X         		ReDispFld(win, rowStart, colStart, -1, fldMask, 
X				fldRange, fldLength, fldCharType, fldType, 
X				fldStr, colEnd, charKeyed, setNumb, 
X				origAttr) ;
X         		break ;
X      		} 
X      		else 
X         		if ( IsFldOk(win, rowStart, colStart, Fld, fldMask, 
X				    fldRange, fldLength, fldCharType, fldType, 
X				    mustEnter, fldErrRow, fldDispRow, colEnd, 
X				    fldStr, charKeyed, setNumb, origAttr) )
X            			break ;
X         		else         
X	 		{
X            			notFinished = TRUE ;
X            			continue ;
X         		}
X
X	}  /* end  while (TRUE) */
X
X   	free(fldStr) ;
X   	free(charKeyed) ;
X
X   	return (ch);
X}
SHAR_EOF
echo "File utilities.d/libgeti.d/GetInput.c is complete"
chmod 0444 utilities.d/libgeti.d/GetInput.c || echo "restore of utilities.d/libgeti.d/GetInput.c fails"
echo "x - extracting utilities.d/libgeti.d/GetSetLen.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/GetSetLen.c &&
Xstatic char Sccsid[] = "@(#)GetSetLen.c	1.3   DeltaDate 1/22/90   ExtrDate 1/22/90";
X
X/*
X**  GetSetLen()
X**	Determines the length of the longest element in the set (range).
X**	ex. "HI,LOW,MEDIUM" returns (6) as the longest length.
X**	This information is used to determine how much memory I need to allocate
X**	to hold the element.  Does not include a null terminator.
X**
X**  RETURNS:
X**		length of the longest element in set.
X*/
X
X#include	"GetInput.h"
X
XGetSetLen(fldRange)
X	char		*fldRange ;	/* range of valid values for output */
X{
X	int	len,
X		fldLength ;
X	char	*fldWrk ;
X
X
X	fldLength = 0 ;
X
X	fldWrk = fldRange ;
X
X	while (*fldWrk != '\0') {
X
X		len = 0 ;
X
X		while (*fldWrk != ','  &&  *fldWrk != '\0') {
X			len++ ;		/* length of this element */
X			fldWrk++ ;	/* fldRange without this element */
X		}
X
X		if (len > fldLength)	/* is this element longer ? */
X			fldLength = len ;
X
X		/* set pointer to next element in set */
X		while (*fldWrk == ','  ||   *fldWrk == ' ')
X			fldWrk++ ;
X	}
X
X	return (fldLength) ;
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/GetSetLen.c || echo "restore of utilities.d/libgeti.d/GetSetLen.c fails"
echo "x - extracting utilities.d/libgeti.d/InitGetI.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/InitGetI.c &&
X#ifndef LINT
Xstatic char Sccsid[] = "%W%   DeltaDate %G%   ExtrDate %H%";
X#endif
X
X/*
X**  InitGetI()
X**		All this does is define some global variables for the keys
X**		used in GetInput(3) and assign some default values.
X*/
X
X#include	<curses.h>
X#include	"GetInput.h"
X
Xint	KeyReturn = '\r';
Xint	KeyDown = 10;		/* ^j */
Xint	KeyUp = 11;		/* ^k */
Xint	KeyTab = '\t';
Xint	KeyBTab = -1;
Xint	KeyAccept = 1;		/* ^a */
X
Xint	KeyBeg = 2;
Xint	KeyEnd = 5;
Xint  	KeyRight = 12;		/* ^l */
Xint  	KeyLeft = 8;		/* ^h */
Xint  	KeyBackspace = '\b';	/* \b */
Xint  	KeyEOL = 4;		/* ^d */
Xint  	KeyDL = 3;		/* ^c */
Xint  	KeyDC = 24;		/* ^x */
Xint  	KeyIC = 20;		/* ^t */
X
Xint  	KeyHelp = '?';
Xint	KeyTOC = 20;		/* ^t */
Xint  	KeyRedraw = 18;		/* ^r */
Xint  	KeySave = 6;		/* ^f */
Xint  	KeyPrint = 16;		/* ^p */
Xint  	KeyCancel = 27;		/* esc */
X
X
Xvoid
XInitGetI()
X{
X/*
X	char  *tName, *lName, *getenv() ;
X
X   	lName = longname() ;
X   	tName = getenv("TERM") ;
X
X   	if (strcmp(tName, "5425")  ==  0)
X      		Load5425 () ;
X   	else
X		if (strcmp (tName, "sun") == 0)
X			LoadSun ();
X		else
X      			LoadAnsi() ;
X*/
X}
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/InitGetI.c || echo "restore of utilities.d/libgeti.d/InitGetI.c fails"
echo "x - extracting utilities.d/libgeti.d/IsDate.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsDate.c &&
Xstatic char Sccsid[] = "@(#)IsDate.c	1.1   DeltaDate 8/30/87   ExtrDate 1/22/90";
X#include <stdio.h>
X#include <time.h>
X#include "GetInput.h"
X
XIsDate (str, mask)
X	char	*str ;
X	char	*mask ;
X{
X	char	cmdstr[5] ;
X	int	year, month, day ;
X	static int	century = 0 ;
X	long	clock ;
X
X	struct tm *localtime(), *Tm ;
X
X	if (century == 0) {
X
X		clock = time((long *) 0) ;
X		Tm = localtime (&clock) ;
X		century = 1900 ;
X		if (Tm->tm_year > 100)
X			century += (Tm->tm_year / 100) * 100 ;
X
X	}
X
X	if (mask == NULL) {
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		month = atoi (cmdstr) ;
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		day = atoi (cmdstr) ;
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		year = atoi (cmdstr)  +  century ;
X
X	} else {
X
X		while ( *mask != '\0' ) {
X
X			while ( *mask != 'M' && *mask != 'D' && *mask != 'Y' )
X				mask++ ;
X
X			switch (*mask) {
X				case 'M':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					month = atoi (cmdstr) ;
X					mask += 2 ;
X					break ;
X				case 'D':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					day = atoi (cmdstr) ;
X					mask += 2 ;
X					break ;
X				case 'Y':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					mask += 2 ;
X					if (*mask == 'Y') {
X						cmdstr[2] = *str++ ;
X						cmdstr[3] = *str++ ;
X						cmdstr[4] = '\0' ;
X						year = atoi (cmdstr) ;
X						mask += 2 ;
X					} else {
X						cmdstr[2] = '\0' ;
X						year = atoi (cmdstr) + century ;
X					}
X					break ;
X			}
X		}
X	}
X	return (valid_date (year, month, day)) ;
X}
X
X
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsDate.c || echo "restore of utilities.d/libgeti.d/IsDate.c fails"
echo "x - extracting utilities.d/libgeti.d/IsFldOk.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsFldOk.c &&
Xstatic char Sccsid[] = "@(#)IsFldOk.c	1.3   DeltaDate 1/22/90   ExtrDate 1/22/90";
X
X#include 	<curses.h>
X#include 	<ctype.h>
X#include 	"GetInput.h"
X
X
XIsFldOk (win, row, colStart, Fld, fldMask, fldRange, fldLength, fldCharType, 
X	fldType, mustEnter, fldErrRow, fldDispRow, colEnd, fldStr, charKeyed, 
X	setNumb, origAttr)
X
X	WINDOW      	*win ;      	/* Window                */
X	int   		row ;
X	int   		colStart ;
X	FldUnPointer	Fld ;    	/* Pointer to union for field     */
X	char  		*fldMask ;  	/* mask for character string      */
X	char  		*fldRange ; 	/* range of valid values for output */
X	unsigned 	fldLength ; 	/* Maximum length of output       */
X	char  		fldCharType ;  /* type of character           */
X	char  		fldType ;   /* type of field         */
X	int   		mustEnter ; /* must enter - boolean   */
X	int   		fldErrRow ; /* where to display error message   */
X	int   		fldDispRow ;   /* where to display help message    */
X	int   		colEnd ; /* last character to display      */
X	char  		*fldStr ;   /* field string             */
X	char  		charKeyed[] ;  /* characters in the field keyed    */
X	int   		setNumb ;   /* for SET & MENU      */
X	int   		origAttr[] ;   /* origianl attributes for this fld */
X{
X   	int   	colLast, col ;
X   	double  atof() ;
X   	char  	*fldWrk ;
X
X
X   getyx(win, row, col) ;
X   colLast = col - 1 ;
X
X   col = colStart ;
X
X   fldWrk = fldStr ;
X
X   while (col < colEnd) 
X   {
X
X      if (charKeyed [col - colStart] == 'Y')
X         *fldWrk++ = mvwinch(win, row, col) & A_CHARTEXT ;
X      col++;
X   }
X
X   *fldWrk = '\0' ;
X
X   switch (fldType) 
X   
X{
X   case CHAR:
X   case DATE:
X   case TIME:
X      strcpy (Fld->strVal, fldStr) ;
X      break ;
X
X   case INT:
X      *Fld->intVal = atoi(fldStr) ;
X      break ;
X
X   case SHORT:
X      *Fld->shortVal = atoi(fldStr) ;
X      break ;
X
X   case LONG:
X      *Fld->longVal = atoi(fldStr) ;
X      break ;
X
X   case FLOAT:
X      *Fld->floatVal = atof(fldStr) ;
X      break ;
X
X   case DOUBLE:
X   case MONEY:
X      *Fld->doubleVal = atof(fldStr) ;
X      break ;
X   }
X
X   if (fldStr == NULL  &&  !mustEnter)
X      return(1) ;
X
X	if (fldCharType == DATE  &&
X           ((mustEnter && !IsDate (fldStr, fldMask)) ||
X           (!mustEnter && strcmp(fldStr, "000000") != 0  &&
X            strcmp(fldStr, "      ") != 0  &&
X            fldStr[0] != '\0' &&
X            !IsDate (fldStr, fldMask)))) 
X    	{
X      		BELL;
X		CLEARROW (fldErrRow);
X		wattrOn (stdscr, A_REVERSE|A_BOLD);
X      		mvwaddstr (stdscr,
X		    ((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		    ((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X			"Invalid Date") ;
X		wattrOff (stdscr);
X      		wmove (win, row, colStart) ;
X      		return (0) ;
X   	}
X
X   	if (fldCharType == TIME  &&
X           ((mustEnter && !IsTime (fldStr, fldMask)) ||
X           (!mustEnter && strcmp(fldStr, "000000") != 0  &&
X           strcmp(fldStr, "      ") != 0  &&
X           fldStr[0] != '\0' &&
X           !IsTime (fldStr, fldMask)))) 
X	{
X      		BELL;
X		CLEARROW (fldErrRow);
X		wattrOn (stdscr, A_REVERSE|A_BOLD);
X      		mvwaddstr (stdscr,
X		    ((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		    ((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X			"Invalid Time") ;
X		wattrOff (stdscr);
X      		wmove (win, row, colStart) ;
X      		return (0) ;
X   	}
X
X   	if (fldCharType == STATE  &&  !IsState (fldStr)) 
X	{
X      		BELL;
X		CLEARROW (fldErrRow);
X		wattrOn (stdscr, A_REVERSE|A_BOLD);
X      		mvwaddstr (stdscr,
X		    ((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		    ((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X			"Invalid State") ;
X		wattrOff (stdscr);
X      		wmove (win, row, colStart) ;
X      		return (0) ;
X   	}
X
X   	if (fldCharType == SET   ||  fldCharType == MENU  ||   fldRange == NULL)
X	{
X      		ReDispFld(win, row, colStart, -1, fldMask, fldRange, fldLength, 
X				fldCharType, fldType, fldStr, colEnd, charKeyed,
X				setNumb, origAttr) ;
X      		return (1) ;
X   	}
X
X   	if ( IsRange(Fld, fldLength, fldType, fldRange) ) 
X	{
X      		ReDispFld(win, row, colStart, -1, fldMask, fldRange, fldLength, 
X				fldCharType, fldType, fldStr, colEnd, charKeyed,
X				setNumb, origAttr) ;
X      		return (1) ;
X   	} 
X	else 
X	{
X      		getyx (win, row, col) ;
X      		BELL;
X		CLEARROW (fldErrRow);
X		wattrOn (stdscr, A_REVERSE|A_BOLD);
X      		mvwprintw (stdscr,
X		    ((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		    ((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X			"[%s] Valid Ranges are: %s", fldStr, fldRange) ;
X		wattrOff (stdscr);
X      		wmove (win, row, colLast) ;
X
X   	}
X
X   	return(0) ;
X
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsFldOk.c || echo "restore of utilities.d/libgeti.d/IsFldOk.c fails"
echo "x - extracting utilities.d/libgeti.d/IsMask.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsMask.c &&
Xstatic char Sccsid[] = "@(#)IsMask.c	1.2   DeltaDate 1/22/90   ExtrDate 1/22/90";
X
X/*
X**  IsMask ()
X**	Determines whether a given character is a mask format character based
X**	upon the field type.
X**  RETURNS:
X**	TRUE	character is a mask format character
X**	FALSE	this character allows data input
X*/
X
X#include	"GetInput.h"
X
XIsMask (fldCharType, maskChar)
X	char	fldCharType ;
X	char	maskChar ;
X{
X
X	if ( fldCharType  == maskChar)
X		return (0) ;
X	else 	if (fldCharType  == ALPHANUM  &&
X		   (maskChar == ALPHANUM  || maskChar == ALPHA  ||
X		    maskChar == NUMERIC  || maskChar == UPPER  ||
X		    maskChar == UPPER_AN  || maskChar == HEX) )
X			return (0) ;
X	else 	if (fldCharType  == DATE  &&
X		   (maskChar == 'D' || maskChar == 'M' || maskChar == 'Y'))
X			return (0) ;
X	else 	if (fldCharType  == TIME  &&
X		   (maskChar == 'I' || maskChar == 'H' || maskChar == 'M'||
X		    maskChar == 'S' || maskChar == 'T'))
X			return (0) ;
X	else
X		return (1) ;
X}
X
X
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsMask.c || echo "restore of utilities.d/libgeti.d/IsMask.c fails"
echo "x - extracting utilities.d/libgeti.d/IsRange.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsRange.c &&
Xstatic char Sccsid[] = "@(#)IsRange.c	1.1   DeltaDate 8/30/87   ExtrDate 1/22/90";
X#include <curses.h>
X#include <ctype.h>
X#include <string.h>
X#include "GetInput.h"
X
X#ifndef TRUE
X# define TRUE	1
X# define FALSE 	0
X#endif
X
X#define FROM 	0
X#define TO   	1
X
XIsRange (Fld, fldLength, fldType, fldRange)
X
XFldUnPointer   Fld ;
Xunsigned int   fldLength ;
Xchar  fldType ;
Xchar  *fldRange ;
X{
X   char		*wrk, *wrkAlloc ;
X   char  	*malloc() ;
X   int   	testInt, t1, t2, INTFLAG;
X   long  	testLong ;
X   float 	testFloat ;
X   double   	testDouble ;
X   int   	fromTo ;
X   int   	fromOk ;
X   int   	success ;
X   int   	retCode ;
X   double   	atof() ;
X
X
X   wrkAlloc   = malloc (fldLength + 1) ;
X
X   fromTo = FROM ;
X   success = fromOk = FALSE ;
X
X   while (TRUE) 
X   {
X      wrk = wrkAlloc ;
X
X/*
X** 	Get a range value to test on.
X*/
X      do
X      {
X         *wrk++ = *fldRange++;
X      } while (*fldRange != '\0' && *fldRange != ',' && *fldRange != '-') ;
X
X      *wrk = '\0' ;
X      wrk = wrkAlloc ;
X
X      switch (fldType) 
X      {
X
X      case CHAR:
X/*
X**	bug fix - 9/24/86 pjc
X**	range = "1-12" double digit could not handle
X*/
X	 INTFLAG = sscanf (wrk, "%d", &t2);
X	 if (INTFLAG)   INTFLAG = sscanf (Fld->strVal, "%d", &t1);
X	 if (INTFLAG)
X	 {
X	    retCode = t1 - t2;
X	 }
X	 else
X	    retCode = strcmp (Fld->strVal, wrk);
X         if (retCode == 0 || (fromOk == TRUE  &&  fromTo == TO  && retCode < 0))
X            success = TRUE ;
X         else 
X            if (fromTo == FROM  &&  retCode > 0)
X               fromOk = TRUE ;
X         break ;
X
X      case INT:
X         testInt = atoi (wrk) ;
X         if (*Fld->intVal == testInt  ||
X             (fromOk == TRUE  &&  fromTo == TO &&
X             *Fld->intVal < testInt) )
X            success = TRUE ;
X         else if (fromTo == FROM  &&
X             *Fld->intVal > testInt)
X            fromOk = TRUE ;
X         break ;
X
X      case LONG:
X         testLong = atol (wrk) ;
X         if (*Fld->longVal == testLong  ||
X             (fromOk == TRUE  &&  fromTo == TO &&
X             *Fld->longVal < testLong) )
X            success = TRUE ;
X         else if (fromTo == FROM  &&
X             *Fld->longVal > testLong)
X            fromOk = TRUE ;
X         break ;
X
X      case FLOAT:
X         testFloat = atof (wrk) ;
X         if (*Fld->floatVal == testFloat  ||
X             (fromOk == TRUE  &&  fromTo == TO &&
X             *Fld->floatVal < testFloat) )
X            success = TRUE ;
X         else if (fromTo == FROM  &&
X             *Fld->floatVal > testFloat)
X            fromOk = TRUE ;
X         break ;
X
X      case DOUBLE:
X      case MONEY:
X         testDouble = atof (wrk) ;
X         if (*Fld->doubleVal == testDouble  ||
X             (fromOk == TRUE  &&  fromTo == TO &&
X             *Fld->doubleVal < testDouble))
X            success = TRUE ;
X         else if (fromTo == FROM  &&
X             *Fld->doubleVal > testDouble)
X            fromOk = TRUE ;
X         break ;
X      }
X
X      if (success)
X         break ;
X
X      /*
X      **
X      ** Skip to next valid range check
X      **
X      */
X      while (TRUE) 
X      {
X         if (*fldRange == '\0')
X            break ;
X         else 
X            if (*fldRange == '-')
X               fromTo = TO ;
X            else 
X               if (*fldRange == ',') 
X   	       {
X                  fromOk = FALSE ;
X                  fromTo = FROM ;
X               }
X
X         if (isprint (*fldRange)  && *fldRange != ' ' &&
X             *fldRange != ','  &&  *fldRange != '-')
X            break ;
X
X         fldRange++;
X      }
X
X      if (*fldRange == '\0')
X         break ;
X
X   }
X
X   free (wrkAlloc) ;
X
X   if (success)
X      return (TRUE) ;
X   else
X      return (FALSE) ;
X}
X
X
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsRange.c || echo "restore of utilities.d/libgeti.d/IsRange.c fails"
echo "x - extracting utilities.d/libgeti.d/IsState.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsState.c &&
Xstatic char Sccsid[] = "@(#)IsState.c	1.1   DeltaDate 8/30/87   ExtrDate 1/22/90";
X#include <string.h>
X
X#define MAXSTATES 50
X
XIsState (str)
X	char str[] ;
X{
X	int	retCode, count ;
X
X	static char *states[] = {
X		"AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DE", "FL", "GA",
X		"HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD",
X		"ME", "MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", 
X		"NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC",
X		"SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY"
X	} ;
X
X
X	count = 0 ;
X
X	while (count < MAXSTATES) {
X
X		retCode = strcmp (str, states[count++]) ;
X
X		if (retCode == 0)
X			return (1) ;
X
X		if (retCode < 0)
X			return (0) ;
X	
X	}
X
X	return (0) ;
X}
X
X
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsState.c || echo "restore of utilities.d/libgeti.d/IsState.c fails"
echo "x - extracting utilities.d/libgeti.d/IsTime.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/IsTime.c &&
Xstatic char Sccsid[] = "@(#)IsTime.c	1.1   DeltaDate 8/30/87   ExtrDate 1/22/90";
X#include <stdio.h>
X#include "GetInput.h"
X
XIsTime(str, mask)
X	char	*str ;
X	char	*mask ;
X{
X	char	cmdstr[5] ;
X	int	i ;
X
X	if (mask == NULL) {
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		i = atoi (cmdstr) ;
X		if(i < 0  || i > 12)
X			return(0) ;
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		i = atoi (cmdstr) ;
X		if(i < 1  || i > 59)
X			return(0) ;
X
X		cmdstr[0] = *str++ ;
X		cmdstr[1] = *str++ ;
X		cmdstr[2] = '\0' ;
X		i = atoi (cmdstr) ;
X		if(i < 1  || i > 59)
X			return(0) ;
X
X	} else {
X
X		while ( *mask != '\0' ) {
X
X			while ( *mask != 'I' && *mask != 'H' && *mask != 'M' &&
X					*mask != 'S' && *mask != 'T')
X				mask++ ;
X
X			switch (*mask) {
X				case 'H':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					i = atoi (cmdstr) ;
X					if(i < 1  ||  i > 12)
X						return(0) ;
X					mask += 2 ;
X					break ;
X				case 'M':
X				case 'S':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					i = atoi (cmdstr) ;
X					if(i < 0  ||  i > 59)
X						return(0) ;
X					mask += 2 ;
X					break ;
X				case 'T':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					i = atoi (cmdstr) ;
X					if(i < 0  ||  i > 99)
X						return(0) ;
X					mask += 2 ;
X					break ;
X				case 'I':
X					cmdstr[0] = *str++ ;
X					cmdstr[1] = *str++ ;
X					cmdstr[2] = '\0' ;
X					i = atoi (cmdstr) ;
X					if(i < 0  ||  i > 23)
X						return(0) ;
X					mask += 2 ;
X					break ;
X			}
X		}
X	}
X	return(1) ;
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/IsTime.c || echo "restore of utilities.d/libgeti.d/IsTime.c fails"
echo "x - extracting utilities.d/libgeti.d/ReDispFld.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/ReDispFld.c &&
Xstatic char Sccsid[] = "@(#)ReDispFld.c	1.3   DeltaDate 1/22/90   ExtrDate 1/22/90";
X#include <curses.h>
X#include "GetInput.h"
X#include <ctype.h>
X
XReDispFld (win, rowStart, colStart, fldAttrib, fldMask, fldRange, fldLength, 
X	fldCharType, fldType, fldStr, colEnd, charKeyed, setNumb, 
X	origAttr)
X	WINDOW      	*win ;      	/* Window                */
X	int   		rowStart ;
X	int   		colStart ;
X	int   		fldAttrib ; 	/* field attribute             */
X	char  		*fldMask ;  	/* mask for character string      */
X	char  		*fldRange ; 	/* allowable range for field      */
X	unsigned	fldLength ; 	/* Maximum length of output       */
X	char  		fldCharType ;  	/* type of character           */
X	char  		fldType ;   	/* type of field         */
Xchar  *fldStr ;   /* the field without the mask chars */
Xint   colEnd ; /* last column for display  */
Xchar  charKeyed[] ;  /* characters keyed */
Xint   setNumb ;   /* for SET & MENU */
Xint   origAttr[] ;   /* original attributes for field */
X{
X   int   col ;
X
X   char  *fldWrk ;
X
X   if (fldCharType == SET  ||  fldCharType == MENU )
X      ShowSet(win, rowStart, colStart, -1, fldRange, fldLength, &setNumb, colEnd, charKeyed, origAttr) ;
X   else {
X      if (fldAttrib != -1)
X         wattrset(win, fldAttrib) ;
X      col = colStart ;
X      wmove(win, rowStart, col) ;
X      fldWrk = fldStr ;
X
X      if (fldAttrib == -1   &&  fldType ==  MONEY) {
X         int   decimalFound, decimalPlaces ;
X
X         decimalFound =  FALSE ;
X         decimalPlaces = 0 ;
X
X         while (*fldWrk != '\0') {
X            if (*fldWrk == '.')
X               decimalFound = TRUE ;
X            else if (decimalFound)
X               decimalPlaces++;
X            fldWrk++;
X         }
X         if (!decimalFound)
X            strcat(fldStr, ".00") ;
X         else if (decimalFound  &&  decimalPlaces < 2) {
X            if (decimalPlaces == 0)
X               strcat(fldStr, "00") ;
X            else if (decimalPlaces == 1)
X               strcat(fldStr, "0") ;
X         }
X
X         fldWrk = fldStr ;
X      }
X
X      while (col < colEnd  &&  *fldWrk != '\0') {
X         if (fldAttrib == -1)
X            wattrset(win, origAttr[col - colStart] ) ;
X         if (charKeyed [col - colStart] == 'M')
X            mvwaddch(win, rowStart, col, *(fldMask + col - colStart) ) ;
X         else
X            mvwaddch(win, rowStart, col, *fldWrk++) ;
X         col++;
X      };
X
X      if (strlen(fldStr) < fldLength) {
X         int   bytesFill ;
X
X         bytesFill = fldLength - strlen(fldStr) ;
X         while (bytesFill) {
X            if (fldAttrib == -1)
X               wattrset(win, origAttr[col - colStart]);
X            if (charKeyed [col - colStart] != 'M') {
X               bytesFill--;
X               mvwaddch(win, rowStart, col++, ' ') ;
X            } else {
X               mvwaddch(win, rowStart, col, *(fldMask + col - colStart) ) ;
X               col++;
X            }
X         }
X      }
X
X      while (col < colEnd) 
X      {
X         if (charKeyed [col - colStart] != 'M')
X            mvwaddch(win, rowStart, col, ' ') ;
X         else
X            mvwaddch(win, rowStart, col, *(fldMask + col - colStart) ) ;
X         col++;
X      }
X
X      wattrset(win, 0) ;
X   }
X
X	return(0) ;
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/ReDispFld.c || echo "restore of utilities.d/libgeti.d/ReDispFld.c fails"
echo "x - extracting utilities.d/libgeti.d/RingMenu.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/RingMenu.c &&
X#ifndef LINT
Xstatic char Sccsid[] = "@(#)RingMenu.c	1.3   DeltaDate 2/3/90   ExtrDate 2/3/90";
X#endif
X
X/***********************************************************************
X#############################################################################
X# This software/documentation is the proprietary trade secret and property  #
X# of Pacific Bell.  Receipt or possession of it does not convey any rights  #
X# to divulge, reproduce, use or allow others to use it without the specific #
X# written authorization of Pacific Bell.  Use must conform strictly to	    #
X# the license agreement between user and Pacific Bell.			    #
X#############################################################################
X
X	Program: RingMenu.c
X	Purpose: To display a Ring Menu, and prompt for option.
X		 Options are to be selected with first capital
X		 letter match, or use the cursor position key
X		 to move to the right option and depress RETURN.
X		 Help message for current option is always displayed
X		 the line below the option line.
X
X	Synopsis: RingMenu (win, line, opt, title, opt_table )
X			WINDOW	*win;			/* curses screen
X			unsigned short	line ;		/* line option on
X			unsigned short	opt ;		/* default option pos
X			char	*title;			/* menu title
X			char	*opt_table[][2];	/* option table
X							/*  name and description
X	Return: 1 - MAXOPTIONS
X
X	Author: Sam Lok
X	Date Written: March, 1989.
X	Installation: Pacific Bell
X	Modification History:
X	[Plx log name of programmer, date and description]
X
X***********************************************************************/
X
X#include <curses.h>
X#include <term.h>
X#include "GetInput.h"
X#include "keys.h"
X
X#define	MSGLINE		23
X#define	MAXOPTIONS	20
Xstruct ring				/* the ring */
X{
X	short	column ;		/* column position */
X	short	page ;			/* page number */
X} menu[MAXOPTIONS] ;
Xshort	Noptions ;			/* total number of options */
X
XRingMenu (win, line, opt, title, opt_table )
X	WINDOW	*win;
X	char	*opt_table[][2] ;
X	char	*title ;
X	unsigned short	line, opt ;
X{
X	register short	i, ii, ch ;
X
X	/*
X	 * Initializations
X	 */
X	putp( cursor_invisible ) ;	/* turn off cursor if possible */
X	for ( i=0;			/* count # option */
X	      *opt_table[i]!=NULL && i<MAXOPTIONS;
X	      i++ )
X		;
X	Noptions = i;
X
X	/* initialize ring menu */
X	/*
X	 * first option
X	 */
X	if ( title != NULL )
X		menu[0].column = strlen( title ) + 2 ;
X	else
X		menu[0].column = 0 ;
X	menu[0].page = 1 ;
X	/*
X	 * beyond the 1st option
X	 */
X	for ( i=1; i<Noptions ; i++ )
X	{
X		menu[i].page = menu[i-1].page ;
X		menu[i].column = menu[i-1].column
X				+ strlen( opt_table[i-1][0] ) + 2 ;
X		/*
X		 * about to roll off the right edge?
X		 */
X		if ( menu[i].column+strlen( opt_table[i][0] ) > COLS ||
X		     ( i < Noptions-1 &&
X		       menu[i].column+strlen( opt_table[i][0] )+5 > COLS ) )
X		{
X			menu[i].page++ ;	/* bump a page */
X			if ( title != NULL )	/* and wrap around */
X				menu[i].column = strlen( title ) + 7 ;
X			else
X				menu[i].column = 5 ;
X		}
X	}
X
X	i = ( opt<=Noptions && opt>0 ) ? opt-1 : 0 ;	/* set highlight */
X
X	/*
X	 * The LOOP
X	 */
X	while ( TRUE )
X	{
X		_showring( win, line, title, i, opt_table ) ;
X		ch = wgetch( win ) ;		/* get input */
X
X		if ( ch == KeyBackspace )	ch = KEY_BACKSPACE ;
X		if ( ch == KeyHelp )		ch = KEY_HELP ;
X		if ( ch == KeyRedraw )		ch = KEY_REFRESH ;
X		if ( ch == KeyPrint )		ch = KEY_PRINT ;
X
X		switch (ch)
X		{
X	 	case KEY_UP:
X		case KEY_LEFT:
X		case KEY_CTLK:
X		case KEY_CTLH:
X	 	case KEY_BACKSPACE:
X	 	case KEY_BTAB:
X			if ( --i < 0 )
X				i = Noptions - 1 ;
X			break ;
X
X	 	case KEY_DOWN:
X		case KEY_RIGHT:
X		case KEY_CTLJ:
X		case KEY_CTLL:
X	 	case ' ':
X	 	case KEY_TAB:
X			if ( ++i >= Noptions )
X				i = 0 ;
X		        break ;
X
X		case KEY_RETURN:
X		case KEY_ENTER:
X			_wclrring( win, line ) ;
X			putp( cursor_visible ) ;
X			return( i+1 ) ;
X			break ;
X
X		case KEY_HELP:
X			/*
X			ShowHelp( GENERAL, SPECIALKEYS, MSGLINE ) ;
X			*/
X			break ;
X
X		case KEY_REFRESH:
X			clearok( win, TRUE ) ;
X			break ;
X			
X		case KEY_PRINT:
X            		ScrnPrnt(win, LINES, COLS, MSGLINE) ;
X            		clearok(win, TRUE ) ;
X			break ;
X			
X		default:
X			for ( ii=0; ii<=Noptions-1; ii++ )
X			{
X				/* upper char match */
X				if ( strchr( opt_table[ii][0], toupper(ch) ) != NULL )
X				{
X					_wclrring( win, line ) ;
X					putp( cursor_visible ) ;
X		        		return ( ii+1 );
X				}
X			}
X			flash() ;
X		        break;
X		}
X	}
X}
X
X/*
X * _wclrring:  Erase the ring menu from screen
X */
X_wclrring( win, line )
X	WINDOW	*win ;
X	short	line ;
X{
X	wmove( win, line, 0 ) ; wclrtoeol( win ) ;
X	wmove( win, line+1, 0 ) ; wclrtoeol( win ) ;
X}
X
X/*
X * _showring: Display one lineful of RingMenu depending on the page
X *	      current option is on.
X */
X_showring( win, line, title, opt, opt_table )
X	WINDOW	*win ;
X	short 	line, opt ;
X	char	*title, *opt_table[][2] ;
X{
X	register short	i ;
X
X	wmove( win, line, 0 ) ;			/* go there */
X	if ( title != NULL )			/* title? */
X		wprintw( win, "%s  ", title ) ;
X	if ( menu[opt].page != 1 )		/* not 1st page? */
X		waddstr( win, "...  " ) ;
X		
X	/*
X	 * show options
X	 */
X	for ( i=0; i<Noptions && menu[i].page<=menu[opt].page; i++ )
X		if ( menu[i].page == menu[opt].page )	/* same page? */
X		{
X			if ( i == opt )		/* need highlight? */
X				wattrset( win, A_REVERSE );
X			waddstr( win, opt_table[i][0] );
X			wattrset( win, A_NORMAL ) ;
X			waddstr( win, "  " ) ;
X		}
X
X	if ( menu[opt].page < menu[Noptions-1].page )	/* not last page? */
X		waddstr( win, "..." ) ;
X	wclrtoeol( win ) ;
X
X	/*
X	 * show description
X	 */
X	wmove( win, line+1, 0 ) ;
X	wclrtoeol( win ) ;
X	mvwprintw( win, line+1,menu[0].column, "%s", opt_table[opt][1] ) ;
X
X	/*
X	 * fix cursor
X	 */
X	if ( menu[0].column >= 2 )
X		wmove(win, line, menu[0].column-2 );	/* before 1st option */
X	else
X		/* behind the last option */
X		wmove(win, line, menu[i-1].column+strlen(opt_table[i-1][0])+2 ) ;
X
X	wrefresh( win );
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/RingMenu.c || echo "restore of utilities.d/libgeti.d/RingMenu.c fails"
echo "x - extracting utilities.d/libgeti.d/ScrnOut.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/ScrnOut.c &&
Xstatic char Sccsid[] = "@(#)ScrnOut.c	1.2   DeltaDate 1/22/90   ExtrDate 1/22/90";
X
X#include	<curses.h>
X#include	"GetInput.h"
X
XScrnOut(win, y, x, fpout)
X	WINDOW	*win ;
X	int	y, x ;
X	FILE	*fpout ;
X{
X	int	xx, yy ;
X
X	for(yy = 0 ; yy < y ; yy++) {
X		for(xx = 0 ; xx < x ; xx++)
X			fputc( mvwinch( win, yy, xx ) & A_CHARTEXT, fpout) ;
X		fputc( '\n', fpout ) ;
X	}
X
X	return( 0 ) ;
X}
X
X
X
XScrnPrnt(win, y, x, msgLine)
X	WINDOW	*win ;
X	int	y, x ;
X	int	msgLine ;
X{
X	FILE	*fp ;
X
X	BELL;
X	mvaddstr(msgLine, 0, "Printing Screen ") ;
X	wattrOn(stdscr, A_BLINK) ;
X	addstr("...") ;
X	wattrOff(stdscr) ;
X	refresh() ;
X	BELL;
X
X	if( (fp = popen("lp -s", "w")) == NULL )
X		return(1) ;
X
X	ScrnOut(win, y, x, fp) ;
X
X	pclose(fp) ;
X
X	move(msgLine, 0) ;
X	clrtoeol() ;
X	refresh() ;
X
X	return(0) ;
X}
X
X
X
XScrnFile(win, y, x)
X	WINDOW	*win ;
X	int	y, x ;
X{
X	WINDOW	*twin ;
X	FILE	*fp ;
X	char	cmdstr[17] ;
X	union 	FldUnion Fld ;
X
X	twin = newwin(LINES, COLS, 0, 0) ;
X	mvwaddstr(twin, 10, 0, "File Name: ") ;
X	BELL;
X	cmdstr[0] = '\0' ;
X	Fld.strVal = cmdstr ;
X	GetInput (twin, 10, 11, &Fld, A_REVERSE, NOMASK, NORANGE, 16, 0, 
X		ALPHANUM, NOFILL, CHAR, AUTONEXT, NOMUST, LINES-1, LINES-1, 
X		"Enter the name of the file that will contain the image of the screen.", 
X		NULL, NULL) ;
X
X	if(cmdstr[0] == '\0')
X		return(1) ;
X
X	if( (fp = fopen(cmdstr, "w")) == NULL )
X		return(1) ;
X
X	ScrnOut(win, y, x, fp) ;
X
X	fclose(fp) ;
X
X	delwin(twin) ;
X
X	return(0) ;
X}
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/ScrnOut.c || echo "restore of utilities.d/libgeti.d/ScrnOut.c fails"
echo "x - extracting utilities.d/libgeti.d/ShowChar.c (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/ShowChar.c &&
X#ifndef LINT
Xstatic char Sccsid[] = "@(#)ShowChar.c	1.3   DeltaDate 1/22/90   ExtrDate 1/22/90";
X#endif
X
X/*
X**  ShowChar()
X**	Validate character against the mask and convert to upper is neccessary.
X**	Display char to screen.
X*/
X
X#include 	<curses.h>
X#include 	<ctype.h>
X#include 	"GetInput.h"
X
Xextern int	insertmode;
X
XShowChar (win, rowStart, colStart, fldAttrib, fldMask, fldRange, fldLength, 
X	fldCharType, fldDispRow, fldType, keyStream, fldErrRow, charKeyed, 
X	colEnd, ch, origAttr)
X
X	WINDOW      	*win ;      	/* Window                */
X	int   		rowStart ;
X	int   		colStart ;
X	int   		fldAttrib ; 	/* Curses attribute         */
X	char  		*fldMask ;  	/* mask for character string      */
X	char  		*fldRange ; 	/* allowable range for field      */
X	unsigned	fldLength ; 	/* Maximum length of output       */
X	char  		fldCharType;	/* type of character           */
X	int   		fldDispRow ;   	/* where to display help message    */
X	char  		fldType ;   	/* type of field         */
X	int   		keyStream ; 	/* if TRUE then the function will
X                  			exit when the last character is
X                  			keyed           */
X	int   		fldErrRow ; 	/* where to display error message   */
X	char  		*charKeyed ;   	/* characters keyed array      */
X	int   		colEnd ; 	/* column start of field */
X	int   		*ch ;     	/* contains character keyed or being
X                  			moved */
X	int   		origAttr[] ;   	/* original attributes for field */
X{
X	int		row ;       /* working row field */
X   	int   		col ;       /* working column field */
X   	char  		charType ;
X   	char  		cmdstr[16] ;
X	int		junk;
X
X
X   	getyx(win, row, col) ;
X
X   	if (fldCharType == STATE  || fldMask == NULL)
X      		charType = fldCharType ;
X   	else 
X      		if (fldCharType == DATE  ||  fldCharType == TIME)
X         		charType = NUMERIC ;
X      		else
X         		charType = *(fldMask + col - colStart) ;
X
X   	switch (charType) 
X   	{
X   	   case HEX:
X      		break ;
X
X   	   case ALPHA:
X      		if (isalpha(*ch)) 
X		{
X			if (insertmode)
X			{
X				junk = doinsert (win, row, col, colStart, 
X						colEnd, charKeyed, fldMask,
X						fldCharType, fldType, rowStart,
X						fldAttrib, fldRange, fldLength,
X						fldErrRow, origAttr);
X				if (junk != 0)
X					break;
X			}
X         		wattrset(win, fldAttrib) ;
X         		waddch(win, *ch) ;
X         		wattrset(win, 0) ;
X         		*(charKeyed + col - colStart) = 'Y' ;
X      		} 
X		else 
X		{
X			CLEARROW (fldErrRow);
X			wattrOn (stdscr, A_REVERSE|A_BOLD);
X         		mvwaddstr(stdscr,
X		((fldErrRow%100) == fldErrRow) ? fldErrRow : fldErrRow/100, 
X		((fldErrRow%100) == fldErrRow) ? 0 : fldErrRow%100, 
X				"Only alpha characters allowed.") ;
X			wattrOff (stdscr);
X         		wmove(win, rowStart, col) ;
X         		BELL;
X      		}
X      		break ;
X
X   	   case ALPHANUM:
X   	   case UPPER_AN:
X   	   case STATE:
X      		if (isprint(*ch)) 
X      		{
X			if (insertmode)
X			{
X				junk = doinsert (win, row, col, colStart, 
X						colEnd, charKeyed, fldMask,
X						fldCharType, fldType, rowStart,
X						fldAttrib, fldRange, fldLength,
X						fldErrRow, origAttr);
X				if (junk != 0)
X					break;
X			}
X
X         		if (charType == UPPER_AN  ||  charType == STATE)
X            			*ch = toupper(*ch);
X         		wattrset(win, fldAttrib) ;
X         		waddch(win, *ch) ;
X         		wattrset(win, 0) ;
X         		*(charKeyed + col - colStart) = 'Y' ;
X      		} 
X      		else 
X      		{
X			CLEARROW (fldErrRow);
X			wattrOn (stdscr, A_REVERSE|A_BOLD);
X         		mvwaddstr(stdscr,
SHAR_EOF
echo "End of part 8"
echo "File utilities.d/libgeti.d/ShowChar.c is continued in part 9"
echo "9" > s2_seq_.tmp
exit 0



More information about the Alt.sources mailing list