
# include <fcntl.h>
# include <ctype.h>

# include "tcp"
main (argc,argv,envp)

	int argc;
	char *argv[],*envp[];
	
{

	FILE *fp,*fopen();
 	int np,i,j,k,pi,n,m,def;
	static char per[23][80],dir[23][100],pe[80],rot[81],hlp[23][80],c;

	if ((fp = fopen(argv[1],"r")) == (FILE *)0)
	{
 		fprintf (stderr,"\r\n\n ....  opcion no implementada aun  ....\n");
 		fprintf (stderr,"\r\n\n CODIGO : 101 : %s no existe\r",argv[1]);
		sleep(5);
		exit(0);
	}
	tcp(0);
	j=0;
	while ((c=getc(fp))!='\n') rot[j++]=c;
	rot[j]=0;
	j=0;
	while ((c=getc(fp))!='\n') pe[j++]=c;
	sscanf(pe,"%d%d",&np,&def);
	for (i=0;i<np;i++)
	{
		j=0;
		while ((c=getc(fp))!=':') pe[j++]=c;
		pe[j]=0;
		strcpy(per[i],pe);
		j=0;
		while ((c=getc(fp))!=':') pe[j++]=c;
		strcpy(dir[i],pe);
		j=0;
		while ((c=getc(fp))!='\n') hlp[i][j++]=c;
	}
	fclose(fp);
	j=def;
	do
	{
		printf(tc[4]);
		mens(rot,0);
		pi=(tc[5][0]-np+1)/2;
		for(i=0;i<np;i++)
		{
			if (i==j) printf(tc[2]);
			pos(pi+i,20);
			n=strlen(per[i]);
			sprintf(pe,"%%%ds%%-%ds",20-n/2,20+n/2);
			printf(pe,"",per[i]);
			if (i==j) printf(tc[3]);
		}
		box(1,0,(tc[5][0]-1),79);
		box((pi-1),19,(pi+np),60);
		mens("USE INICIAL DE SU OPCION O BUSQUE CON FLECHAS  ( ENTER : VALIDA )",tc[5][0]);
		pos(0,79);
		do
		{
			k=getin1();
			i=toupper(k);
			k=i;
			if (k==26 || k==21 || k==6 || k==10)
			{
				pos(pi+j,20);
				n=strlen(per[j]);
				sprintf(pe,"%%%ds%%-%ds",20-n/2,20+n/2);
				printf(pe,"",per[j]);
				if (k==6 || k==10) j++;
				if (k==26 || k==21) j--;
				if (j<0 ) j=np-1;
				if (j == np) j=0;
				pos(pi+j,20);
				n=strlen(per[j]);
				sprintf(pe,"%%s%%%ds%%-%ds%%s",20-n/2,20+n/2);
				printf(pe,tc[2],"",per[j],tc[3]);
			}
			if (k >= '0' && k<= 'z')
			{
				n=j+1;
				if (n== np) n=0;
				m=np;
				for (i=0;i<np;i++)
				{
					if (k==per[n][0])
					{
						m=n;
						i=np;
					}
					n++;
					if (n == np) n=0;
				}
				if (m <np && j!=m)
				{
					n=strlen(per[j]);
					sprintf(pe,"%%%ds%%-%ds",20-n/2,20+n/2);
					pos(pi+j,20);
					printf(pe,"",per[j]);
					j=m;
					n=strlen(per[j]);
					sprintf(pe,"%%s%%%ds%%-%ds%%s",20-n/2,20+n/2);
					pos(pi+j,20);
					printf(pe,tc[2],"",per[j],tc[3]);
				}
				else if( j!=m) printf("\07");
			}
			if(k=='')
			{
				mens("... RETORNO A MENU ...",tc[5][0]);
				exit(0);
			}
			mens(hlp[j],tc[5][0]);
		}
		while (k!=13 && k!=27);
		mens("PRESIONE -ENTER- PARA CONFIRMAR PROCESO  -ESC- ABANDONA",tc[5][0]);
		pos(0,79);
		while((k=getin1())!=13 && k!=27 && k!=32);
		if (k==13)
		{
			printf("%s\n\n\n     ...a proceso elegido... ",tc[4]);
			system(dir[j]);
			if (argc ==3) k=27;
		}
/*
		if (k==':')
		{
			printf("%sshell \r\n",tc[4]);
			system("stty -raw echo");
			system("exec sh -i");
			system("stty raw -echo parenb cs7");
		}
*/
	}
	while (k!=24 && k!=27);
	mens("... RETORNO A MENU ...",tc[5][0]);
}
