[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 05/49] linux-user: Tidy do_openat loop over fakes
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v6 05/49] linux-user: Tidy do_openat loop over fakes |
Date: |
Sat, 19 Jan 2019 08:30:38 +1100 |
Cleaner to use ARRAY_SIZE to loop over elements instead of
using a sentinel within the data structure.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall-file.inc.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/linux-user/syscall-file.inc.c b/linux-user/syscall-file.inc.c
index ffa70bbea8..f202a4c8f4 100644
--- a/linux-user/syscall-file.inc.c
+++ b/linux-user/syscall-file.inc.c
@@ -229,7 +229,6 @@ static abi_long do_openat(void *cpu_env, int dirfd,
abi_ulong target_path,
int (*fill)(void *cpu_env, int fd);
int (*cmp)(const char *s1, const char *s2);
};
- const struct fake_open *fake_open;
static const struct fake_open fakes[] = {
{ "maps", open_self_maps, is_proc_myself },
{ "stat", open_self_stat, is_proc_myself },
@@ -238,12 +237,12 @@ static abi_long do_openat(void *cpu_env, int dirfd,
abi_ulong target_path,
#if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN)
{ "/proc/net/route", open_net_route, is_proc },
#endif
- { NULL, NULL, NULL }
};
char *pathname = lock_user_string(target_path);
int flags = target_to_host_bitmask(target_flags, fcntl_flags_tbl);
abi_long ret;
+ size_t i;
if (!pathname) {
return -TARGET_EFAULT;
@@ -257,17 +256,16 @@ static abi_long do_openat(void *cpu_env, int dirfd,
abi_ulong target_path,
goto done;
}
- for (fake_open = fakes; fake_open->filename; fake_open++) {
- if (fake_open->cmp(pathname, fake_open->filename)) {
- break;
- }
- }
-
- if (fake_open->filename) {
+ for (i = 0; i < ARRAY_SIZE(fakes); ++i) {
+ const struct fake_open *fake_open = &fakes[i];
const char *tmpdir;
char filename[PATH_MAX];
int fd;
+ if (!fake_open->cmp(pathname, fake_open->filename)) {
+ continue;
+ }
+
/* create temporary file to map stat to */
tmpdir = getenv("TMPDIR");
if (!tmpdir) {
--
2.17.2
- [Qemu-devel] [PATCH v6 00/49] linux-user: Split do_syscall, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 05/49] linux-user: Tidy do_openat loop over fakes,
Richard Henderson <=
- [Qemu-devel] [PATCH v6 07/49] linux-user: Split out close, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 04/49] linux-user: Share more code for open and openat, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 06/49] linux-user: Split out readlink, readlinkat, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 08/49] linux-user: Split out read, write, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 03/49] linux-user: Split out open, open_at, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 09/49] linux-user: Reduce regpairs_aligned & target_offset64 ifdefs, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 01/49] linux-user: Setup split syscall infrastructure, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 10/49] linux-user: Split out readv, writev, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 11/49] linux-user: Split out pread64, pwrite64, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 12/49] linux-user: Split out preadv, pwritev, Richard Henderson, 2019/01/18