Beispiel #1
0
int CStdLibFileIO::Open(const wchar_t * pName, BOOL bOpenReadOnly)
{
    Close();

    m_bReadOnly = FALSE;

    if (0 == wcscmp(pName, _T("-")) || 0 == wcscmp(pName, _T("/dev/stdin")))
    {
        m_pFile = SETBINARY_IN(stdin);
        m_bReadOnly = TRUE;                                                     // ReadOnly
    }
    else if (0 == wcscmp(pName, _T("/dev/stdout")))
    {
        m_pFile = SETBINARY_OUT(stdout);
        m_bReadOnly = FALSE;                                                    // WriteOnly
    }
    else 
    {
        CSmartPtr<char> spFilenameUTF8((char *) CAPECharacterHelper::GetUTF8FromUTF16(pName), TRUE);
        m_pFile = fopen(spFilenameUTF8, "r+b");
        m_bReadOnly = FALSE;                                                    // Read/Write
    }

    if (!m_pFile)
        return -1;

    wcscpy(m_cFileName, pName);

    return 0;
}
Beispiel #2
0
int CStdLibFileIO::Open(const wchar_t * pName)
{
    Close();

    m_bReadOnly = false;

    char * wpName = GetANSIFromUTF16(pName);

    if (0 == wcscmp(pName, L"-") || 0 == wcscmp(pName, L"/dev/stdin")) 
    {
        m_pFile = SETBINARY_IN(stdin);
        m_bReadOnly = true;                                                     // ReadOnly
    }
    else if (0 == wcscmp (pName, L"/dev/stdout")) 
    {
        m_pFile = SETBINARY_OUT(stdout);
        m_bReadOnly = false;                                                    // WriteOnly
    }
    else 
    {
        m_pFile = fopen(wpName, "r+b");
	if (!m_pFile)
	{
	    /*
	     * if we fail to open it with Read/Write permission,
	     * we will try Read-Only.
	     */
	    m_pFile = fopen(wpName, "rb");                                      // ReadOnly
	    m_bReadOnly = true;
	}
	else
	    m_bReadOnly = false;                                                // Read/Write
    }

    if (!m_pFile)
        return -1;

    wcscpy(m_cFileName, pName);

    return 0;
}
Beispiel #3
0
int CStdLibFileIO::Open(LPCTSTR pName)
{
//	DBEXP("CStdLibFileIO::Open","");

    Close();

    m_bReadOnly = FALSE;

    if (0 == strcmp(pName, "-") || 0 == strcmp(pName, "/dev/stdin")) 
    {
        m_pFile = SETBINARY_IN(stdin);
        m_bReadOnly = TRUE;                                                     // ReadOnly
    }
    else if (0 == strcmp (pName, "/dev/stdout")) 
    {
        m_pFile = SETBINARY_OUT(stdout);
        m_bReadOnly = FALSE;                                                    // WriteOnly
    }
    else 
    {
		// SHINTA -->
		// "rb" to "rb+"; to change APE tag by CAPETag::SetField()
        m_pFile = fopen(pName, "rb+");	
        m_bReadOnly = FALSE;                                                    // Read/Write

        if ( !m_pFile ) {
	        // Try read only open
	        m_pFile = fopen(pName, "rb");
    	    m_bReadOnly = TRUE;
    	}
    	// <-- SHINTA
    }

    if (!m_pFile)
        return -1;

    strcpy(m_cFileName, pName);

    return 0;
}