#define		VKED
#include    "ksysdefs.h"
#include    "ksysvtyp.h"
#include	"ksysprot.h"
#ifndef     when
#define     when    break;case
#endif
#ifndef     CBREAK
#include    <sgtty.h>
#endif
#ifndef     MAXBUF
#define     MAXBUF  4096
#endif
#ifndef     KEYSIZ
#define     KEYSIZ  32
#endif
KENV        kenv;
extern      KARD    *kd;
extern      KBUF    kb;
extern		char	*getalnum();
static		int		clear = 1;
main(argc,argv)
int     argc;
char    *argv[];
{
    auto    char    ls[BUFSIZ];
    auto    char    *lsx;
    auto    char    *kfn;
	kenv.leisur = DA | DB;
    disnme(kenv.pname = "keytest");
    kfn = keysfile(cmdstr(argc,argv,'k',NULL));
    keysread(kfn);
    while(putchar('?'),fflush(stdout),gets(ls))
    switch(ls[0])   {
/* ### Warning keytest.c 35: No declaration for function 'system' in function main === */
/* ### Warning keytest.c 35: Call to function 'system' with no prototype in function main === */
    case    '!':    system(ls+1);
/* ### Warning keytest.c 36: Call to function 'gkenv' with no prototype in function main === */
/* ### Error keytest.c 36: Type mismatch in parameter 's' in call to 'puts' in function main === */
	when	'g':	puts(gkenv(strcnd(ls+1),"BARF"));
/* ### Warning keytest.c 37: No declaration for function 'hint' in function main === */
/* ### Warning keytest.c 37: Call to function 'hint' with no prototype in function main === */
    when    '?':    hint();
	when	'G':	getalnum(lsx = ls+1);
					puts(lsx);
    when    'D':    kenv.diagno = atoi(ls+1);
/* ### Warning keytest.c 41: Call to function 'rderr' with no prototype in function main === */
    when    'E':    printff("%s\n",rderr(NULL));
/* ### Warning keytest.c 42: No declaration for function 'cdcond' in function main === */
/* ### Warning keytest.c 42: Call to function 'cdcond' with no prototype in function main === */
    when    'C':    cdcond();
/* ### Warning keytest.c 43: No declaration for function 'listest' in function main === */
/* ### Warning keytest.c 43: Call to function 'listest' with no prototype in function main === */
    when    'L':    listest(ls+1);
/* ### Warning keytest.c 44: No declaration for function 'xtocd' in function main === */
/* ### Warning keytest.c 44: Call to function 'xtocd' with no prototype in function main === */
    when    'X':    xtocd(kb.base,'o');
/* ### Warning keytest.c 45: No declaration for function 'wrcd' in function main === */
/* ### Warning keytest.c 45: Call to function 'wrcd' with no prototype in function main === */
    when    'p':    wrcd(stdout,'p',32);
/* ### Warning keytest.c 46: Call to function 'wrcd' with no prototype in function main === */
    when    'l':    wrcd(stdout,'l',32);
/* ### Warning keytest.c 47: Call to function 'wrcd' with no prototype in function main === */
    when    'w':    wrcd(stdout,'w',32);
/* ### Warning keytest.c 48: No declaration for function 'keysmem' in function main === */
/* ### Warning keytest.c 48: Call to function 'keysmem' with no prototype in function main === */
    when    'M':    keysmem(stdout);
    when    'r':    xrdcd(kb.base,kb.bmax,stdin);
    when    'x':    xwrcd(kb.base,stdout);
/* ### Warning keytest.c 51: No declaration for function 'twrset' in function main === */
/* ### Warning keytest.c 51: Call to function 'twrset' with no prototype in function main === */
	when	'T':	twrset(ls+1);
/* ### Warning keytest.c 52: No declaration for function 'twrcd' in function main === */
/* ### Warning keytest.c 52: Call to function 'twrcd' with no prototype in function main === */
	when	't':	twrcd(stdout,'f',48);
/* ### Warning keytest.c 53: No declaration for function 'clcd' in function main === */
/* ### Warning keytest.c 53: Call to function 'clcd' with no prototype in function main === */
    when    'c':    clcd();
/* ### Warning keytest.c 54: No declaration for function 'rdcd' in function main === */
/* ### Warning keytest.c 54: Call to function 'rdcd' with no prototype in function main === */
    when    'a':    rdcd(stdin,'a');
/* ### Warning keytest.c 55: Call to function 'rdcd' with no prototype in function main === */
    when    's':    rdcd(stdin,'s');
#ifdef	VKED
/* ### Warning keytest.c 57: No declaration for function 'vxrdcd' in function main === */
/* ### Warning keytest.c 57: Call to function 'vxrdcd' with no prototype in function main === */
	when	'V':	vxrdcd();
#endif
/* ### Warning keytest.c 59: Call to function 'clcd' with no prototype in function main === */
    when    'v':    clcd();
/* ### Warning keytest.c 60: Call to function 'rdcd' with no prototype in function main === */
                    rdcd(stdin,'v');
/* ### Warning keytest.c 61: Call to function 'clcd' with no prototype in function main === */
    when    'o':    clcd();
/* ### Warning keytest.c 62: Call to function 'rdcd' with no prototype in function main === */
                    rdcd(stdin,'o');
/* ### Warning keytest.c 63: No declaration for function 'exit' in function main === */
/* ### Warning keytest.c 63: Call to function 'exit' with no prototype in function main === */
    when    'q':    exit(0);
/* ### Warning keytest.c 64: Call to function 'keysread' with no prototype in function main === */
/* ### Warning keytest.c 64: Call to function 'keysfile' with no prototype in function main === */
    when    'K':    keysread(keysfile(ls+1));
/* ### Warning keytest.c 65: No declaration for function 'keyslist' in function main === */
/* ### Warning keytest.c 65: Call to function 'keyslist' with no prototype in function main === */
    when    'k':    keyslist(stdout);
                    break;
    default:        puts("\007?????\077\n");
/* ### Warning keytest.c 68: Call to function 'hint' with no prototype in function main === */
                    hint();
                    break;
    }
/* ### Warning keytest.c 71: Call to function 'exit' with no prototype in function main === */
    exit(0);
}
listest(is)
char    *is;
{
    auto    int     kl[KEYSIZ];
    auto    int     nl;
    auto    int     i;
    auto    int     ty;
    if(isdigit(*is))    {
        ty = atoi(is);
        is += 1;
        }
/* ### Warning keytest.c 84: Call to function 'keylist' with no prototype in function listest === */
    if((nl = keylist(kl,KEYSIZ,is)) <= 0)   return(NULL);
    for(i = 0; i < nl; i++) {
/* ### Warning keytest.c 86: No declaration for function 'cdprp' in function listest === */
/* ### Warning keytest.c 86: Call to function 'cdprp' with no prototype in function listest === */
        cdprp(kl[i],ty,stdout,32);
        }
    return(NULL);
}
/*NO_TABS*/
hint()
{
    scr_cl(stdout);
        puts("C         cdcond");
        puts("E         rderr");
		puts("G string  getalnum");
        puts("K file    read keys");
        puts("L keys    listtest");
        puts("M         keysmem");
        puts("X         xtocd");
        puts("a         rdcd(fp,a)");
        puts("c         clcd");
        puts("k         list keys");
        puts("l         l print");
        puts("o         rdcd(fp,o)");
        puts("p         print");
        puts("r         xrdcd");
        puts("s         rdcd(fp,s)");
        puts("w         w print");
        puts("x         xwrcd");
		puts("T			twrset");
        puts("t         twrcd");
    return(0);
}
/*TABS*/
#ifdef	VKED
#define	KEY_MARK		013
#define	FOLD_AT			56
char	*screen[BUFSIZ];
typedef	struct	VECTOR	{
	char	*vbase;
	char	*voffs;
	char	*vnows;
	char	*vuppr;
	}	VECTOR	;
