/*
	tab=4,r.m=80
	=======================================================================
						esc.c		program	Y.Gotoh (1995)
	=======================================================================
*/

/* 外部ファイル読み込み */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

/* 関数定義 */
void help(void);

/* メイン */
int main(int argc , char *argv[])
{
	int i,num;
	char *str;
	
	printf("<<esc.exe>>       program : Y.Gotoh\n\n");
	
	if(argc==1)	{							/* オプション無しの時はヘルプ */
		help();
	}
	
	for( i=1 ; i<argc-1 ; i++ );				/* オプションの回数繰り返し */
	{
		printf("%d:%s\n",i,argv[i]);					/* オプションを表示 */
		
		if( *argv[i] == '/' || *argv[i] == '-' )
		{
			tolower( *(argv[i]+1) );
			
			switch( *(argv[i]+1) )
			{
				case 'h':										/* ヘルプ */
					help();
				
				case 'f':						/* ファンクションキー定義 */
					if(strlen(argv[i])<4)	{			/* 定義文が短すぎ */
						printf("define error!\n");
						break;
					}
					num=atoi(argv[i]+2);				/* 登録番号を取得 */
					if(num>10)	{					/* 10以上には登録不可 */
						printf("define error!\n");
						break;
					}
					else if(num==10)	str=argv[i]+4;	/* 10の時は取得文字 */
															/* 列をずらす */
						else	str=argv[i]+3;
					
					printf("\x1b[0;%d;\"%s\"p",num,str);			/* 定義 */
					printf("defined PF%d=\"%s\"\n",num,str);		/* 報告 */
					break;
				
				case 'c':
					if(strlen(argv[i])<3) num=7;		/* 番号無しの時は白 */
					else	num=atoi(argv[i]+2);
					printf("\x1b[%dm",num+30);					/* 色変更 */
					break;
				
				case 'e':
					str=argv[i]+2;							/* 文字列取得 */
					printf("\x1b%s",str);							/* 実行 */
					break;
				
				default:
					printf("\"%s\"の意味が分かんないの (;_;)\n",argv[i]+1);
			}
		}
		else printf("オプション以外の物があるぞ!!\n");
	}
}

void help()
{
	printf(
		"    esc (/,-)[ｵﾌﾟｼｮﾝ]\n"
		"ｵﾌﾟｼｮﾝ 一覧\n"
		"  h               ･････ ヘルプ\n"
		"  f[num][string]  ･････ [num]番のファンクションに[string]を定義\n"
		"  c[col]          ･････ テキストカラーを[col]番にする\n"
		"  e[string]       ･････ [string]を<esc>に続いて出力\n"
		);
		exit(0);
}
