tools/installer/InstallerUtil.cpp
changeset 1722 2c16f160f5dd
parent 1651 077571ea8942
child 2289 44045ead61cd
     1.1 --- a/tools/installer/InstallerUtil.cpp	Sun Nov 25 02:45:12 2007 +0000
     1.2 +++ b/tools/installer/InstallerUtil.cpp	Sun Nov 25 04:46:18 2007 +0000
     1.3 @@ -175,13 +175,13 @@
     1.4  {
     1.5  	size_t len = _tcslen(path);
     1.6  
     1.7 -	for (size_t i = 0;
     1.8 -		 i >= 0 && i < len - 1;
     1.9 +	for (size_t i = len - 1;
    1.10 +		 i >= 0 && i < len;
    1.11  		 i--)
    1.12  	{
    1.13  		if (path[i] == '\\' || path[i] == '/')
    1.14  		{
    1.15 -			return &path[i];
    1.16 +			return &path[i+1];
    1.17  		}
    1.18  	}
    1.19  
    1.20 @@ -223,9 +223,90 @@
    1.21  
    1.22  	if (val == 0 || val == IDYES)
    1.23  	{
    1.24 +		UpdateGlobalPosition(hWnd);
    1.25  		EndDialog(hWnd, NULL);
    1.26  		return (INT_PTR)TRUE;
    1.27  	}
    1.28  	
    1.29  	return (INT_PTR)FALSE;
    1.30  }
    1.31 +
    1.32 +size_t UTIL_GetFileSize(const TCHAR *file_path)
    1.33 +{
    1.34 +	HANDLE hFile;
    1.35 +
    1.36 +	if ((hFile = CreateFile(file_path, 
    1.37 +		GENERIC_READ,
    1.38 +		FILE_SHARE_READ,
    1.39 +		NULL,
    1.40 +		OPEN_EXISTING,
    1.41 +		FILE_ATTRIBUTE_NORMAL,
    1.42 +		NULL)) 
    1.43 +		!= INVALID_HANDLE_VALUE)
    1.44 +	{
    1.45 +		LARGE_INTEGER size;
    1.46 +
    1.47 +		if (GetFileSizeEx(hFile, &size))
    1.48 +		{
    1.49 +			CloseHandle(hFile);
    1.50 +			return (size_t)size.QuadPart;
    1.51 +		}
    1.52 +
    1.53 +		CloseHandle(hFile);
    1.54 +	}
    1.55 +
    1.56 +	return 0;
    1.57 +}
    1.58 +
    1.59 +#if 0
    1.60 +size_t UTIL_GetFolderSize(const TCHAR *basepath)
    1.61 +{
    1.62 +	HANDLE hFind;
    1.63 +	WIN32_FIND_DATA fd;
    1.64 +	TCHAR search_path[MAX_PATH];
    1.65 +	size_t total = 0;
    1.66 +
    1.67 +	UTIL_PathFormat(search_path,
    1.68 +		sizeof(search_path) / sizeof(TCHAR),
    1.69 +		_T("%s\\*.*"),
    1.70 +		basepath);
    1.71 +
    1.72 +	if ((hFind = FindFirstFile(search_path, &fd)) == INVALID_HANDLE_VALUE)
    1.73 +	{
    1.74 +		return 0;
    1.75 +	}
    1.76 +
    1.77 +	do
    1.78 +	{
    1.79 +		if (tstrcasecmp(fd.cFileName, _T(".")) == 0
    1.80 +			|| tstrcasecmp(fd.cFileName, _T("..")) == 0)
    1.81 +		{
    1.82 +			continue;
    1.83 +		}
    1.84 +
    1.85 +		if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
    1.86 +		{
    1.87 +			UTIL_PathFormat(search_path,
    1.88 +				sizeof(search_path) / sizeof(TCHAR),
    1.89 +				_T("%s\\%s"),
    1.90 +				basepath,
    1.91 +				fd.cFileName);
    1.92 +			total += UTIL_GetFolderSize(search_path);
    1.93 +		}
    1.94 +		else
    1.95 +		{
    1.96 +			UTIL_PathFormat(search_path,
    1.97 +				sizeof(search_path) / sizeof(TCHAR),
    1.98 +				_T("%s\\%s"),
    1.99 +				basepath,
   1.100 +				fd.cFileName);
   1.101 +
   1.102 +			total += UTIL_GetFileSize(search_path);
   1.103 +		}
   1.104 +	} while (FindNextFile(hFind, &fd));
   1.105 +
   1.106 +	FindClose(hFind);
   1.107 +
   1.108 +	return total;
   1.109 +}
   1.110 +#endif