VECTOR	vec;
vxrdcd()
{
	auto	char	*ret;
	puts("ENTER CARD\007");
	ret = xrdcd(kb.base+1,kb.bmax,stdin);
	kb.base[0] = LF;
	strxty(kb.base,LF,KEY_MARK);
	strfold(kb.base,FOLD_AT);
	funxesc(kb.base,stdout);
/* ### Warning keytest.c 136: Suspicious pointer conversion in function vxrdcd === */
	vec.voffs = vec.vnows = vec.vbase = screen;
	vec.vuppr = vec.vbase + BUFSIZ - 1;
	vec.vnows = strkat(vec.vnows,vec.vuppr,kb.base);
/* ### Warning keytest.c 139: No declaration for function 'vxwrcd' in function vxrdcd === */
/* ### Warning keytest.c 139: Call to function 'vxwrcd' with no prototype in function vxrdcd === */
	vxwrcd(&vec,stdout);
	return(ZERO);
/* ### Warning keytest.c 141: 'ret' is assigned a value which is never used in function vxrdcd === */
}
vxwrcd(vx,fp)
VECTOR	*vx;
FILE	*fp;
{
	REG	char	*isx = vx->vbase;
	scr_cl(fp);
	while(*isx != ZERO)
	if(*isx == KEY_MARK)		{
		fputc(LF,fp);
		scr_so(fp);
		isx += 1;
		while(isalnum(*isx))	fputc(*isx++,fp);
		scr_se(fp);
		}
	else						fputc(*isx++,fp);
	return(ZERO);
}
#endif
/* ### Warning keytest.c 160: 'clear' declared but never used === */
