diff --git a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp index 1d5564c8c5..73c07fb586 100644 --- a/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp +++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.cpp @@ -72,6 +72,13 @@ #include "platform/win32/CharsetConverter.h" #endif +#ifndef _PATH_MOUNTED +#define _PATH_MOUNTED "/proc/mounts" +#endif +#ifndef _PATH_MNTTAB +#define _PATH_MNTTAB "/etc/fstab" +#endif + using namespace XFILE; struct SDirData @@ -124,7 +131,7 @@ extern "C" void __stdcall init_emu_environ() dll_putenv("OS=win10"); #elif defined(TARGET_DARWIN) dll_putenv("OS=darwin"); -#elif defined(TARGET_POSIX) +#elif defined(TARGET_POSIX) || !defined(__GLIBC__) dll_putenv("OS=linux"); #else dll_putenv("OS=unknown"); @@ -1480,7 +1487,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_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) *pos = (fpos_t)tmpPos; #else pos->__pos = (off_t)tmpPos.__pos; @@ -1493,8 +1500,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_POSIX) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) + uint64_t *ppos = (uint64_t *)pos; + *ppos = pFile->GetPosition(); #else pos->__pos = pFile->GetPosition(); #endif @@ -1509,8 +1517,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(TARGET_POSIX) || !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 @@ -1532,7 +1541,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_POSIX) || 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 7869dc221c..3b86d6b45b 100644 --- a/xbmc/cores/DllLoader/exports/emu_msvcrt.h +++ b/xbmc/cores/DllLoader/exports/emu_msvcrt.h @@ -17,7 +17,7 @@ #define _onexit_t void* #endif -#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) +#if !defined(__GLIBC__) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) typedef off_t __off_t; typedef int64_t off64_t; typedef off64_t __off64_t; diff --git a/xbmc/cores/DllLoader/exports/wrapper.c b/xbmc/cores/DllLoader/exports/wrapper.c index 33ab3437c1..5a68de2c64 100644 --- a/xbmc/cores/DllLoader/exports/wrapper.c +++ b/xbmc/cores/DllLoader/exports/wrapper.c @@ -23,7 +23,7 @@ #include #include -#if defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) +#if !defined(__GLIBC__) || defined(TARGET_DARWIN) || defined(TARGET_FREEBSD) || defined(TARGET_ANDROID) typedef off_t __off_t; typedef int64_t off64_t; typedef off64_t __off64_t; diff --git a/xbmc/cores/DllLoader/ldt_keeper.c b/xbmc/cores/DllLoader/ldt_keeper.c index 0e6bc81bf7..73f1346458 100644 --- a/xbmc/cores/DllLoader/ldt_keeper.c +++ b/xbmc/cores/DllLoader/ldt_keeper.c @@ -49,7 +49,7 @@ #ifdef __cplusplus extern "C" { #endif -#if defined(TARGET_ANDROID) && defined(__i386__) && !defined(modify_ldt) +#if defined(__linux__) && !defined(__GLIBC__) && !defined(modify_ldt) #define modify_ldt(a,b,c) syscall( __NR_modify_ldt, a, b, c); #else int modify_ldt(int func, void *ptr, unsigned long bytecount);