/*	
 *	clipres.c
 *
 *	pexファイル添付リソースの機能を実装します。
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2006 Naoyuki Sawa
 *
 *	* Sun Dec 10 21:40:13 JST 2006 Naoyuki Sawa
 *	- 新規作成。
 *	  resource_address()はfile_defrag()を呼び出すため、clippce.cに定義すると常にclipdfrg.oがリンクされ、無駄です。
 *	  resource_address()を使わないアプリケーションにはclipdfrg.oがリンクされないよう、単独モジュールに分けました。
 *	* Sun Jan 14 18:21:16 JST 2007 Naoyuki Sawa
 *	- モジュールの説明が誤っていたので修正しました。
 *	  プログラムには変更ありません。
 */
#include "clip.h"

const void*
resource_address(const char* fname)
{
	const pffsFileHEADER* pfh;
	int ofs_res;

	/* フラッシュメモリ上のpexファイル先頭アドレスを取得します。 */
	pfh = file_defrag(fname, NULL); /* 必要に応じてデフラグを行います */
	if(pfh->mark != 'X') DIE(); /* 実行形式でない */

	/* プログラム本体(4バイト単位)の直後に、リソースが付加されています。
	 * 付加を行う仕組みについては、test.pce/Makefileを参照してください。
	 */
	ofs_res = (pfh->ofs_data + pfh->length + 3) & ~3;
	return (unsigned char*)pfh + ofs_res;
}
