Esempio n. 1
0
static char *getdir( int id )
{
	//		dirinfo命令の内容をstmpに設定する
	//
	char *p;
	char *ss;
	char fname[_MAX_PATH+1];
	p = ctx->stmp;

	switch( id ) {
	case 0:				//    カレント(現在の)ディレクトリ
		_getcwd( p, _MAX_PATH );
		break;
	case 1:				//    HSPの実行ファイルがあるディレクトリ
		GetModuleFileName( NULL,fname,_MAX_PATH );
		getpath( fname, p, 32 );
		break;
	case 2:				//    Windowsディレクトリ
		GetWindowsDirectory( p, _MAX_PATH );
		break;
	case 3:				//    Windowsのシステムディレクトリ
		GetSystemDirectory( p, _MAX_PATH );
		break;
	case 4:				//    コマンドライン文字列
		ss = GetCommandLine();
		ss = strsp_cmds( ss );
#ifdef HSPDEBUG
		ss = strsp_cmds( ss );
#endif
		sbStrCopy( &(ctx->stmp), ss );
		p = ctx->stmp;
		return p;
	case 5:				//    HSPTV素材があるディレクトリ
#if defined(HSPDEBUG)||defined(HSP3IMP)
		GetModuleFileName( NULL,fname,_MAX_PATH );
		getpath( fname, p, 32 );
		CutLastChr( p, '\\' );
		strcat( p, "\\hsptv\\" );
		return p;
#else
		*p = 0;
		return p;
#endif
		break;
	default:
		if ( id & 0x10000 ) {
			SHGetSpecialFolderPath( NULL, p, id & 0xffff, FALSE );
			break;
		}
		throw HSPERR_ILLEGAL_FUNCTION;
	}

	//		最後の'\\'を取り除く
	//
	CutLastChr( p, '\\' );
	return p;
}
Esempio n. 2
0
// Set
static void HspVarStr_Set( PVal *pval, PDAT *pdat, const void *in )
{
    char **pp;
    if ( pval->mode == HSPVAR_MODE_CLONE ) {
        strncpy( (char *)pdat, (char *)in, pval->size );
        return;
    }
    pp = (char **)sbGetOption( (char *)pdat );
    sbStrCopy( pp, (char *)in );
    //strcpy( GetPtr(pval), (char *)in );
}