void term_uswitchtable( int gate, char state ) {
    if( gate >= 153 && gate <= 156 ) {
        gate -= (153-18);
    } else {
        gate --;
    }
    if( gate < 0 || gate > 21 ) {
        printf( "INVALID GATE!\n" );
        return;
    }

    int row = gate / 6;
    int col = gate % 6;

    savecur();
    setpos( TABLE_DOWN+1+row, TABLE_LEFT-4+(1+col)*9 );
    putc( state );
    loadcur();
}
Example #2
0
File: rview.c Project: badcodes/c
int  _tmain(int  argc,_TCHAR *argv[])
{
	int  viewrnd=0;
	int  viewprev=0;
	int  viewhelp=0;
	int  viewini=0;
	int  viewlist=0;
	int  viewindex=0;
	int  viewnext=0;
	int  fcount=0;
	int  next=1;
	int  reload=0;
	_TCHAR *pageviewer=(_TCHAR*)malloc(_MAX_FNAME);
	_TCHAR *lastdir=(_TCHAR *)malloc(_MAX_PATH);
	_TCHAR *inifile=_tgetenv(_T("APPDATA"));
	_TCHAR *cmdline=(_TCHAR*)malloc(_MAX_FNAME);
	_TCHAR *defaultfile=(_TCHAR*)malloc(_MAX_FNAME);
	_TCHAR *searchfor=(_TCHAR*)malloc(_MAX_FNAME);
	_TCHAR **filelist;
	FILE *appout;
	APPINI status;

	
	defaultfile[0]=NIL;
	pageviewer[0]=NIL;
	lastdir[0]=NIL;
	cmdline[0]=NIL;
	status.viewer[0]=NIL;
	status.workdir[0]=NIL;
	status.filename[0]=NIL;

#ifdef _DEBUG
	appout=_tfopen(_T("text.txt"),_T("wb"));
#else
	appout=stdout;
#endif

	_tcscat(inifile,_T("\\") _T(APPNAME));
	_tmkdir(inifile);
	_tcscat(inifile,_T("\\rview.ini"));

	while (--argc>0)
	{
		/*if argv start at '-')*/
		if (argv[argc][0]==_T('-')) {
			switch(argv[argc][1]) {
			case _T('r'):
			case _T('R'):
				reload=1;
				break;
			case _T('h'):
			case _T('H'):
				viewhelp=1;
				break;
			case _T('v'):
			case _T('V'):
				viewini=1;
				break;
			case _T('l'):
			case _T('L'):
				viewlist=1;
				break;
			case _T('n'):
			case _T('N'):
				viewnext=1;
				break;
			case _T('p'):
			case _T('P'):
				viewprev=1;
				break;
			case _T('z'):
			case _T('Z'):
				viewrnd=1;
				break;
			case _T('c'):
			case _T('C'):
				_tcscpy(pageviewer,(_TCHAR*)&(argv[argc][2]));
				break;
			case _T('f'):
			case _T('F'):
				_tcscpy(defaultfile,(_TCHAR*)&(argv[argc][2]));
				break;
			}
		}
		else 
			viewindex=_ttoi(argv[argc]);
	}

	if (viewhelp==1) {
		fprintf(appout,"%s\n",APPINFO);
		fprintf(appout,"%s\n",APPHELP);
		return 0;
	}


	_tgetcwd(lastdir,_MAX_PATH);

	if (loadpre(&status,inifile)==0) {
		status.workdir[0] =NIL;// _tcscpy(status.workdir,lastdir);
		status.viewer[0]=NIL;//_tcscpy(status.viewer,pageviewer);
		status.filename[0] = NIL;
	}

#ifndef _DEBUG
	_ftprintf(appout,_T("CURLINE:%d\n"),__LINE__);	
	_ftprintf(appout,_T("Viewer:%s\n"),status.viewer);
	_ftprintf(appout,_T("Workdir:%s\n"),status.workdir);
	_ftprintf(appout,_T("Filename:%s\n"),status.filename);
#endif

	if (status.workdir[0]==NIL)
		_tcscpy(status.workdir ,lastdir);
	if (pageviewer[0]!=NIL)
		_tcscpy(status.viewer,pageviewer);
	else if (status.viewer[0]==NIL) 
		_tcscpy(status.viewer,DEFAULTVIEWER);
	
	if (viewini==1) {
		_ftprintf(appout,_T("DefaultViewer:%s\nWorkDir:%s\nLastFile:%s"),status.viewer,status.workdir,status.filename );
		savecur(&status,inifile);
		return 0; 
	}

	if (reload==1) {
		int  c=0;
		fprintf(appout,"原先目录是:");
		_ftprintf(appout,_T("%s\n"), status.workdir);
		fprintf(appout,"当前目录是:");
		_ftprintf(appout,_T("%s\n"),lastdir);
		fprintf(appout,"确定要将当前目录设定为工作目录?(Y/N)");
		//fflush(stdin);
		c=_fgettchar();
		if (c==_T('Y') || c==_T('y')) {
			_tcscpy(status.workdir,lastdir);
			status.filename[0] = NIL;
			savecur(&status,inifile);
			}
	}

	//_chdir(status.workdir);
	//DEBUGStr(status.workdir)
	
	if (defaultfile[0]!=NIL) _tcscpy(status.filename ,defaultfile);
	if (status.filename[0]==NIL) viewnext=1;

/*	DEBUGInt(viewnext);
	DEBUGInt(viewlist);
	DEBUGInt(viewrnd);
	DEBUGInt(viewindex);*/

	if ((viewlist)||(viewrnd)||(viewindex)||(viewnext)) {
		searchfor=buildpath(searchfor,status.workdir,WILDNAME);
#ifdef _DEBUG
		//DEBUGStr(status.workdir);
		_ftprintf(appout,_T("%s\n"),status.workdir);
		_ftprintf(appout,_T("%s\n"),WILDNAME);
		_ftprintf(appout,_T("%s\n"),searchfor);
#endif
		fcount=countfile(searchfor,_A_ARCH);
		if (fcount<=0) return 0;
		filelist=(_TCHAR **)malloc(sizeof(_TCHAR*)*(fcount+1));
		fcount=findfile(searchfor,_A_ARCH,filelist,fcount);
		qsort((void*)filelist,(size_t) fcount,sizeof(_TCHAR*),(int(_cdecl*)(const void*,const void*))&wcscmp);
		
		//viewlist
		if (viewlist==1) {
			int  i;
			for (i=0;i<fcount;i++){
					_ftprintf(appout,_T("[%4d]:%s\n"),i+1,filelist[i]);
			}
			return(0);
		}
		else if (viewindex>0) {     //viewindex
			next=viewindex-1;
		}
		else if (viewrnd==1) {  //viewrnd
			srand( (unsigned)time( NULL ) );
			next= rand( ) % fcount;
		}
		else if (status.filename[0]==NIL)  {
			next=0;
		}
		else if (viewnext==1) {
			next=getindex(status.filename,filelist,fcount)+1;
		}
		else if (viewprev==1) {
			next=getindex(status.filename,filelist,fcount)-1;
		}
		if ((next>fcount-1) || next<0 ) next=0;
		_tcscpy(status.filename ,filelist[next]); 
	}

	/*DEBUGStr(status.viewer )
	DEBUGStr(status.workdir )
	DEBUGStr(status.filename )*/

	savecur(&status,inifile);
	defaultfile=buildpath(defaultfile,status.workdir ,status.filename );
	_stprintf(cmdline,_T("%s \"%s\""),status.viewer,defaultfile);
	//printf("%s:\n",status.filename);

#ifdef _DEBUG
	_ftprintf(appout,_T("Viewer:%s\n"),status.viewer);
	_ftprintf(appout,_T("Workdir:%s\n"),status.workdir);
	_ftprintf(appout,_T("Filename:%s\n"),status.filename);
	_ftprintf(appout,_T("DefaultFile:%s\n"),defaultfile);
	_ftprintf(appout,_T("Cmdline:%s\n"),cmdline);
#endif

	system(cmdline);
	_ftprintf(appout,_T("[%s]\n"),defaultfile);
	
	fclose(appout);
	return (0);
}