bool CFileSystemWin32::GetSystemFolderPath(ESystemFolder Code, nString& OutPath)
{
    char pRawPath[N_MAXPATH];
	if (Code == SF_TEMP)
	{
		if (!GetTempPath(sizeof(pRawPath), pRawPath)) FAIL;
		OutPath = pRawPath;
		OutPath.ConvertBackslashes();
		OK;
	}
	else if (Code == SF_HOME || Code == SF_BIN)
	{
		if (!GetModuleFileName(NULL, pRawPath, sizeof(pRawPath))) FAIL;
		nString PathToExe(pRawPath);
		PathToExe.ConvertBackslashes();
		OutPath = PathToExe.ExtractDirName();

		if (Code == SF_HOME)
		{
			nString LastDir = PathToExe.ExtractLastDirName();
			if (!n_stricmp(LastDir.Get(), "win32") || !n_stricmp(LastDir.Get(), "win32d"))
			{
				// Normal home:bin/win32 directory structure, strip bin/win32
				OutPath.StripTrailingSlash();
				OutPath = OutPath.ExtractDirName();
				OutPath.StripTrailingSlash();
				OutPath = OutPath.ExtractDirName();
				OutPath.StripTrailingSlash();
			}
		}

		OK;
	}
	else
	{
		int CSIDL;
		switch (Code)
		{
			case SF_USER:		CSIDL = CSIDL_PERSONAL | CSIDL_FLAG_CREATE; break;
			case SF_APP_DATA:	CSIDL = CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE; break;
			case SF_PROGRAMS:	CSIDL = CSIDL_PROGRAM_FILES; break;
			default:			FAIL;
		}

		if (FAILED(SHGetFolderPath(0, CSIDL, NULL, 0, pRawPath))) FAIL;
		OutPath = pRawPath;
		OutPath.ConvertBackslashes();
	}

	OK;
}
BOOL SetSliderIni( LPCTSTR lpszString, const int iSlider )
{
	if( iSlider <= 0 || iSlider > 99 || lstrlen( lpszString ) > 1000 ) return FALSE;

	WriteDebugLog( TEXT( "SetSliderIni" ) );
	WriteDebugLog( lpszString );


	TCHAR lpszExeName[ MAX_PATH * 2 ] = _T( "" );
/* - 1.1b7
	int len = lstrlen( lpszTarget );
	int start = -1;
	int end = -1;
	for( int i = len - 1; i >= 5; i-- )
	{
		if(
			lpszTarget[ i ] == TEXT( ' ' ) &&
			( lpszTarget[ i - 1 ] == TEXT( 'e' ) || lpszTarget[ i - 1 ] == TEXT( 'E' ) ) &&
			( lpszTarget[ i - 2 ] == TEXT( 'x' ) || lpszTarget[ i - 2 ] == TEXT( 'X' ) ) &&
			( lpszTarget[ i - 3 ] == TEXT( 'e' ) || lpszTarget[ i - 3 ] == TEXT( 'E' ) ) &&
			lpszTarget[ i - 4 ] == TEXT( '.' )
		)
		{
			end = i;
			break;
		}
	}

	for( ; i >=0; i-- )
	{
		if( lpszTarget[ i ] == TEXT( '\\' ) )
		{
			start = i + 1;
			break;
		}
	}

	if( start == -1 ) start = 0;

	if( end == -1 || end - start <= 0 )
	{
		TCHAR dbg[1000];
		wsprintf( dbg, TEXT("DEBUG: %s %d %d %d"), lpszTarget, start, end, end-start );
		WriteDebugLog( dbg ) ;

		return FALSE;
	}



	lstrcpy( lpszExeName, &lpszTarget[ start ] );
	lpszExeName[ end - start ] = TEXT( '\0' );
*/
// +1.1b7
	PathToExe( lpszString, lpszExeName, MAX_PATH * 2 );


#if !defined( _UNICODE )
	if( lstrlen( lpszExeName ) >= 19 )
	{
		lpszExeName[ 15 ] = '\0';
		PathToExeEx( lpszExeName, MAX_PATH * 2 );
	}
#endif


	TCHAR lpszExeNameLower[ MAX_PATH * 2 ] = _TEXT( "" );
	int len = lstrlen( lpszExeName );
	for( int i = 0; i < len; i++ )
	{
		TCHAR c = lpszExeName[ i ];
		if( _istascii( c ) && _istupper( c ) )
		{
			lpszExeNameLower[ i ] = (TCHAR) _totlower( c );
		}
		else
		{
			lpszExeNameLower[ i ] = c;
		}
	}
	//lpszExeNameLower[ i ] = TEXT( '\0' );



	TCHAR lpszPath[ MAX_PATH * 2 ];
	GetIniPath( lpszPath );

	TCHAR tmpstr[ 100 ];
	wsprintf( tmpstr, TEXT( "%d" ), iSlider );


	WritePrivateProfileString(
		TEXT( "Slider" ), 
		lpszExeNameLower,
		tmpstr,
		lpszPath
	);

	// to flushes the cache
	WritePrivateProfileString(
		NULL,
		NULL,
		NULL,
		lpszPath
	);

	return TRUE;
}
int GetArgument( LPCTSTR lpszCmdLine, int iBufferSize, LPTSTR lpszMyPath,
				LPTSTR lpszTargetLongPath, LPTSTR lpszTargetLongExe )
{
	if( iBufferSize > MAX_PATH * 2 ) iBufferSize = MAX_PATH * 2;

	TCHAR lpszTargetPath[ MAX_PATH * 2 ] = _T( "" );

	TCHAR p[ 1024 ];
	lstrcpy( p, lpszCmdLine );
	int s = 0;
	while( p[ s ] == TEXT( ' ' ) )
	{
		s++;
	}

	TCHAR * p1;
	TCHAR * p2;
	if( p[ s ] == TEXT( '\"' ) )
	{
		if( lstrlen( &p[ s + 1 ] ) >= iBufferSize ) return IGNORE_ARGV;
		else lstrcpy( lpszMyPath, &p[ s + 1 ] );

		p1 = _tcschr( lpszMyPath, TEXT( '\"' ) );
		
		if( !p1 ) return IGNORE_ARGV;
		else p1[ 0 ] = TEXT( '\0' );

		if( p1[ 1 ] != TEXT( ' ' ) ) return IGNORE_ARGV;
		else p2 = &p1[ 2 ];

	}
	else
	{
		if( lstrlen( &p[ s ] ) >= iBufferSize ) return IGNORE_ARGV;
		else lstrcpy( lpszMyPath, &p[ s ] );
		p1 = _tcschr( lpszMyPath, TEXT( ' ' ) );
		if( !p1 ) return IGNORE_ARGV;
		else p1[ 0 ] = TEXT( '\0' );
		p2 = &p1[ 1 ];
	}

	WriteDebugLog( lpszMyPath );

	s = 0;
	while( p2[ s ] == TEXT( ' ' ) )
	{
		s++;
	}

	if( p2[ s ] == TEXT( '\"' ) )
	{
		lstrcpy( lpszTargetPath, &p2[ s + 1 ] );
		p1 = _tcschr( lpszTargetPath, TEXT( '\"' ) );
		
		if( !p1 ) return IGNORE_ARGV;
		else p1[ 0 ] = TEXT( '\0' );
		if( p1[ 1 ] == TEXT( ' ' ) )
		{
			p2 = &p1[ 2 ];
		}
		else
		{
			p2 = p1; // TEXT( '\0' )
		}
	}
	else
	{
		lstrcpy( lpszTargetPath, &p2[ s ] );
		p1 = _tcschr( lpszTargetPath, TEXT( ' ' ) );
		if( p1 )
		{
			p1[ 0 ] = TEXT( '\0' );
			p2 = &p1[ 1 ];
		}
		else
		{
			p2 = p1; // TEXT( '\0' )
		}
	}

	int len = lstrlen( lpszTargetPath );
	if( len < 5 ) return IGNORE_ARGV;

//	if( lstrcmpi( &lpszTargetPath[ len - 4 ], TEXT( ".exe" ) ) != 0 ) return IGNORE_ARGV;

	WriteDebugLog( lpszTargetPath );

	DWORD dwResult = 
		GetLongPathName( lpszTargetPath, lpszTargetLongPath, (DWORD) iBufferSize );
	if( dwResult == 0UL || dwResult > (DWORD) iBufferSize )
	{
		lstrcpy( lpszTargetLongPath, lpszTargetPath );
	}

	WriteDebugLog( lpszTargetLongPath );

	PathToExe( lpszTargetLongPath, lpszTargetLongExe, iBufferSize );

	WriteDebugLog( lpszTargetLongExe );

#if !defined( _UNICODE )
	lstrcpy( lpszTargetLongPath, lpszTargetLongExe );
#endif

	int iSlider = _ttoi( p2 );

	
	if( iSlider < 0 || iSlider > 99 )
	{
		iSlider = 0;
	}


	WriteDebugLog( p2 );


	return iSlider;
}