Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
143 lines (114 sloc) 3.33 KB
/*
* XBMC Media Center
* Copyright (c) 2002 Frodo
* Portions Copyright (c) by the authors of ffmpeg and xvid
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "linux/PlatformDefs.h"
#include <iostream>
#include <stdio.h>
#include "utils/StdString.h"
#include "File.h"
using namespace XFILE;
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#ifndef __GNUC__
#pragma warning (disable:4244)
#endif
//*********************************************************************************************
CFile::CFile()
{
m_pFile = NULL;
m_flags = 0;
m_iLength = 0;
}
//*********************************************************************************************
CFile::~CFile()
{
if (m_pFile)
fclose(m_pFile);
}
//*********************************************************************************************
bool CFile::Open(const CStdString& strFileName, unsigned int flags)
{
m_flags = flags;
m_pFile = fopen64(strFileName.c_str(), "r");
if(!m_pFile)
return false;
fseeko64(m_pFile, 0, SEEK_END);
m_iLength = ftello64(m_pFile);
fseeko64(m_pFile, 0, SEEK_SET);
return true;
}
bool CFile::OpenForWrite(const CStdString& strFileName, bool bOverWrite)
{
return false;
}
bool CFile::Exists(const CStdString& strFileName, bool bUseCache /* = true */)
{
FILE *fp = fopen64(strFileName.c_str(), "r");
if(!fp)
return false;
fclose(fp);
return true;
}
unsigned int CFile::Read(void *lpBuf, int64_t uiBufSize)
{
unsigned int ret = 0;
if(!m_pFile)
return 0;
ret = fread(lpBuf, 1, uiBufSize, m_pFile);
return ret;
}
//*********************************************************************************************
void CFile::Close()
{
if(m_pFile)
fclose(m_pFile);
m_pFile = NULL;
}
//*********************************************************************************************
int64_t CFile::Seek(int64_t iFilePosition, int iWhence)
{
if (!m_pFile)
return -1;
return fseeko64(m_pFile, iFilePosition, iWhence);;
}
//*********************************************************************************************
int64_t CFile::GetLength()
{
return m_iLength;
}
//*********************************************************************************************
int64_t CFile::GetPosition()
{
if (!m_pFile)
return -1;
return ftello64(m_pFile);
}
//*********************************************************************************************
int CFile::Write(const void* lpBuf, int64_t uiBufSize)
{
return -1;
}
int CFile::IoControl(EIoControl request, void* param)
{
if(request == IOCTRL_SEEK_POSSIBLE)
return 1;
return -1;
}
Something went wrong with that request. Please try again.