diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2015-10-07 09:50:18 +0000 |
---|---|---|
committer | Carlo Landmeter <clandmeter@gmail.com> | 2015-10-07 15:43:45 +0200 |
commit | 386d01f1568ff757b6a8b31cf58d4eee7391c2c1 (patch) | |
tree | d6b8c7ff487a5436a1b0a88078534205faa45279 /main/kodi/fix-fileemu.patch | |
parent | 80a17cd4c0be6796f45304322a74f6cf84fbde32 (diff) | |
download | aports-386d01f1568ff757b6a8b31cf58d4eee7391c2c1.tar.bz2 aports-386d01f1568ff757b6a8b31cf58d4eee7391c2c1.tar.xz |
community/kodi*: move from main
Diffstat (limited to 'main/kodi/fix-fileemu.patch')
-rw-r--r-- | main/kodi/fix-fileemu.patch | 467 |
1 files changed, 0 insertions, 467 deletions
diff --git a/main/kodi/fix-fileemu.patch b/main/kodi/fix-fileemu.patch deleted file mode 100644 index 59d0045ac1..0000000000 --- a/main/kodi/fix-fileemu.patch +++ /dev/null @@ -1,467 +0,0 @@ -diff --git a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp -index ae7ccb5..d8fd7fc 100644 ---- a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp -+++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp -@@ -49,6 +49,7 @@ - #include <fcntl.h> - #include <time.h> - #include <signal.h> -+#include <paths.h> - #ifdef TARGET_POSIX - #include "PlatformDefs.h" // for __stat64 - #endif -@@ -466,13 +467,10 @@ extern "C" - EmuFileObject* o = g_emuFileWrapper.GetFileObjectByDescriptor(fd); - if (o) - { -- if(!o->used) -- return NULL; -- - int nmode = convert_fmode(mode); - if( (o->mode & nmode) != nmode) - CLog::Log(LOGWARNING, "dll_fdopen - mode 0x%x differs from fd mode 0x%x", nmode, o->mode); -- return &o->file_emu; -+ return g_emuFileWrapper.GetStreamByFileObject(o); - } - else if (!IS_STD_DESCRIPTOR(fd)) - { -@@ -535,7 +533,7 @@ extern "C" - return -1; - } - object->mode = iMode; -- return g_emuFileWrapper.GetDescriptorByStream(&object->file_emu); -+ return g_emuFileWrapper.GetDescriptorByFileObject(object); - } - delete pFile; - return -1; -@@ -1181,8 +1179,8 @@ extern "C" - { - FILE* file = NULL; - #if defined(TARGET_LINUX) && !defined(TARGET_ANDROID) -- if (strcmp(filename, MOUNTED) == 0 -- || strcmp(filename, MNTTAB) == 0) -+ if (strcmp(filename, _PATH_MOUNTED) == 0 -+ || strcmp(filename, _PATH_MNTTAB) == 0) - { - CLog::Log(LOGINFO, "%s - something opened the mount file, let's hope it knows what it's doing", __FUNCTION__); - return fopen(filename, mode); -@@ -1572,7 +1570,7 @@ extern "C" - int ret; - - ret = dll_fgetpos64(stream, &tmpPos); --#if !defined(TARGET_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+#if !defined(GLIBC) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) - *pos = (fpos_t)tmpPos; - #else - pos->__pos = (off_t)tmpPos.__pos; -@@ -1585,8 +1583,9 @@ extern "C" - CFile* pFile = g_emuFileWrapper.GetFileXbmcByStream(stream); - if (pFile != NULL) - { --#if !defined(TARGET_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -- *pos = pFile->GetPosition(); -+#if !defined(GLIBC) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+ uint64_t *ppos = (uint64_t *) pos; -+ *ppos = pFile->GetPosition(); - #else - pos->__pos = pFile->GetPosition(); - #endif -@@ -1607,8 +1606,9 @@ extern "C" - int fd = g_emuFileWrapper.GetDescriptorByStream(stream); - if (fd >= 0) - { --#if !defined(TARGET_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -- if (dll_lseeki64(fd, *pos, SEEK_SET) >= 0) -+#if !defined(GLIBC) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+ const uint64_t *ppos = (const uint64_t *) pos; -+ if (dll_lseeki64(fd, *ppos, SEEK_SET) >= 0) - #else - if (dll_lseeki64(fd, (__off64_t)pos->__pos, SEEK_SET) >= 0) - #endif -@@ -1624,7 +1624,7 @@ extern "C" - { - // it might be something else than a file, or the file is not emulated - // let the operating system handle it --#if !defined(TARGET_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+#if !defined(GLIBC) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) - return fsetpos(stream, pos); - #else - return fsetpos64(stream, pos); -@@ -1640,7 +1640,7 @@ extern "C" - if (fd >= 0) - { - fpos64_t tmpPos; --#if !defined(TARGET_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+#if !defined(GLIBC) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) - tmpPos= *pos; - #else - tmpPos.__pos = (off64_t)(pos->__pos); -diff --git a/xbmc/cores/DllLoader/exports/emu_msvcrt.h b/xbmc/cores/DllLoader/exports/emu_msvcrt.h -index ae9b1c4..3b19122 100644 ---- a/xbmc/cores/DllLoader/exports/emu_msvcrt.h -+++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.h -@@ -26,7 +26,7 @@ - #define _onexit_t void* - #endif - --#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) || !defined(GLIBC) - typedef off_t __off_t; - typedef int64_t off64_t; - typedef off64_t __off64_t; -diff --git a/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.cpp b/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.cpp -index cf8a060..9110312 100644 ---- a/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.cpp -+++ b/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.cpp -@@ -27,12 +27,7 @@ CEmuFileWrapper g_emuFileWrapper; - CEmuFileWrapper::CEmuFileWrapper() - { - // since we always use dlls we might just initialize it directly -- for (int i = 0; i < MAX_EMULATED_FILES; i++) -- { -- memset(&m_files[i], 0, sizeof(EmuFileObject)); -- m_files[i].used = false; -- m_files[i].file_emu._file = -1; -- } -+ memset(m_files, 0, sizeof(m_files)); - } - - CEmuFileWrapper::~CEmuFileWrapper() -@@ -43,22 +38,7 @@ void CEmuFileWrapper::CleanUp() - { - CSingleLock lock(m_criticalSection); - for (int i = 0; i < MAX_EMULATED_FILES; i++) -- { -- if (m_files[i].used) -- { -- m_files[i].file_xbmc->Close(); -- delete m_files[i].file_xbmc; -- -- if (m_files[i].file_lock) -- { -- delete m_files[i].file_lock; -- m_files[i].file_lock = NULL; -- } -- memset(&m_files[i], 0, sizeof(EmuFileObject)); -- m_files[i].used = false; -- m_files[i].file_emu._file = -1; -- } -- } -+ UnRegisterFileObject(&m_files[i], true); - } - - EmuFileObject* CEmuFileWrapper::RegisterFileObject(XFILE::CFile* pFile) -@@ -69,13 +49,11 @@ EmuFileObject* CEmuFileWrapper::RegisterFileObject(XFILE::CFile* pFile) - - for (int i = 0; i < MAX_EMULATED_FILES; i++) - { -- if (!m_files[i].used) -+ if (!m_files[i].file_xbmc) - { - // found a free location - object = &m_files[i]; -- object->used = true; - object->file_xbmc = pFile; -- object->file_emu._file = (i + FILE_WRAPPER_OFFSET); - object->file_lock = new CCriticalSection(); - break; - } -@@ -84,82 +62,71 @@ EmuFileObject* CEmuFileWrapper::RegisterFileObject(XFILE::CFile* pFile) - return object; - } - --void CEmuFileWrapper::UnRegisterFileObjectByDescriptor(int fd) -+void CEmuFileWrapper::UnRegisterFileObject(EmuFileObject *object, bool free_file) - { -- int i = fd - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -+ if (object && object->file_xbmc) - { -- if (m_files[i].used) -+ if (object->file_xbmc && free_file) - { -- CSingleLock lock(m_criticalSection); -- -- // we assume the emulated function alreay deleted the CFile object -- if (m_files[i].used) -- { -- if (m_files[i].file_lock) -- { -- delete m_files[i].file_lock; -- m_files[i].file_lock = NULL; -- } -- memset(&m_files[i], 0, sizeof(EmuFileObject)); -- m_files[i].used = false; -- m_files[i].file_emu._file = -1; -- } -+ object->file_xbmc->Close(); -+ delete object->file_xbmc; - } -+ if (object->file_lock) -+ { -+ delete object->file_lock; -+ } -+ -+ memset(object, 0, sizeof(*object)); - } - } - -+void CEmuFileWrapper::UnRegisterFileObjectByDescriptor(int fd) -+{ -+ CSingleLock lock(m_criticalSection); -+ UnRegisterFileObject(GetFileObjectByDescriptor(fd), false); -+} -+ - void CEmuFileWrapper::UnRegisterFileObjectByStream(FILE* stream) - { -- if (stream != NULL) -- { -- return UnRegisterFileObjectByDescriptor(stream->_file); -- } -+ CSingleLock lock(m_criticalSection); -+ UnRegisterFileObject(GetFileObjectByStream(stream), false); - } - - void CEmuFileWrapper::LockFileObjectByDescriptor(int fd) - { -- int i = fd - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -+ EmuFileObject* object = GetFileObjectByDescriptor(fd); -+ if (object && object->file_xbmc) - { -- if (m_files[i].used) -- { -- m_files[i].file_lock->lock(); -- } -+ object->file_lock->lock(); - } - } - - bool CEmuFileWrapper::TryLockFileObjectByDescriptor(int fd) --{ -- int i = fd - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -- { -- if (m_files[i].used) -- { -- return m_files[i].file_lock->try_lock(); -- } -+{ -+ EmuFileObject* object = GetFileObjectByDescriptor(fd); -+ if (object && object->file_xbmc) -+ { -+ return object->file_lock->try_lock(); - } -+ - return false; - } - - void CEmuFileWrapper::UnlockFileObjectByDescriptor(int fd) --{ -- int i = fd - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -- { -- if (m_files[i].used) -- { -- m_files[i].file_lock->unlock(); -- } -+{ -+ EmuFileObject* object = GetFileObjectByDescriptor(fd); -+ if (object && object->file_xbmc) -+ { -+ object->file_lock->unlock(); - } - } - - EmuFileObject* CEmuFileWrapper::GetFileObjectByDescriptor(int fd) - { -- int i = fd - FILE_WRAPPER_OFFSET; -+ int i = fd - 0x7000000; - if (i >= 0 && i < MAX_EMULATED_FILES) - { -- if (m_files[i].used) -+ if (m_files[i].file_xbmc) - { - return &m_files[i]; - } -@@ -167,20 +134,38 @@ EmuFileObject* CEmuFileWrapper::GetFileObjectByDescriptor(int fd) - return NULL; - } - --EmuFileObject* CEmuFileWrapper::GetFileObjectByStream(FILE* stream) -+int CEmuFileWrapper::GetDescriptorByFileObject(EmuFileObject *object) - { -- if (stream != NULL) -+ int i = object - m_files; -+ if (i >= 0 && i < MAX_EMULATED_FILES) - { -- return GetFileObjectByDescriptor(stream->_file); -+ return 0x7000000 + i; - } -+ return -1; -+} - -+EmuFileObject* CEmuFileWrapper::GetFileObjectByStream(FILE* stream) -+{ -+ EmuFileObject *object = (EmuFileObject*) stream; -+ if (object >= &m_files[0] || object < &m_files[MAX_EMULATED_FILES]) -+ { -+ if (object->file_xbmc) -+ { -+ return object; -+ } -+ } - return NULL; - } - -+FILE* CEmuFileWrapper::GetStreamByFileObject(EmuFileObject *object) -+{ -+ return (FILE*) object; -+} -+ - XFILE::CFile* CEmuFileWrapper::GetFileXbmcByDescriptor(int fd) - { - EmuFileObject* object = GetFileObjectByDescriptor(fd); -- if (object != NULL && object->used) -+ if (object != NULL) - { - return object->file_xbmc; - } -@@ -191,8 +176,8 @@ XFILE::CFile* CEmuFileWrapper::GetFileXbmcByStream(FILE* stream) - { - if (stream != NULL) - { -- EmuFileObject* object = GetFileObjectByDescriptor(stream->_file); -- if (object != NULL && object->used) -+ EmuFileObject* object = GetFileObjectByStream(stream); -+ if (object != NULL) - { - return object->file_xbmc; - } -@@ -202,42 +187,20 @@ XFILE::CFile* CEmuFileWrapper::GetFileXbmcByStream(FILE* stream) - - int CEmuFileWrapper::GetDescriptorByStream(FILE* stream) - { -- if (stream != NULL) -- { -- int i = stream->_file - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -- { -- return stream->_file; -- } -- } -- return -1; -+ return GetDescriptorByFileObject(GetFileObjectByStream(stream)); - } - - FILE* CEmuFileWrapper::GetStreamByDescriptor(int fd) - { -- EmuFileObject* object = GetFileObjectByDescriptor(fd); -- if (object != NULL && object->used) -- { -- return &object->file_emu; -- } -- return NULL; -+ return GetStreamByFileObject(GetFileObjectByDescriptor(fd)); - } - - bool CEmuFileWrapper::DescriptorIsEmulatedFile(int fd) - { -- int i = fd - FILE_WRAPPER_OFFSET; -- if (i >= 0 && i < MAX_EMULATED_FILES) -- { -- return true; -- } -- return false; -+ return GetFileObjectByDescriptor(fd) != NULL; - } - - bool CEmuFileWrapper::StreamIsEmulatedFile(FILE* stream) - { -- if (stream != NULL) -- { -- return DescriptorIsEmulatedFile(stream->_file); -- } -- return false; -+ return GetFileObjectByStream(stream) != NULL; - } -diff --git a/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.h b/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.h -index 3d79c7a..1b3e62f 100644 ---- a/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.h -+++ b/xbmc/cores/DllLoader/exports/util/EmuFileWrapper.h -@@ -27,14 +27,14 @@ - #include "system.h" - #include "threads/CriticalSection.h" - --#if defined(TARGET_POSIX) && !defined(TARGET_DARWIN) && !defined(TARGET_FREEBSD) && !defined(TARGET_ANDROID) && !defined(__UCLIBC__) --#define _file _fileno --#elif defined(__UCLIBC__) --#define _file __filedes --#endif -+//#if defined(TARGET_POSIX) && !defined(TARGET_DARWIN) && !defined(TARGET_FREEBSD) && !defined(TARGET_ANDROID) && !defined(__UCLIBC__) -+//#define _file _fileno -+//#elif defined(__UCLIBC__) -+//#define _file __filedes -+//#endif - - #define MAX_EMULATED_FILES 50 --#define FILE_WRAPPER_OFFSET 0x00000100 -+//#define FILE_WRAPPER_OFFSET 0x00000100 - - namespace XFILE - { -@@ -43,11 +43,9 @@ namespace XFILE - - typedef struct stEmuFileObject - { -- bool used; -- FILE file_emu; -- XFILE::CFile* file_xbmc; -+ XFILE::CFile* file_xbmc; - CCriticalSection *file_lock; -- int mode; -+ int mode; - } EmuFileObject; - - class CEmuFileWrapper -@@ -62,19 +60,22 @@ public: - void CleanUp(); - - EmuFileObject* RegisterFileObject(XFILE::CFile* pFile); -+ void UnRegisterFileObject(EmuFileObject*, bool free_file); - void UnRegisterFileObjectByDescriptor(int fd); - void UnRegisterFileObjectByStream(FILE* stream); - void LockFileObjectByDescriptor(int fd); - bool TryLockFileObjectByDescriptor(int fd); - void UnlockFileObjectByDescriptor(int fd); -- EmuFileObject* GetFileObjectByDescriptor(int fd); -- EmuFileObject* GetFileObjectByStream(FILE* stream); -+ EmuFileObject* GetFileObjectByDescriptor(int fd); -+ int GetDescriptorByFileObject(EmuFileObject*); -+ EmuFileObject* GetFileObjectByStream(FILE* stream); -+ FILE* GetStreamByFileObject(EmuFileObject*); - XFILE::CFile* GetFileXbmcByDescriptor(int fd); - XFILE::CFile* GetFileXbmcByStream(FILE* stream); -- static int GetDescriptorByStream(FILE* stream); -+ int GetDescriptorByStream(FILE* stream); - FILE* GetStreamByDescriptor(int fd); -- static bool DescriptorIsEmulatedFile(int fd); -- static bool StreamIsEmulatedFile(FILE* stream); -+ bool DescriptorIsEmulatedFile(int fd); -+ bool StreamIsEmulatedFile(FILE* stream); - private: - EmuFileObject m_files[MAX_EMULATED_FILES]; - CCriticalSection m_criticalSection; -diff --git a/xbmc/cores/DllLoader/exports/wrapper.c b/xbmc/cores/DllLoader/exports/wrapper.c -index a9225e5..355da1c 100644 ---- a/xbmc/cores/DllLoader/exports/wrapper.c -+++ b/xbmc/cores/DllLoader/exports/wrapper.c -@@ -39,7 +39,7 @@ - #endif - #include <dlfcn.h> - --#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) -+#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) || !defined(GLIBC) - typedef off_t __off_t; - typedef int64_t off64_t; - typedef off64_t __off64_t; |