diff --git a/ndk/sources/android/libportable/arch-mips/open.c b/ndk/sources/android/libportable/arch-mips/open.c index 99ed7f9a4..ac306d62e 100644 --- a/ndk/sources/android/libportable/arch-mips/open.c +++ b/ndk/sources/android/libportable/arch-mips/open.c @@ -71,83 +71,34 @@ static inline int open_flags_pton(int flags) } -extern int __open(const char*, int, int); +extern int __openat(int, const char*, int, int); int WRAP(open)(const char *pathname, int flags, ...) { - mode_t mode = 0; - int native_flags; - int fd; - - ALOGV(" "); - ALOGV("%s(pathname:%p, flags:0x%x, ...) {", __func__, - pathname, flags); - - flags |= O_LARGEFILE_PORTABLE; - - if (flags & O_CREAT_PORTABLE) { - va_list args; - + mode_t mode = 0; + if ((flags & O_CREAT_PORTABLE) != 0) { + va_list args; va_start(args, flags); mode = (mode_t) va_arg(args, int); va_end(args); } + flags |= O_LARGEFILE_PORTABLE; + flags = open_flags_pton(flags); - native_flags = open_flags_pton(flags); - - fd = __open(pathname, native_flags, mode); - if (fd == -1) { - /* Can't print pathname as a string, might be bogus */ - ALOGV("%s: fd = %d = __open(pathname:%p, native_flags:0x%x, mode:0x%x);", __func__, - fd, pathname, native_flags, mode); - } else { - if (flags & O_CLOEXEC) { - filefd_CLOEXEC_enabled(fd); - } else { - filefd_CLOEXEC_disabled(fd); - } - } - ALOGV("%s: return(fd:%d); }", __func__, fd); - return fd; + return __openat(AT_FDCWD, pathname, flags, mode); } - -extern int __openat(int, const char*, int, int); - int WRAP(openat)(int dirfd, const char *pathname, int flags, ...) { - mode_t mode = 0; - int native_flags; - int fd; - - ALOGV(" "); - ALOGV("%s(dirfd:%d, pathname:0x%p, flags:0x%x, ...) {", __func__, - dirfd, pathname, flags); - - flags |= O_LARGEFILE_PORTABLE; - - if (flags & O_CREAT_PORTABLE) { - va_list args; - + mode_t mode = 0; + if ((flags & O_CREAT_PORTABLE) != 0) { + va_list args; va_start(args, flags); mode = (mode_t) va_arg(args, int); va_end(args); } + flags |= O_LARGEFILE_PORTABLE; + flags = open_flags_pton(flags); - native_flags = open_flags_pton(flags); - - fd = __openat(dirfd, pathname, native_flags, mode); - - if (fd == -1) { - ALOGV("%s: fd = %d = __open(pathname:0x%p, native_flags:0x%x, mode:0x%d);", __func__, - fd, pathname, native_flags, mode); - } else { - if (flags & O_CLOEXEC) { - filefd_CLOEXEC_enabled(fd); - } else { - filefd_CLOEXEC_disabled(fd); - } - } - ALOGV("%s: return(fd:%d); }", __func__, fd); - return fd; + return __openat(dirfd, pathname, flags, mode); } diff --git a/ndk/sources/android/libportable/arch-x86/fenv.c b/ndk/sources/android/libportable/arch-x86/fenv.c index adf6f3048..0f22d2f2e 100644 --- a/ndk/sources/android/libportable/arch-x86/fenv.c +++ b/ndk/sources/android/libportable/arch-x86/fenv.c @@ -141,7 +141,8 @@ WRAP(feclearexcept)(int excepts) int WRAP(fetestexcept)(int excepts) { - return REAL(fetestexcept)(x86_change_except(excepts)); + int ret = REAL(fetestexcept)(x86_change_except(excepts)); + return x86_get_except(ret); } int diff --git a/ndk/sources/android/libportable/arch-x86/open.c b/ndk/sources/android/libportable/arch-x86/open.c deleted file mode 100644 index dae578b3f..000000000 --- a/ndk/sources/android/libportable/arch-x86/open.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2012, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include - - -static inline int x86_change_flags(int flags) -{ - int x86flags = flags & O_ACCMODE_PORTABLE; - if (flags & O_CREAT_PORTABLE) - x86flags |= O_CREAT; - if (flags & O_EXCL_PORTABLE) - x86flags |= O_EXCL; - if (flags & O_NOCTTY_PORTABLE) - x86flags |= O_NOCTTY; - if (flags & O_TRUNC_PORTABLE) - x86flags |= O_TRUNC; - if (flags & O_APPEND_PORTABLE) - x86flags |= O_APPEND; - if (flags & O_NONBLOCK_PORTABLE) - x86flags |= O_NONBLOCK; - if (flags & O_SYNC_PORTABLE) - x86flags |= O_SYNC; - if (flags & FASYNC_PORTABLE) - x86flags |= FASYNC; - if (flags & O_DIRECT_PORTABLE) - x86flags |= O_DIRECT; - if (flags & O_LARGEFILE_PORTABLE) - x86flags |= O_LARGEFILE; - if (flags & O_DIRECTORY_PORTABLE) - x86flags |= O_DIRECTORY; - if (flags & O_NOFOLLOW_PORTABLE) - x86flags |= O_NOFOLLOW; - if (flags & O_NOATIME_PORTABLE) - x86flags |= O_NOATIME; - if (flags & O_NDELAY_PORTABLE) - x86flags |= O_NDELAY; - - return x86flags; -} - -extern int __open(const char*, int, int); -int WRAP(open)(const char *pathname, int flags, ...) -{ - mode_t mode = 0; - flags |= O_LARGEFILE; - - if (flags & O_CREAT) - { - va_list args; - - va_start(args, flags); - mode = (mode_t) va_arg(args, int); - va_end(args); - } - - return __open(pathname, x86_change_flags(flags), mode); -}