/*<Header>==============================================================
*
*	STRINGS OPERATION / "EIN_ST02.C"
*
*		[ EIN(tm) project : 文字列操作補助関数群 ]
*
*	COPYRIGHT  Nam & みんたっ♪  1994, All rights reserved.
*
*-----------------------------------------------------------------------
*	V1.0L01α	94.07.16/Nam	プロトタイプ(みんたっ♪さんの関数を利用)
*</Header>==============================================================*/
#include	<stdio.h>
#include 	<stdlib.h>
#include 	<string.h>
#include	<snd.h>
#include	<winb.h>
#include	<te.h>
#include	<fntb.h>
#include	<gui.h>

#define	EIN_FSTR
#include	"..\eintm.h"

#define __IsKanji1(x)	(((x)>0x080 && (x)<0x0A0)||((x)>0xDF && (x)<0x0FD))

/*======================================================================
*	static int __isKanjiStr( char *str, char *pos )
*
*	【概  要】	漢字の先頭バイトか否か判別
*
*	【機  能】	設定された文字列(*str)内の指定位置の文字(*pos)が
*				漢字の先頭バイトかどうか判別する
*
*	【入  力】	*str;	: 対象文字列ポインタ
*				*pos;	: 対象文字ポインタ
*
*	【出  力】
*
*	【関数値】	==1		: 漢字の先頭バイト
*				==0		: 漢字の先頭バイトではない
*
*	【注  意】	漢字の2バイト目の場合には'0'を返すので注意すること
*
*	【参  照】	
*
*-----------------------------------------------------------------------
*	0.00	1991.01.27/Minta(GB_isKanjiStrとしてプロトタイピング)
*	V11L10	1994.07.16/Nam
*=====================================================================*/
static int __isKanjiStr( char *str, char *pos )
{
	register char	flag = 1;

	if	((pos == NULL) || (str == NULL) || (str > pos)) {
		return 0;
	}
	if (__IsKanji1(*pos)){					/* 漢字の先頭バイトかも?	*/
		for (pos--; str <= pos; pos--){		/* 文字列先頭方向へ走査 */
			if(!__IsKanji1(*pos)){			/* 漢字の先頭バイトではない */
				return flag;
			} else {
				flag ^= 1;
			}
		}
		return flag;
	} else {							/* 漢字の先頭バイトではない */
		return 0;
	}
}


/*<Func>================================================================
*	char	*EIN_strrchr( char *str, char code )
*
*	【概  要】	strrchrの漢字対応版
*
*	【機  能】	strchr()と同じ動作を,文字列の終わりから行う(SJIS対応)
*
*	【入  力】	*str;	: 検索文字列
*				code;	: 検索文字コード
*
*	【出  力】*dst		:
*
*	【関数値】	!=NULL		正常終了(検索文字アドレス)
*				==NULL			異常終了(検索文字が無かった)
*
*	【注  意】	
*
*	【参  照】	
*
*-----------------------------------------------------------------------
*	0.00	1991.01.27/Minta(GB_strchrRevとしてプロトタイピング)
*	V11L10	1994.07.16/Nam
*</Func>==============================================================*/
char	*EIN_strrchr( char *str, char code )
{
	char	*wp;							/* 検索対象ポインタ	*/

	if (str == NULL) {
		return NULL;
	}
	for (wp = str + strlen(str) - 1; wp >= str; wp--) {
		if (*wp == code) {
			if (wp > str) {
				if (__isKanjiStr(str, wp-1)) {
					wp--;
					continue;
				}
			}
			return wp;
		}
	}
	return NULL;
}

