⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hxdir.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        return FALSE;#if !defined(WIN32_PLATFORM_PSPC)    UINT nDriveType = 0;#ifdef _WIN32    nDriveType = GetDriveType(m_strPath);    if(nDriveType == DRIVE_CDROM)       return TRUE;#else    nDriveType = GetDriveType(toupper(m_strPath.GetAt(0)) - 'A');#endif    if(nDriveType == DRIVE_REMOVABLE)       return TRUE;#endif /* defined(WIN32_PLATFORM_PSPC) */    return FALSE;}/* Deletes empty directory. */BOOL CHXDirectory::DeleteDirectory(){#ifdef _WIN32    if(m_hFindFile != INVALID_HANDLE_VALUE)    {        FindClose(m_hFindFile);        m_hFindFile = INVALID_HANDLE_VALUE;    }#endif    if(RemoveDirectory(OS_STRING(m_strPath)))        return TRUE;    return FALSE;}/* Starts enumeration process. */CHXDirectory::FSOBJ CHXDirectory::FindFirst(const char* szPattern, char* szPath, UINT16 nSize){    FSOBJ RetVal = FSOBJ_NOTVALID;    CHXString strMask = m_strPath;    const char* pLastChar = HXGetPrevChar(m_strPath, (const char*)m_strPath + m_strPath.GetLength());    if(pLastChar + 1 != (const char*)m_strPath + m_strPath.GetLength() || *pLastChar != '\\')	strMask += "\\";    strMask += szPattern;#ifdef _WIN32    if(m_hFindFile != INVALID_HANDLE_VALUE)    {        FindClose(m_hFindFile);        m_hFindFile = INVALID_HANDLE_VALUE;    }    WIN32_FIND_DATA findData;    m_hFindFile =  FindFirstFile(OS_STRING(strMask), &findData);    if(m_hFindFile != INVALID_HANDLE_VALUE)    {        if(m_strPath.GetLength() + 1 + strlen(OS_STRING(findData.cFileName)) < nSize)	{	    SafeStrCpy(szPath, (const char*)m_strPath, nSize);	    pLastChar = HXGetPrevChar(szPath, szPath + strlen(szPath));	    if(pLastChar + 1 < szPath + strlen(szPath) || *pLastChar != '\\')		SafeStrCat(szPath,  "\\", nSize);            SafeStrCat(szPath,  OS_STRING(findData.cFileName), nSize);	}	if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)	    RetVal = FSOBJ_DIRECTORY;        else            RetVal = FSOBJ_FILE;    }#else    if(!_dos_findfirst(strMask, _A_SUBDIR | _A_HIDDEN, &m_FindFileInfo))    {           if(m_strPath.GetLength() + 1 + strlen(m_FindFileInfo.name) < nSize)	{	    SafeStrCpy(szPath, (const char*)m_strPath, nSize);	    if(m_strPath.GetLength() && m_strPath.GetAt(m_strPath.GetLength() - 1) != '\\')		SafeStrCat(szPath,  "\\", nSize);            SafeStrCat(szPath,  m_FindFileInfo.name, nSize);	}	if (m_FindFileInfo.attrib & _A_SUBDIR)            RetVal = FSOBJ_DIRECTORY;        else            RetVal = FSOBJ_FILE;    }#endif    while(RetVal != FSOBJ_NOTVALID &&          !IsValidFileDirName(szPath))        RetVal = FindNext(szPath, nSize);    return RetVal;}/* Continues enumeration process. */CHXDirectory::FSOBJ CHXDirectory::FindNext(char* szPath, UINT16 nSize){    FSOBJ RetVal = FSOBJ_NOTVALID;#ifdef _WIN32    if(m_hFindFile != INVALID_HANDLE_VALUE)    {        WIN32_FIND_DATA findData;        if(FindNextFile(m_hFindFile, &findData))        {            if(m_strPath.GetLength() + 1 + strlen(OS_STRING(findData.cFileName)) < nSize)	    {		SafeStrCpy(szPath, (const char*)m_strPath, nSize);		const char* pLastChar = HXGetPrevChar(szPath, szPath + strlen(szPath));		if(pLastChar + 1 < szPath + strlen(szPath) || *pLastChar != '\\')		    SafeStrCat(szPath,  "\\", nSize);		SafeStrCat(szPath,  OS_STRING(findData.cFileName), nSize);	    }	    if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)	        RetVal = FSOBJ_DIRECTORY;            else                RetVal = FSOBJ_FILE;        }    }#else    if(!_dos_findnext(&m_FindFileInfo))    {           if(m_strPath.GetLength() + 1 + strlen(m_FindFileInfo.name) < nSize)	{	    SafeStrCpy(szPath, (const char*)m_strPath, nSize);	    if(m_strPath.GetLength() && m_strPath.GetAt(m_strPath.GetLength() - 1) != '\\')		SafeStrCat(szPath,  "\\", nSize);            SafeStrCat(szPath,  m_FindFileInfo.name, nSize);	}	if (m_FindFileInfo.attrib & _A_SUBDIR)            RetVal = FSOBJ_DIRECTORY;        else            RetVal = FSOBJ_FILE;    }#endif    while(RetVal != FSOBJ_NOTVALID &&          !IsValidFileDirName(szPath))        RetVal = FindNext(szPath, nSize);    return RetVal;}BOOL CHXDirectory::IsValidFileDirName(const char* szPath){    const char* pSlash = HXReverseFindChar(szPath, '\\');    if(!pSlash)        return FALSE;    CHXString strEnding = pSlash + 1;    if(!strEnding.Compare(".") || !strEnding.Compare(".."))        return FALSE;    return TRUE;}BOOL CHXDirectory::DeleteFile(const char* szRelPath){    if(!szRelPath)        return FALSE;    CHXString strPath;    if(strlen(szRelPath) > 1 && szRelPath[1] == ':')    {        strPath = szRelPath;    }    else    {	strPath = m_strPath;	const char* pLastChar = HXGetPrevChar(m_strPath, (const char*)m_strPath + m_strPath.GetLength());	if(pLastChar + 1 < (const char*)m_strPath + m_strPath.GetLength() || *pLastChar != '\\')	    strPath += "\\";	strPath += szRelPath;    }    BOOL RetVal = FALSE;    //_chmod(strPath, S_IREAD | S_IWRITE);    DWORD attrib = GetFileAttributes(OS_STRING(strPath));     attrib &= ~FILE_ATTRIBUTE_READONLY;    SetFileAttributes(OS_STRING(strPath), attrib);     //if(!unlink(strPath) || errno != EACCES)    if (::DeleteFile(OS_STRING(strPath)))        RetVal = TRUE;    return RetVal;}/* Sets itself to current directory. */BOOL CHXDirectory::SetCurrentDir(){    BOOL bRetVal = TRUE;#if defined(WIN32_PLATFORM_PSPC)    // WinCE doesn't have a concept of a working directory.    // Assert here and look at the calling code to see    // if we really need to worry about this    HX_ASSERT(!"CHXDirectory::SetCurrentDir()");#else /* defined(WIN32_PLATFORM_PSPC) */    if(!getcwd(m_strPath.GetBuffer(_MAX_PATH + 1), _MAX_PATH))	bRetVal = FALSE;    m_strPath.ReleaseBuffer();#endif /* defined(WIN32_PLATFORM_PSPC) */    return bRetVal;}/* Makes itself a current directory. */BOOL CHXDirectory::MakeCurrentDir(){#ifdef _WIN16    // In win16, you have to change the current drive seperately from changing    // to the new directory, if the new directory is on a different drive than    // the current drive.    int retval = 0;    int curdrive = _getdrive();    int drive = (toupper(m_strPath.GetAt(0)) - 'A') + 1;    if (curdrive != drive)	if ((retval = _chdrive(drive)) != 0)	    return FALSE;#endif#if defined(WIN32_PLATFORM_PSPC)    // WinCE does not have the concept of a current directory.    // Assert here and look at the calling code to see if    // we need to worry about it    HX_ASSERT(!"CHXDirectory::MakeCurrentDir()");#else /* defined(WIN32_PLATFORM_PSPC) */    if(!chdir(m_strPath))        return TRUE;#endif /* defined(WIN32_PLATFORM_PSPC) */    return FALSE;}UINT32 CHXDirectory::Rename(const char* szOldName, const char* szNewName){    if ((szOldName == NULL) || (szNewName == NULL))    {        HX_ASSERT(FALSE);	return HXR_FAIL;    }    UINT32 theError = HXR_FAIL;    CHXDirectory DestinationDir;    DestinationDir.SetPath( szNewName );    if ( DestinationDir.IsValid() )    {        //Destination directory exist.	if(!::RemoveDirectory(OS_STRING(szNewName)) )	{	    //Failed to delete destination directory.	    //Check if read only attribute is set.	    DWORD attrib = GetFileAttributes(OS_STRING(szNewName));	    if ( attrib & FILE_ATTRIBUTE_READONLY )	    {		//Directory is read only.		//Remove read only attribute.		attrib &= ~FILE_ATTRIBUTE_READONLY;		SetFileAttributes(OS_STRING(szNewName), attrib); 				if(!::RemoveDirectory(OS_STRING(szNewName)))		{		    //Still failed to delete.		    //So put the read only attribute back.    		    attrib |= FILE_ATTRIBUTE_READONLY;		    SetFileAttributes(OS_STRING(szNewName), attrib); 		    return HXR_FAIL;		}	    }	    else	    {			//Failed to delete & directory is not readonly.		return HXR_FAIL;	    }	}    }    if(MoveFile(OS_STRING(szOldName), OS_STRING(szNewName)))	theError = HXR_OK;    return theError;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -