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; }
// 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 ); }