/* （日本語）文字列内の１６進２桁コード指定を展開する */
/* 新型 ctrlstr & jctrlstr */

#include "defines.h"

int ctrlstr2(unchar *str,int mode)
{
unint i=0,j=0,c,cc;
	do {
		c=str[i++];
		if (mode) { /* 日本語対応 */
			if (check_kanji1(c)) { /* 漢字の時 */
				str[j++]=c;
				c=str[i++];
				goto CTRL1;
			}
		}
		if (c=='\\'||c=='$') {
			/* \??/$?? : ??=１６進２桁 */
			/* \;?/$;? :  ?=１文字 */
			/* \\ = \ */
			/* $$ = $ */
			/* ??が１６進２桁として異常な時は変換なし */
			if (str[i]==c) i++; /* \\=\ , $$=$ */
			else {
				cc=hex(&str[i]);
				if (cc>=0) { /* 正常変換終了 */
					c=cc;
					i+=2;
				} /* １６進２桁でない時は変換なし */
			}
 		}
	    CTRL1:;
		str[j++]=c;
	} while (c!=0);
	return(j-1); /* 展開後の文字列長さ。必ず同じか短くなる:-1 for skip EOS */
}

#if 0
main(int argc,unchar *argv[])
{
unchar line[128];
	if (argc<2) exit(1);
	strcpy(line,argv[1]);
	printf2("%s\n",line);
	ctrlstr2(line,1);
	printf2("%s\n",line);
}
#endif
