152 lines
2.5 KiB
C++
Executable File
152 lines
2.5 KiB
C++
Executable File
#include "All.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "IO.h"
|
|
#include "CharacterHelper.h"
|
|
#include <sys/sysctl.h>
|
|
|
|
/*
|
|
#ifndef __GNUC_IA32__
|
|
|
|
extern "C" BOOL GetMMXAvailable(void)
|
|
{
|
|
#ifdef ENABLE_ASSEMBLY
|
|
|
|
unsigned long nRegisterEDX;
|
|
|
|
try
|
|
{
|
|
__asm mov eax, 1
|
|
__asm CPUID
|
|
__asm mov nRegisterEDX, edx
|
|
}
|
|
catch(...)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
if (nRegisterEDX & 0x800000)
|
|
RETURN_ON_EXCEPTION(__asm emms, FALSE)
|
|
else
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
|
|
#else
|
|
return FALSE;
|
|
#endif
|
|
}
|
|
|
|
#endif // #ifndef __GNUC_IA32__
|
|
*/
|
|
|
|
int IsAltiVecAvailable( void )
|
|
{
|
|
|
|
int selectors[2] = { CTL_HW, HW_VECTORUNIT };
|
|
int hasVectorUnit = 0;
|
|
size_t length = sizeof(hasVectorUnit);
|
|
int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0);
|
|
|
|
if( 0 == error ) return hasVectorUnit != 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
int ReadSafe(CIO * pIO, void * pBuffer, int nBytes)
|
|
{
|
|
unsigned int nBytesRead = 0;
|
|
int nRetVal = pIO->Read(pBuffer, nBytes, &nBytesRead);
|
|
if (nRetVal == ERROR_SUCCESS)
|
|
{
|
|
if (nBytes != int(nBytesRead))
|
|
nRetVal = ERROR_IO_READ;
|
|
}
|
|
|
|
return nRetVal;
|
|
}
|
|
|
|
int WriteSafe(CIO * pIO, void * pBuffer, int nBytes)
|
|
{
|
|
unsigned int nBytesWritten = 0;
|
|
int nRetVal = pIO->Write(pBuffer, nBytes, &nBytesWritten);
|
|
if (nRetVal == ERROR_SUCCESS)
|
|
{
|
|
if (nBytes != int(nBytesWritten))
|
|
nRetVal = ERROR_IO_WRITE;
|
|
}
|
|
|
|
return nRetVal;
|
|
}
|
|
|
|
/*
|
|
BOOL FileExists(wchar_t * pFilename)
|
|
{
|
|
if (0 == wcscmp(pFilename, L"-") || 0 == wcscmp(pFilename, L"/dev/stdin"))
|
|
return TRUE;
|
|
|
|
#ifdef _WIN32
|
|
|
|
BOOL bFound = FALSE;
|
|
|
|
WIN32_FIND_DATA WFD;
|
|
HANDLE hFind = FindFirstFile(pFilename, &WFD);
|
|
if (hFind != INVALID_HANDLE_VALUE)
|
|
{
|
|
bFound = TRUE;
|
|
CloseHandle(hFind);
|
|
}
|
|
|
|
return bFound;
|
|
|
|
#else
|
|
|
|
CSmartPtr<char> spANSI(GetANSIFromUTF16(pFilename), TRUE);
|
|
|
|
struct stat b;
|
|
|
|
if (stat(spANSI, &b) != 0)
|
|
return FALSE;
|
|
|
|
if (!S_ISREG(b.st_mode))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
|
|
#endif
|
|
}
|
|
*/
|
|
|
|
BOOL FileExists(const char * pFilename)
|
|
{
|
|
if (0 == strcmp(pFilename, "-") || 0 == strcmp(pFilename, "/dev/stdin"))
|
|
return TRUE;
|
|
|
|
#ifdef _WIN32
|
|
|
|
BOOL bFound = FALSE;
|
|
|
|
WIN32_FIND_DATA WFD;
|
|
HANDLE hFind = FindFirstFile(pFilename, &WFD);
|
|
if (hFind != INVALID_HANDLE_VALUE)
|
|
{
|
|
bFound = TRUE;
|
|
CloseHandle(hFind);
|
|
}
|
|
|
|
return bFound;
|
|
|
|
#else
|
|
|
|
struct stat b;
|
|
|
|
if (stat(pFilename, &b) != 0)
|
|
return FALSE;
|
|
|
|
if (!S_ISREG(b.st_mode))
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
|
|
#endif
|
|
} |