From: Armin Novak Date: Fri, 26 Feb 2016 11:13:02 +0000 (+0100) Subject: Added support for android SetFileTime. X-Git-Tag: 2.0.0-beta1+android10~285^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98d4a9347a700d29999e5416bba9b01137b56e49;p=platform%2Fupstream%2Ffreerdp.git Added support for android SetFileTime. Deactivated libjpeg support for android. --- diff --git a/scripts/android-build-freerdp.sh b/scripts/android-build-freerdp.sh index a522f86..73ce021 100755 --- a/scripts/android-build-freerdp.sh +++ b/scripts/android-build-freerdp.sh @@ -80,6 +80,7 @@ fi common_run mkdir -p $BUILD_SRC CMAKE_CMD_ARGS="-DANDROID_NDK=$ANDROID_NDK \ + -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \ -DCMAKE_TOOLCHAIN_FILE=$SRC_DIR/cmake/AndroidToolchain.cmake \ -DCMAKE_INSTALL_PREFIX=$BUILD_DST \ -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \ diff --git a/scripts/android-build.conf b/scripts/android-build.conf index fff1ab2..df51912 100644 --- a/scripts/android-build.conf +++ b/scripts/android-build.conf @@ -4,10 +4,11 @@ SCRIPT_PATH=$(dirname "${BASH_SOURCE[0]}") SCRIPT_PATH=$(realpath "$SCRIPT_PATH") -WITH_JPEG=1 +WITH_JPEG=0 WITH_OPENH264=1 WITH_OPENSSL=1 BUILD_DEPS=1 +ANDROID_NATIVE_API_LEVEL=android-12 JPEG_TAG=master OPENH264_TAG=v1.5.0 diff --git a/winpr/libwinpr/file/file.c b/winpr/libwinpr/file/file.c index 7e22852..606121f 100644 --- a/winpr/libwinpr/file/file.c +++ b/winpr/libwinpr/file/file.c @@ -352,22 +352,25 @@ static BOOL FileSetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime) { int rc; -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(ANDROID) struct stat buf; #endif +#ifdef ANDROID + struct timeval timevals[2]; +#else struct timespec times[2]; /* last access, last modification */ +#endif WINPR_FILE* pFile = (WINPR_FILE*)hFile; const UINT64 EPOCH_DIFF = 11644473600ULL; if (!hFile) return FALSE; -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(ANDROID) rc = fstat(fileno(pFile->fp), &buf); if (rc < 0) return FALSE; #endif - memset(times, 0, sizeof(times)); if (!lpLastAccessTime) { #ifdef __APPLE__ @@ -377,7 +380,11 @@ static BOOL FileSetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, times[0].tv_sec = buf.st_atime; times[0].tv_nsec = buf.st_atimensec; #endif +#elif ANDROID + timevals[0].tv_sec = buf.st_mtime; + timevals[0].tv_usec = buf.st_mtimensec / 1000UL; #else + times[0].tv_sec = UTIME_OMIT; times[0].tv_nsec = UTIME_OMIT; #endif } @@ -388,8 +395,15 @@ static BOOL FileSetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, tmp -= EPOCH_DIFF; tmp /= 10ULL; +#ifdef ANDROID + tmp /= 10000ULL; + + timevals[0].tv_sec = tmp / 10000ULL; + timevals[0].tv_usec = tmp % 10000ULL; +#else times[0].tv_sec = tmp / 10000000ULL; times[0].tv_nsec = tmp % 10000000ULL; +#endif } if (!lpLastWriteTime) { @@ -400,7 +414,11 @@ static BOOL FileSetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, times[1].tv_sec = buf.st_mtime; times[1].tv_nsec = buf.st_mtimensec; #endif +#elif ANDROID + timevals[1].tv_sec = buf.st_mtime; + timevals[1].tv_usec = buf.st_mtimensec / 1000UL; #else + times[1].tv_sec = UTIME_OMIT; times[1].tv_nsec = UTIME_OMIT; #endif } @@ -411,13 +429,22 @@ static BOOL FileSetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, tmp -= EPOCH_DIFF; tmp /= 10ULL; +#ifdef ANDROID + tmp /= 10000ULL; + + timevals[1].tv_sec = tmp / 10000ULL; + timevals[1].tv_usec = tmp % 10000ULL; +#else times[1].tv_sec = tmp / 10000000ULL; times[1].tv_nsec = tmp % 10000000ULL; +#endif } // TODO: Creation time can not be handled! #ifdef __APPLE__ rc = futimes(fileno(pFile->fp), times); +#elif ANDROID + rc = utimes(pFile->lpFileName, timevals); #else rc = futimens(fileno(pFile->fp), times); #endif