1#include "All.h"
2#include "GlobalFunctions.h"
3#include "IO.h"
4
5#include "CharacterHelper.h"
6
7#if 0
8BOOL GetMMXAvailable ( void )	// ������
9{
10	return FALSE;
11}
12#endif
13
14/*
15#ifndef __GNUC_IA32__
16
17extern "C" BOOL GetMMXAvailable(void)
18{
19#ifdef ENABLE_ASSEMBLY
20
21    unsigned long nRegisterEDX;
22
23    try
24    {
25        __asm mov eax, 1
26        __asm CPUID
27        __asm mov nRegisterEDX, edx
28       }
29    catch(...)
30    {
31        return FALSE;
32    }
33
34    if (nRegisterEDX & 0x800000)
35        RETURN_ON_EXCEPTION(__asm emms, FALSE)
36    else
37        return FALSE;
38
39    return TRUE;
40
41#else
42    return FALSE;
43#endif
44}
45
46#endif // #ifndef __GNUC_IA32__
47*/
48
49int ReadSafe(CIO * pIO, void * pBuffer, int nBytes)
50{
51    unsigned int nBytesRead = 0;
52    int nRetVal = pIO->Read(pBuffer, nBytes, &nBytesRead);
53    if (nRetVal == ERROR_SUCCESS)
54    {
55        if (nBytes != int(nBytesRead))
56            nRetVal = ERROR_IO_READ;
57    }
58
59    return nRetVal;
60}
61
62int WriteSafe(CIO * pIO, void * pBuffer, int nBytes)
63{
64    unsigned int nBytesWritten = 0;
65    int nRetVal = pIO->Write(pBuffer, nBytes, &nBytesWritten);
66    if (nRetVal == ERROR_SUCCESS)
67    {
68        if (nBytes != int(nBytesWritten))
69            nRetVal = ERROR_IO_WRITE;
70    }
71
72    return nRetVal;
73}
74
75BOOL FileExists(char* pFilename)
76{
77    if (0 == wcscmp(pFilename, "-")  ||  0 == wcscmp(pFilename, "/dev/stdin"))
78        return TRUE;
79
80#ifdef _WIN32
81
82    BOOL bFound = FALSE;
83
84    WIN32_FIND_DATA WFD;
85    HANDLE hFind = FindFirstFile(pFilename, &WFD);
86    if (hFind != INVALID_HANDLE_VALUE)
87    {
88        bFound = TRUE;
89        CloseHandle(hFind);
90    }
91
92    return bFound;
93
94#else
95
96    CSmartPtr<char> spANSI(GetANSIFromUTF16(pFilename), TRUE);
97
98    struct stat b;
99
100    if (stat(spANSI, &b) != 0)
101        return FALSE;
102
103    if (!S_ISREG(b.st_mode))
104        return FALSE;
105
106    return TRUE;
107
108#endif
109}
110